Envoyer des mails
avec ssmtp

3 août 2019

Il existe plein de situations dans lesquelles envoyer des emails depuis un serveur peut-être utile, soit parce que des applications le nécessitent, soit pour faire du monitoring, comme être averti de mises à jour de sécurité disponibles sur son système ou de la bonne exécution de tâches cron.

Pour autant, configurer un serveur mail avec postfix, exim ou sendmail nécessite un grand nombre d’étapes à réaliser et une configuration minutieuse, du fait de tous les dispositifs mis en place pour lutter contre le spam (notamment DKIM, SPF, DMARC, IP statique et Reverse DNS, inscription sur listes blanches…), ce qui rend la tâche très fastidieuse pour un simple serveur personnel.

Néanmoins, il est possible de tout simplement utiliser un compte email déjà existant, et d’envoyer les mails via SMTP comme le ferait un client mail traditionnel. Nous allons pour cela utiliser ssmtp .

Installation de SSMTP

Depuis un système basé sur Debian, on peut simplement installer le paquet avec :

sudo apt-get install ssmtp

Le fichier de configuration est le suivant :

sudo nano /etc/ssmtp/ssmtp.conf

Remplacez alors les paramètres suivants avec les identifiants et paramètres de votre fournisseur d’emails :

root=<your-email>
mailhub=<smtp-server>:<port>
hostname=<your-domain>
AuthUser=<username>
AuthPass=<password>
AuthMethod=LOGIN
UseTLS=Yes
UseSTARTTLS=Yes

Par exemple, avec Gmail :

root=<your-email>
mailhub=smtp.gmail.com:587
hostname=<your-domain>
AuthUser=<username>
AuthPass=<password>
AuthMethod=LOGIN
UseTLS=Yes
UseSTARTTLS=Yes

Ou encore, avec OVH :

root=<your-email>
mailhub=ssl0.ovh.net:587
hostname=<your-domain>
AuthUser=<username>
AuthPass=<password>
AuthMethod=LOGIN
UseTLS=Yes
UseSTARTTLS=Yes

Une fois le fichier enregistré, nous pouvons tenter d’envoyer nos premiers mails.

Tester l’envoi d’emails

Il est possible d’utiliser directement ssmtp pour envoyer votre email :

echo -e "Subject: Title\nMessage" | sudo ssmtp -vvv <email-adress>

Si vous recevez un message du style :

ssmtp: Cannot open <server>:<port>

Cela signifie que les paramètres de connexion à votre fournisseur d’emails sont incorrects, ou que le port n’est pas ouvert.

Les processus sur votre serveur enverront directement les emails à l’aide de la commande sendmail. Pour la tester, on peut utiliser :

echo "Message" | sendmail -s "Title" <email-adress>

On peut également tester que la commande mail fonctionne bien :

echo "Message" | mail -s "Title" <email-adress>

Si les deux exemples précédents ne fonctionnent pas, il peut être nécessaire de créer le lien depuis sendmail vers ssmtp :

sudo ln -s /usr/sbin/ssmtp /usr/sbin/sendmail

Changer le nom de l’expéditeur

Il est possible de définir, pour chaque utilisateur de votre serveur, un nom d’expéditeur personnalisé lors de l’envoi des mail :

sudo chfn -f 'Custom name for root' root
sudo chfn -f 'Custom name for user' <user>

Exemple d’utilisation : apticron

Si vous avez un serveur, vous devez être toujours averti des dernières mises à jour disponibles pour votre système.

Si vous utilisez un système basé sur Debian, et que vous utilisez apt pour installer ou mettre à jour vos paquets, le petit utilitaire apticron vous envoie automatiquement un mail dès qu’une mise à jour est disponible.

On l’installe avec :

sudo apt-get install apticron

Pour indiquer son adresse email, on modifie simplement :

sudo nano /etc/apticron/apticron.conf

Indiquez enfin l’adresse à laquelle vous souhaitez recevoir les notifications :

EMAIL="<your-email>"