Niveau :
Résumé : postfix ; catch all
Supposons que vous ayez une application qui envoie régulièrement des mails. Vous voulez tester cette application en conditions réelles, mais sans envoyer ces mails (par exemple un logiciel de spam :-)
Pour ne pas tout casser, nous allons juste changer la configuration du serveur utilisé pour envoyer les mails. Tous les mails, tous domaines et tous destinataires confondus seront acceptés.
Étape 1 : tout rediriger vers le compte de quelqu'un
Prenons un postfix. Ajoutons une ligne dans main.cf :
# on matche les mails qu'on va accepter avec des expression régulières virtual_alias_maps = regexp:/etc/postfix/virtual
Créons notre fichier /etc/postfix/virtual :
# on redigige tout vers quelqu'un qui va pouvoir lire les mails /@/ peck@ditoto.com
C'est bien mais on voudrait pouvoir centraliser ce serveur de test et trier les mails envoyés en fonction des serveurs d'origine (développement, recette, qualification ...).
Étape 2 : filtrer
On va donc rediriger vers un compte local créé pour l'occasion (si vous avez des comptes virtuel, il faut faire différemment, vous saurez faire) :
$ adduser genericmail
On adapte /etc/postfix/virtual et on n'oublie pas de laisser passer les destinataires finaux sous peine de boucles :
# on redirige tout vers notre filtre if !/@ditoto.com$/ /@/ genericmail endif
On relaie les mails de ces mêmes destinataires finau[xd] vers leur vrai serveur dans main.cf et on se prépare à utiliser procmail :
relay_domains = ditoto.com mailbox_command = /usr/bin/procmail -Y -a $DOMAIN
Et enfin, le plus important, nous allons filtrer avec un procmail (au passage vérifiez qu'il est installé :-p) :
# on redirige en fonction du destinataire :0 * ^TO.*@gnagna.fr.* ! peck@ditoto.com # plus important, on peut le faire en fonction de la source :0 * ^Received:.*from mamachine.dev.ditoto.com ! pock@ditoto.com # et une petite règle par défaut pour ne pas être surchargé :0 * ^.* /dev/null
La fin
Voilà, vous avez un serveur mail paramétrable qui vous permet de faire ce que vous voulez des mails qu'il reçoit, quels que soient leurs destinataires. Rien de bien compliqué, mais bien pratique en environnement de test.