Sendmail envoie impossible sur gmail

Vous allez voir comment configurer sendmail pour qu'il puisse envoyer vos e-mails sur des boites "gmail.com" ou "G Suite" sans encombre. Car je me suis rendu compte récemment qu'il était capricieux là-dessus. Notamment depuis la fonction banale mail() de PHP. Vous allez voir comment corriger cela sur une Debian8 toute fraiche.

L'erreur dans les logs

Si vous voyez dans le log suivant /var/log/mail.log des lignes qui ressemble à ceci :

Oct 04 11:16:14 hostname sm-mta[25169]: u9E9GEJv025167: to=<XXXXXXXXX@gmail.com>, ctladdr=<www-data@XXXXXXXXXX> (33/33), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120382, relay=gmail-smtp-in.l.google.com. [IPv6:2a00:XXXXXXXXX], dsn=5.0.0, stat=Service unavailable
Oct 04 11:16:14 hostname sm-mta[25169]: u9E9GEJv025167: u9E9GEJv025169: DSN: Service unavailable

Vous ne pouvez pas envoyer d'e-mail sur les boites gérées par Google... Ce qui est très gênant, mais pourquoi ? Simplement que Google n'aime pas toujours qu'on lui envoie des e-mails sur ces IPv6... Un comble tout de même.

Une solution pour résoudre l'erreur de sendmail et gmail

Voici ce que vous pouvez faire pour corriger le souci, c'est relativement simple et rapide. Pour commencer éditez le fichier /etc/mail/sendmail.mc et aller à la fin du fichier pour ajouter la ligne :

CLIENT_OPTIONS(`Family=inet6,Addr=::ffff:127.0.0.1')dnl

Une fois ajouté sauvegardez votre fichier, et lancez la commande suivante pour reconfigurer sendmail, répondez oui à toutes les questions :

sendmailconfig

Sendmail va être rechargé à la fin du script. Il ne reste donc plus cas tester avec un bout de code PHP par exemple tel que :

<?php mail('XXXXX@gmail.com','test', 'test sendmail for gmail'); ?>

Conclusion

Petite manipulation qui est simple et qui va surement vous sauver la mise si vous avez eu le souci et cela c'est réglé en moins de 5 min !

Crédit photo : Designed by Freepik & Designed by Freepik