Quelle est la meilleure façon d'analyser les en-têtes des e-mails renvoyés (non distribuables) qui sont renvoyés à mon serveur et de déterminer s'il s'agit d'un rebond logiciel ou dur?
J'envoie uniquement des e-mails d'adhésion à mes utilisateurs, mais parfois certaines adresses e-mail deviennent obsolètes. Lorsqu'un e-mail rebondit sur mon serveur, je voudrais savoir pourquoi il a rebondi (doux / dur). Ensuite, je peux le traiter de manière appropriée dans ma base de données et / ou signaler à l'utilisateur de mettre à jour son e-mail lors de la prochaine connexion.
J'utilise Ubuntu et Postfix. J'ai réussi à implémenter VERP avec des alias et des alias virtuels. Les e-mails renvoyés ont donc un chemin de retour de [email protected] , et je peux les diriger vers un script.
Maintenant que j'ai la configuration VERP, je sais à qui l'e-mail d'origine a été envoyé, mais je dois analyser les en-têtes de courrier retournés pour déterminer s'il s'agit d'un rebond doux ou d'un rebond dur.
Quelle est la meilleure façon de gérer cela? Si je comprends bien, tous les serveurs de messagerie ne respectent pas les mêmes règles, et les en-têtes peuvent avoir une variété de formats. Existe-t-il un projet open source qui assure le suivi de ce type de choses? Quelque chose de simple que je peux implémenter qui catégorisera correctement la majorité des rebonds?
J'essaie de protéger la réputation de mon serveur de messagerie, donc toute aide est très appréciée!
la source
grep " dsn=5." /var/log/mail.log | pcregrep -o1 " to=<(.+?)>" | sort | uniq -c
Il existe généralement deux types de rebonds
Le premier cas a déjà été couvert par l' excellente réponse d'Esa Jokinen ci-dessus. Votre meilleur pari est d'analyser maillog.
Le deuxième cas était un cas spécial de rebonds. Le scénario d'exemple:
Voici l'exemple du deuxième type de courrier électronique rebondit. Il existe une règle de transfert du serveur de messagerie Yahoo [email protected] -> [email protected] . Malheureusement, le serveur de messagerie d'exemple.net rejette le message :(
Dans ce cas, votre seule méthode consiste à analyser le message de rebonds. Malheureusement, il n'y a pas de format de rebond standard, vous devez donc analyser le corps et déterminer le rejet causé.
La liste de contrôle des fonctionnalités de votre analyse de rebond postfix:
Pour la deuxième fonctionnalité, vous pouvez rechercher sur Google un message de rejet commun. L'exemple est ce bounce-regex-list.xml de Jakub Liska .
Esa Jokinen a fait un bon point dans le commentaire ci-dessous à propos de ces deux types de rebond. Si votre objectif est de conserver la réputation du serveur, le traitement du premier type de rebond devrait suffire. Le deuxième rebond concernait le nettoyage de vos listes. Les e-mails morts doivent donc être effacés, libérant ainsi des ressources sur votre serveur.
Certains gestionnaires de listes de diffusion tels que PHPlist et Mailman traitent également ce problème de rebond avec l'analyse du corps de l'e-mail car ils n'ont pas de ressources pour analyser le maillog.
la source