Configuration SPF

Nous avons observé des délais dans la transmission des emails sur notre Google Apps.
Gmail nous a envoyé quelques messages de ce type pour nous prévenir du problème :

This is an automatically generated Delivery Status Notification
 THIS IS A WARNING MESSAGE ONLY.
 YOU DO NOT NEED TO RESEND YOUR MESSAGE.
 Delivery to the following recipient has been delayed:
 charles@fitnext.com
 Message will be retried for 1 more day(s)
 Technical details of temporary failure:
 DNS Error: 92610055 DNS type 'mx' lookup of fitnext.com responded with code SERVFAIL

Nous n’avons pas changé récemment quoi que ce soit dans la configuration DNS/MX, donc c’était assez étrange de retrouver subitement ce problème.

Vérification de la configuration MX

Google propose un outil très pratique pour vérifier votre configuration MX, la nôtre n’était pas au top sur tous les points. L’aide en ligne Google explique clairement comment valider chaque point.

L’outil propose une analyse de ce type :

Capture d’écran 2016-06-14 à 09.50.05

J’ai appliqué les différents conseils proposés par Google et tout semble rentré dans l’ordre!

Je suis aussi tombé sur cette page qui permet vérifier les entrées SPF d’un domaine.

Vérification des en-tête des messages

Aussi Google propose un outil d’analyse d’en-tête de message qui produit une sortie du  type :

email-headers-checking-tool

On voit bien notre problème avec la livraison d’un message après 18h…

 

Postfix: envoyer des emails à travers un tunnel ssh

postfix-ssh

 

Dans le cadre de la création d’emails de reporting, je dois envoyer des emails en local pour mes tests.

Ma machine de développement est un mac. J’ai toujours eu des problèmes pour envoyer des mails en local, donc une des solutions est d’envoyer les emails via un serveur qui est déjà correctement configuré.

Pour cela, on peut tout simplement utiliser un tunnel ssh et configurer postfix pour passer par ce tunnel pour envoyer les emails.

Configuration du tunnel

Pour créer le tunnel, utiliser la commande suivante avec monserveur.com correspondant à votre machine de relais :

$ ssh -f -o ServerAliveInterval=10 -L 54321:localhost:25 monserveur.com sleep 31622400

 

Configuration de postfix

Pour router tous les emails arrivant dans postfix vers votre relais, configurer le fichier transport, généralement /etc/postfix/transport en ajoutant la ligne suivante :

*             smtp:[127.0.0.1]:54321

Pour les détails sur la configuration de ce fichier, se reporter à la page man correspondante.

Ici, avec l’astérisque, on indique que tous les emails passeront via la passerelle 127.0.0.1 sur le port 54321 correspondant au point d’entrée de notre tunnel vers notre relais.

Enfin dans la configuration principale de postfix, /etc/postfix/main.cf il faut indiquer que l’on a un fichier de configuration de mapping pour la distribution des emails :

transport_maps = hash:/etc/postfix/transport

 

Pour prendre en compte la nouvelle configuration, sous osx :

$ sudo postmap /etc/postfix/transport
$ sudo launchctl stop org.postfix.master
$ sudo launchctl start org.postfix.master

Lors de l’émission d’un email en local, on peut observer la livraison via notre tunnel dans les logs (/var/log/mail.log) :

Feb 11 12:10:42 MacBook-Pro-de-Charles-ADG-2.local postfix/pickup[60932]: A8A7025D17CE: uid=502 from=<charles>
Feb 11 12:10:42 MacBook-Pro-de-Charles-ADG-2.local postfix/cleanup[60934]: A8A7025D17CE: message-id=<20160211111042.A8A7025D17CE@fitnext.com>
Feb 11 12:10:42 MacBook-Pro-de-Charles-ADG-2.local postfix/qmgr[60933]: A8A7025D17CE: from=<charles@fitnext.com>, size=304, nrcpt=1 (queue active)
Feb 11 12:10:42 MacBook-Pro-de-Charles-ADG-2.local postfix/smtp[60936]: A8A7025D17CE: to=<charles@fitnext.com>, relay=127.0.0.1[127.0.0.1]:54321, delay=0.78, delays=0.7/0.02/0.02/0.04, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as B75763701063)
Feb 11 12:10:42 MacBook-Pro-de-Charles-ADG-2.local postfix/qmgr[60933]: A8A7025D17CE: removed

 

Et dans les logs de notre relais :

Feb 11 12:10:42 localhost postfix/smtpd[43921]: connect from localhost[127.0.0.1]
Feb 11 12:10:42 localhost postfix/smtpd[43921]: B75763701063: client=localhost[127.0.0.1]
Feb 11 12:10:42 localhost postfix/cleanup[43924]: B75763701063: message-id=<20160211111042.A8A7025D17CE@fitnext.com>
Feb 11 12:10:42 localhost postfix/smtpd[43921]: disconnect from localhost[127.0.0.1]
Feb 11 12:10:42 localhost postfix/qmgr[1673]: B75763701063: from=<charles@fitnext.com>, size=484, nrcpt=1 (queue active)
Feb 11 12:10:44 localhost postfix/smtp[43925]: B75763701063: to=<charles@fitnext.com>, relay=aspmx.l.google.com[64.233.184.27]:25, delay=1.4, delays=0.03/0/1.2/0.2, dsn=2.0.0, status=sent (250 2.0.0 OK 1455189044 wg3si11321364wjb.162 - gsmtp)
Feb 11 12:10:44 localhost postfix/qmgr[1673]: B75763701063: removed