12.02.2008 Envoyer des emails avec Gmail via PHP et msmtp (Ubuntu)

Vieux. Ce billet a plus d'un an. S'il contient des informations techniques elles sont peut être obsolètes.

Je suis en train de migrer petit à petit MarcArea.com sur un serveur virtualisé chez Gandi. La prestation de Lost Oasis, mon hébergeur actuel, est et a toujours été excellente à mon goût. C'est juste parce que le virtualisé via XEN c'est trop hype.

Ca y est, le site tourne en test, ça a l'air de marcher pas mal. Je réfléchi encore à la façon de gérer mes emails et dès que j'aurai pris une décision, je ferai pointer les DNS de marcarea.com vers mon serveur. J'ai pas envie de gérer un serveur de mail en fait. Ca me fait un peu chier de foutre un Postfix ou un Sendmail et de devoir le gérer après, je connais pas et j'ai pas le temps de me plonger là dedans.

Pourtant j'ai besoin d'envoyer des mails via PHP (avez-vous noté l'excellente transition ?) depuis mon serveur sous Ubuntu. Après quelques recherches j'ai trouvé une solution simple qui convient à mes besoins : utiliser un client SMTP léger et faire envoyer les mails par Gmail. J'ai choisi msmtp suite à plusieurs tentatives infructueuses avec esmtp.

Mémo pour envoyer des emails avec la fonction mail() de PHP via Gmail sous Ubuntu :

Installer msmtp :

apt-get install msmtp

Créer un fichier de conf pour msmtp :

cd /var/www/apache2-default
vi .msmtprc

Editer la conf de msmtp :

defaults

# log to specified file
# (choose something that apache can write to)
logfile /tmp/gmail.log

# and not with syslog
# (apache will probabaly not have the right to write there)
syslog off

# dsn
dsn_notify off
dsn_return off

# account gmail
account gmail
host smtp.gmail.com
protocol smtp
auth on
user email@gmail.com
password your_password
tls on
tls_starttls off
tls_certcheck off
from email@gmail.com
maildomain gmail.com

# Set a default Account
account default : gmail

S'assurer que seul l'utilisateur Apache a les droits sur la conf :

chown www-data:www-data .msmtprc
chmod 600 .msmtprc

Modifier sendmail_path dans php.ini en lui indiquant quel fichier de conf utiliser :

sendmail_path =
"/usr/bin/msmtp -t -C /var/www/apache2-default/.msmtprc"

Les ressources qui m'ont aidé pour trouver cette solution :

Ça marche, tout simplement, merci !

18.02.08 21:54

Merci, cela fonctionne à merveille ! Simple et efficace

22.02.08 09:10

Vous êtes sur le blog personnel de Marc Hertzog. Les opinions exprimées sont uniquement celles de son auteur.