janvier 2011

Monthly Archive

SMTP sortant : faire un trou noir avec Postfix

17 Jan 2011 | : unix

Quand on gère un serveur SMTP sortant, il peut arriver que l'on souhaite filtrer totalement les messages émis à destination d'un domaine, tout en donnant l'impression à l'émetteur que le message est bien parti. C'est le cas par exemple quand une plate-forme de test souhaite émettre de nombreux messages pour tester ses capacités d'envoi.

Après avoir essayé différentes approches, la plus élégante à mes yeux est l'utilisation de transport_maps, qui permet de spécifier des relais particuliers en fonction de la destination.

Déclarons tout d'abord un tel fichier dans le main.cf de Postfix :

transport_maps = dbm:/etc/postfix/trounoir_map

Notez ici que l'utilisation de dbm est un choix de portabilité, j'ai déjà eu à faire ce type d'opération sur des versions de Postfix compilées sans pcre, par exemple.

Le fichier en question peut contenir des lignes du type :

exemple.fr     discard:silently

Puisque j'ai spécifié un type dbm, il faut générer les maps à partir du fichier texte :

# postmap -c /etc/postfix /etc/postfix/trounoir_map

Il ne reste plus qu'à redémarrer postfix, et les messages à destination du domaine exemple.fr génèreront des entrées de ce type (notez le discard au début de la ligne et le silently à la fin) :

postfix/discard[3923]: [ID 197553 mail.info] 8E816F5D: to=, relay=none, delay=13, delays=13/0/0/0, dsn=2.0.0, status=sent (silently)