Installer un relais pour vos mails

passage-relais.jpg

Un petit billet pour vous montrer comment installer un relais pour vos mails avec authentification..
J'utilise ce genre de chose sur les serveurs dédiés , par exemple un dédié chez 1&1 , votre application web doit envoyer des mails pour une raison X ou Y , vous avez beau faire ce que vous voulez , ( belles entêtes , structures propres et aux normes , config dns pour déclarer votre serveur comme expéditeur , signature dkim ect ... ) certaines boites ne laisserons pas passer ...
Et ... quel boulot .

En utilisant les serveurs SMTP de votre prestataire , cela vous rendra la tâche déjà bien plus simple et rapide .
Seule la structure du mail devra évidemment être parfaite .. du coté serveur ... rien à gérer .. ouf !

Allons y ..

Ressources : postfix sasl

Installation

Nous allons installer le minimum requis pour notre relais , à savoir postfix et ses paquets liés pour sasl

apt-get postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util

Vous voilà avec un serveur smtp .. chouette , vous pouvez expédier des mails directement ( serveur SMTP : 127.0.0.1 ) .. c'est bien , mais encore insuffisant pour ce que nous souhaitons faire.

Configuration :

La configuration se passe principalement dans le fichier main.cf .
Commençons donc par l'éditer :

vim /etc/postfix/main.cf

Nous allons modifier / ajouter les lignes suivantes :

relayhost = auth.smtp.1and1.fr

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

Bon voilà vous l'avez deviné , pour l'exemple , j'utilise les serveurs SMTP de 1and1 , défini donc au niveau de la ligne relayhost.

relayhost

La machine par défaut où livrer le courrier extérieur .
Si aucun relayhost n'est renseigné, le courrier est routé directement vers sa destination finale (champs MX).

smtp_sasl_auth_enable

Active l'authentification SASL dans le client SMTP de Postfix. Par défaut, le client SMTP de Postfix n'utilise pas d'authentification.

smtp_sasl_password_maps

Tables optionnelles de consultation du client SMTP contenant une entrée username:password par nom de machine ou domaine distant.

smtp_sasl_security_options

Options de sécurité SASL



Il est temps maintenant de s'occuper du couple login/pwd , chez 1and1 , il vous faut simplement creer un compte mail , le login sera donc votre adresse , et le mot de passe celui defini à la création du compte.
Pour définir ces paramètres , vous avez certainement remarqué que postfix fait appel à une table de hash hash:/etc/postfix/sasl/sasl_passwd , commençons donc par créer ce fichier.

vim /etc/postfix/sasl/sasl_passwd

A l'intérieur de ce fichier , il vous faut écrire la ligne comme ceci :

nom_du_serveur    login:motdepasse

Ensuite créons cette table de hashage , via postmap

postmap /etc/postfix/sasl/sasl_passwd

Nous voilà à la fin de notre configuration de notre serveur mail en relais pour nos applications , il reste la dernière étape , relancer postfix et vérifier les logs .

/etc/init.d/postfix restart

Pour les logs :

tail -f /var/log/mail.log

Tests

Pour les tests, un simple appel à la fonction php mail() , va envoyer le mail à postfix qui lui va demander au serveur de votre prestataire de le relayer , et ce de façon officiel ( si le mail est correct il sera reçu partout , même dans les boites hotmail et yahoo :) )

Sep  6 22:09:11 s15407375 postfix/pickup[29187]: 10E2F401A53: uid=33 from=<www-data>
Sep  6 22:09:11 s15407375 postfix/cleanup[29308]: 10E2F401A53: message-id=<20100906200911.10E2F401A53@s15407375.onlinehome-server.info>
Sep  6 22:09:11 s15407375 postfix/qmgr[23225]: 10E2F401A53: from=<www-data@s15407375.onlinehome-server.info>, size=410, nrcpt=1 (queue active)
Sep  6 22:09:12 s15407375 postfix/smtp[29310]: 10E2F401A53: to=<monadresse@mondomaine.fr>, relay=auth.smtp.1and1.fr[212.227.15.184]:25, delay=1.1, 
delays=0.09/0.01/0.06/0.97, dsn=2.0.0, status=sent (250 Message 0LlpLM-1OJeIZ1ir2-00ZaNS accepted by mrbap1.kundenserver.de)
Sep  6 22:09:12 s15407375 postfix/qmgr[23225]: 10E2F401A53: removed

Good Job .

J'espère que ce billet vous a intéressé , à bientôt ,
Christophe.