SSMTP : envoyer des emails simplement depuis Linux

cli 12 mai 2016

Sur certaines machines il est utile de pouvoir envoyer des emails de rapports, via script, cron, à la main etc. Je trouve qu’utiliser SSMTP est simple et rapide quand on souhaite utiliser pour ça un prestataire externe : envoyer un email depuis le serveur A via une boîte mail Openmailbox.org par exemple.

J’ai en effet un compte [email protected] qui ne me sert qu’à ça. Bien pratique et gratuit (mais leur faire un don est toujours utile et sympa).

Le but sera ici d’installer SSMTP, de le configurer afin d’utiliser un compte @opmb.org, de passer outre la restriction d’envoi de mail depuis “root/user” et de tester tout ça. Je suis sur Debian 8, fresh install.

 

Installation

Il faut On peut commencer par retirer le serveur de mail de Debian : exim

sudo dpkg -r exim4
sudo dpkg --purge exim4

On installe ensuite SSMTP

sudo apt-get install ssmtp

Linux utilise sendmail pour envoyer un email. On va véfifier que c’est bien SSMTP qui fait appel à lui

ls -la /usr/sbin/sendmail

Et si vous voyez quelque chose dans ce genre c'est que c'est bon
lrwxrwxrwx 1 root root 5 Jul 14  2014 /usr/sbin/sendmail -> ssmtp

 

Configuration

Voici un exemple de configuration avec Openmailbox.org. Libre à vous d’utiliser un autre prestataire d’emails, pensez bien à modifier dans ce cas le serveur smtp et le port SSL/TLS de ce dernier.

Le plus simple pour le configurer est de partir de 0. Pour ça on copie sa configuration initiale et on supprime l’originale

sudo cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.BACK
sudo rm /etc/ssmtp/ssmtp.conf

Puis on recrée le fichier de conf

sudo nano /etc/ssmtp/ssmtp.conf

Et on y ajoute “notre” configuration

# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
[email protected]

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.openmailbox.org:587

# Where will the mail seem to come from?
rewriteDomain=openmailbox.org

# The full hostname
hostname=localhost

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
[email protected]
AuthPass=mot_de_passe_compliqué

# Email 'From header's can override the default domain?
FromLineOverride=yes

 

Passer outre l’erreur Sender address rejected: not owned by user [email protected]

Par défaut l’email est envoyé avec une adresse reprenant le nom d’utilisateur @localhost. Si vous ou votre script/logiciel veut envoyer un email l’utilisateur sera lors “root” ou encore “Aerya” ou “Logwatch” etc. Car outre les classiques comptes root/user il arrive, et c’est mieux, qu’on fasse tourner certains services sur un user dédié.

 

Et le domaine sera soit celui rattaché à votre serveur, soit son IP soit… le domaine du prestataire d’email.

C’est en effet comme ça que j’ai paramétré SSMTP plus haut :

# Where will the mail seem to come from?
rewriteDomain=openmailbox.org

Si vous ne voulez pas vous pouvez juste commenter la ligne rewriteDomain= (en mettant # devant).

Ce n’est ni une arnaque ni un spoofing c’est juste que c’est plus propre d’envoyer un email depuis un domaine que d’une IP. Car tout le monde n’a pas de domaine ou sous-domaine rattaché à son serveur. Si c’est votre cas, bien entendu ajustez le rewriteDomain en conséquence.

Bref, en l’occurrence Openmailbox.org détecte que l’email est envoyé par mon User sur le serveur et non pas par [email protected] et rejette donc logiquement l’email. Il faut indiquer à sendmail que les 2 utilisateurs sont les mêmes en éditant (ou créant) un aliase pour l’utilisateur local :

sudo nano /etc/ssmtp/revaliases

 Et on ajoute autant de ligne que d’utilisateur devant envoyer un email

# sSMTP aliases
#
# Format:       local_account:outgoing_address:mailhub
#
# Example: root:[email protected]:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:[email protected]:smtp.openmailbox.org:587
user1:[email protected]:smtp.openmailbox.org:587
user2:[email protected]:smtp.openmailbox.org:587

 

Vérification

On peut tout simplement vérifier que tout est correctement configuré en s’envoyant un email avec cette commande : echo  contenu de l'email | mail -s "sujet" destinataire

echo Contenu_Test | mail -s "Ceci est un test" [email protected]

 

Et voilou. Simple et rapide.

 

 

 

Mots clés