Christophe Jacquet

Envoyer des e-mails sans installer de MTA

Soit un serveur Unix (disons Linux Debian), depuis lequel on désire envoyer des e-mails, par exemple depuis PHP, ou depuis des cronjobs de maintenance. Mais on n’a pas envie d’installer un MTA, genre Sendmail, Postfix ou Exim, pour diverses raisons (ne pas ouvrir de brèche de sécurité potentielle, ne pas charger la machine « pour rien »).

Il existe quelques solutions de clients SMTP, chargés d’envoyer des e-mails de façon ponctuelle via un relais SMTP, sans pour autant être des MTA en bonne et due forme (donc pas de serveur, pas de file d’attente asynchrone, mais plutôt un envoi synchrone de messages au coup par coup). Parmi eux, msmtp possède un paquet Debian. Voici comment procéder…

Installer msmtp

Après avoir installé le package Debian, il suffit de configurer le fichier /etc/msmtprc :

account default

host *smtp.example.com*

auto_from off
from *user@example.com*    # adresse d'expédition

syslog LOG_MAIL

Ceci suppose qu’un serveur smtp.example.com, un relais SMTP, soit accessible depuis la machine en question… Si votre machine se trouve chez un hébergeur, cela peut être un serveur SMTP mis à disposition par cet hébergeur. Or, tous les hébergeurs ne proposent pas de relais SMTP. D’où la solution suivante…

Passer par Google pour le relais SMTP

Il faut pour cela avoir un compte GMail, et l’utiliser pour l’authentification SMTP. On modifie le fichier /etc/msmtprc de la façon suivante :

host smtp.gmail.com
port 587

auth on
user *nom\_utilisateur*
password *mot de passe*

À ce stade, on doit pouvoir tester le bon déroulement des opérations avec la commande

msmtp -S

On peut même envoyer des messages avec

msmtp -s "Sujet" destinataire@example.com

Mais il manque un moyen pratique de composer des messages et de leur associer des pièces jointes. Pour cela, nous allons installer le MUA Mutt, qui peut être invoqué entièrement en ligne de commande depuis un script.

Mutt pour la composition des messages

Mutt a besoin d’un MTA pour fonctionner. Par défaut, Debian proposera d’installer Exim, ce qui ruinerait les efforts déployés jusqu’ici… L’astuce consiste à installer avant Mutt un paquet appelé msmtp-mta, qui propose au système de paquets de debian de considérer msmtp comme le MTA du système. Ce paquet installe par ailleurs une commande /usr/sbin/sendmail qui invoque msmtp.

Après avoir installé ce paquet, on peut passer à Mutt. Pour l’usage évoqué ici, il n’est même pas besoin de configurer Mutt : on n’utilisera pas son interface curses, et Mutt trouvera le moyen d’envoyer des e-mails via la commande sendmail installée précédemment, et qui correspond à sa configuration par défaut. Notons que les autres programmes, par exemple PHP, seront aussi capables d’utiliser msmtp par ce biais, sans qu’il n’y ait rien à faire.

On peut alors très simplement émettre des e-mails depuis des scripts, avec une commande du type :

mutt -a fichier_joint -s "Sujet du message" -c cc@example.com destinataire@example.com
HTML5 valide ? © . ✍ Contact. Mentions légales.