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