D’un côté il y a les développeurs ou les tests automatisés qui envoient des mails à des clients à ne pas solliciter et de l’autre des développeurs et des tests automatisés qui ont besoin de tester et de s’assurer que la fonctionnalité d’envoi de mail fonctionne correctement. Et au sommet de tout ça, les administrateurs de la plateforme qui veulent toujours recevoir les mails provenant de la machine comme les cron ou les rapports de logwatch / apticron.

La configuration suivante permet de configurer postfix pour gérer toutes ces problématiques. Postfix va bloquer tout envoi de mails comme un trou noir (black hole). Mais au lieu de simplement supprimer les mails après les avoir accepté, ils sont capturés et réexpédiés avec la copie carbone invisible (blind carbon copy) vers une adresse mail spécifique, tout en préservant le champ « à » (« TO Address ») intact. Postfix va aussi distribuer les mails spécifiques aux administrateurs directement et ne pas perturber la réception de rapports de la machine quels qu’ils soient.

Ajouter les lignes suivantes à la fin du fichier master.cf pour créer un service chargé de supprimer les mails
vim /etc/postfix/master.cf
discard unix - n n - - pipe
user=nobody argv=/bin/cat /dev/null

Ajouter les lignes suivantes dans le fichier main.cf
vim /etc/postfix/main.cf
# Configuration des adresses BCC à utiliser pour les développeurs
recipient_bcc_maps = regexp:/etc/postfix/recipient_bcc
# Configuration du routage des mails en fonction de la destination
transport_maps = regexp:/etc/postfix/transport
# Tous les domaines sont des domaines virtuels pour ce serveur postfix
virtual_alias_domains =

Créer le fichier recipient_bcc
vim /etc/postfix/recipient_bcc
# Envoyer tous les mails vers cette adresse en BCC
/^(.*)/ les_developpeurs@domaine.tld

Créer le fichier transport
vim /etc/postfix/transport
#Routage de l'adresse des développeurs et des administrateurs directement vers le relay smtp de votre entreprise / service / FAI
/les_developpeurs@domaine.tld/ smtp:smtp.domaine.tld
/les_administrateurs@domaine.tld/ smtp:smtp.domaine.tld
#Routage des messages locaux en local
/.*localdomain$/ local:
#Routage de toutes les autres destinations vers notre trou noir
/.*/ discard:

Recharger la configuration postfix
service postfix reload

Tester la configuration en envoyant un mail en ligne de commande
echo test | mail -s "TEST" billybobbyjoe@mon-client.com

Vérifier que les développeurs l'ont reçu et qu'au niveau des logs vous obtenez un résultat similaire à celui-ci
less /var/log/mail.log
Dec 29 11:31:51 si-was01n-itg postfix/master[908]: reload -- version 2.11.3, configuration /etc/postfix
Dec 29 11:31:59 si-was01n-itg postfix/pickup[24236]: A47AA5F8C1: uid=0 from=
Dec 29 11:31:59 si-was01n-itg postfix/cleanup[24242]: A47AA5F8C1: message-id=<20151229103159.A47AA5F8C1@mon-portail.domaine.tld>
Dec 29 11:31:59 si-was01n-itg postfix/qmgr[24234]: A47AA5F8C1: from=, size=333, nrcpt=2 (queue active)
Dec 29 11:31:59 si-was01n-itg postfix/pipe[24245]: A47AA5F8C1: to=, relay=discard, delay=0.02, delays=0.01/0/0/0, dsn=2.0.0, status=sent (delivered via discard service)
Dec 29 11:31:59 si-was01n-itg postfix/smtp[24244]: A47AA5F8C1: to=, relay=smtp.domaine.tld[1.2.3.4]:25, delay=0.04, delays=0.01/0.01/0.01/0.01, dsn=2.0.0, status=sent (250 OK id=1aDrZP-0003wS-Mc)
Dec 29 11:31:59 si-was01n-itg postfix/qmgr[24234]: A47AA5F8C1: removed

Vous pouvez maintenant prendre un café !

Enjoy…

Annexes / Sources / Idées