web-dev-qa-db-fra.com

Comment collecter des rebonds dans Postfix

Ceci est lié à cette question:

Linux - façons d'obtenir un rapport Bounceback pour ma demande d'information? - Défaut du serveur

Disons que je crée des adresses électroniques comme celle-ci lorsque j'envoie des bulletins d'information pour identifier les rebonds et les désabonner de ma newsletter: [email protected]

Je suppose que j'utiliserais cela dans le chemin de retour, non?

Ensuite, comment puis-je le configurer dans Postfix pour collecter toutes ces adresses préfixées avec "Bounce-" dans une boîte aux lettres?

Enfin, j'ai entendu des gens mentionnent un bond doux contre un rebond dur. Quelqu'un peut-il expliquer les différents et comment ils doivent être comptés pour savoir quand supprimer définitivement quelqu'un d'une lettre d'information par courrier électronique?

15
Brian Armstrong

La réponse exacte à votre question (gérer le [email protected] Adresse) dépend de la configuration de votre serveur pour recevoir le courrier. Si example.com Est-ce que le domaine virtuel est le meilleur que vous puissiez faire est de collecter les messages dans l'[email protected] boîte aux lettres (en supposant recipient_delimiter = -).

Si example.com est le domaine livré localement pour le serveur (courrier est livré à des comptes système réels), vous pouvez ajouter un .forward Fichier au répertoire de base de l'utilisateur bounce, qui fournit un programme qui analyse les informations de rebond et les enregistre dans une base de données ou un fichier. Voir man local Pour plus d'informations sur le .forward format et comment livrer à un programme.

Ce que nous faisons, puisque nous envoyons des messages pour un grand nombre de domaines, est utilisé bounces.example.com comme notre domaine VERP. Ce domaine doit être ajouté à relay_domains. Créer /etc/postfix/transport_maps Avec ce contenu:

bounces.example.com             bulkbounce:

Puis appendez une ligne similaire à celle-ci à /etc/postfix/master.cf:

[.____

Les bounce_handler.py Script accepte l'adresse VERP comme option de ligne de commande, analysez-la et apporte les mises à jour de la base de données nécessaires pour enregistrer le rebond.

17
Insyte

En réalité, la réponse de Instyle est très difficile à mettre en œuvre si vous souhaitez prendre en charge de nombreux domaines différents et c'est faux parce que:

a) avec son exemple de transport_maps, tous les courriels envoyés à ce domaine sont envoyés à ce service spécifique sans tenir compte de savoir si les courriels sont des courriels rebondés ou non. Comme il utilise un nom de domaine spécifique, il ne devrait en effet être que des courriels seulement ... mais cela ne peut être garanti de cette façon.

b) Les données envoyées à votre script sont l'email lui-même et non le message de rebond. En d'autres termes, votre code n'a peut-être aucune idée de la raison pour laquelle le courriel a été rebondi (c'est-à-dire que le rebond local vous enverra uniquement l'email d'origine.)


La bonne façon de faire cette configuration dans Postfix est d'utiliser la classe de notification de rebond.

1) dans / etc/postfix/main.cf

notify_classes = bounce
bounce_notice_recipient = [email protected]
transport_maps = hash:/etc/postfix/transport_maps

2) dans / etc/postfix/transport_maps

# when you make changes to this file, run:
#   Sudo postmap /etc/postfix/transport_maps
[email protected] bulkbounce:

Comme vous pouvez le constater, nous disons maintenant Postfix d'utiliser [email protected] Chaque fois qu'un email se fait rebondir. Puis dans la carte de transport, pour utiliser bulkbounce comme service pour gérer toute adresse électronique à [email protected].

Enfin, vous pouvez définir bulkbounce avec votre script:

3) dans / etc/postfix/master.cf

bulkbounce unix -       n       n       -       -       pipe
  flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}

Ce script nécessite que vous ayez un utilisateur. nobody est un bon choix aussi. Si vous souhaitez avoir un utilisateur spécifique, vous pouvez le créer avec:

useradd bounce

Sans le script dans master.cf, les courriels sont envoyés au compte Bulkbounc. Donc, si vous avez un script qui analyse des courriels à partir de fichiers, cela fonctionnerait sans le transport_maps et master.cf changements.


D'un commentaire ci-dessous:

fYI - RE: Double rebonds ...
[.____] Si vous modifiez l'adresse de retour (adresse VERP telle que [email protected], vous voudrez alors commenter la ligne dans main.cf pour le bounce_notice_recipient, si vous êtes intéressé à l'analyse de la +id Never que dans votre script.

11
Alexis Wilke

La plupart des logiciels de liste de diffusion moderne sait déjà comment gérer les messages VERP si le MTA est correctement configuré pour les transmettre au logiciel de la liste de diffusion. Dans le cas de GNU Mailman Vous devriez vérifier la page [~ # ~ # ~] [~ # ~ ~] page bien nommée "Comment utiliser VERP avec A - Délimiter (Postfix destinataire_delimiteur)? ".

Si vous faites votre propre logiciel de newsletter personnalisé pour gérer cela, vous devez vous demander pourquoi vous réinventez la roue au lieu d'utiliser des applications existantes pouvant gérer la tâche simplement et facilement pour vous déjà.

1
Jeremy Bouse