Publié le: 2013-05-25

Relay and route mails

Postfix est un très bon relai SMTP. Dans cet article nous étudierons la possibilité de relayer des mails vers l’extérieur mais également de relayer des mails vers un serveur de mails interne (autre postfix, Zimbra, Exchange…).

Relai vers un domaine précis

Le relai peut permettre de contacter un SMTP précis pour un ou plusieurs domaines. Cette fonction est utile afin d’utiliser postfix en SMTP de bordure et de cacher votre serveur de mails.

Pour utiliser cette fonction on doit déclarer un ensemble de domaines à relayer et une transport_map (fichier de définition des correspondances domaines/relai). Ajoutez les lignes suivantes dans le fichier main.cf

relay_domains = mydomain.com
transport_maps = hash:/etc/postfix/transport

Ensuite ouvrez/créez le fichier /etc/postfix/transport et ajoutez la correspondance. Note: si vous voulez mettre un ensemble de sous domaines vous pouvez utiliser la seconde ligne de configuration.

mydomain.com smtp:mylocalsmtp
.lan.mydomain.com smtp:mylocalsmtp.lan

Pour finir lancez la commande postalias afin de générer le fichier .db puis rechargez postfix

postmap /etc/postfix/transport
service postfix reload

Relai externe

Nous allons ici configurer un SMTP de relai pour l’envoi de messages. Cette configuration est généralement utilisée si vous possédez une ligne ADSL/SDSL professionelle chez un FAI et que celui-ci n’autorise pas l’utilisation d’autres SMTP

Pour résoudre ce problème, il convient de spécifier un relai SMTP. La directive relayhost permettra de pallier à ce soucis. Si vous dépendez de machin.com, votre FAI:

relayhost = example.com

Vous pouvez également préciser un serveur SMTP précis, sans utiliser la résolution des MX:

relayhost = [smtp.example.com]:25

Si vous devez utiliser un SMTP en failover, utilisez la directive suivante:

fallback_relay = [fallbacksmtp.example.com]:25

Dans le cas où le SMTP en amont nécessite une authentification (SMTP orange par exemple), il faudra utiliser SASL (activez le lors de la compilation sous FreeBSD). Tout d’abord entrez les lignes suivantes dans le fichier main.cf

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

Ces lignes auront pour effet de créer une base SASL d’authentification sur le client SMTP (MTA) Cela va également désactiver l’authentification anonyme. Ouvrez/créez maintenant le fichier sasl_passwd et insérez les lignes suivantes:

[smtp.example.com]:25 username:password

La notation de l’hôte doit être identique au relayhost. Maintenant formatez la base SASL avec la commande

postmap /etc/postfix/sasl_passwd

Un fichier sasl_passwd.db sera créé, contenant les utilisateurs SASL.