Mes passions, le boulots, mes coups de gueule...




Raspberry Pi : sSMTP : Envoi de mails par le système

Catégories : Geek, Informatique, Raspberry Pi · par 22 Fév 2015

Lorsque l’on a besoin de recevoir des emails envoyés par le système (cron, scripts, PHP, …) il est nécessaire d’installer un « Agent de Transport de Courrier électronique » (MTA) car aucun n’est installé par défaut sur Raspbian.

Sans MTA, dans WordPress, la procédure de recouvrement du mot de passe se solde par une erreur de ce type :

Le message n'a pas pu être envoyé.
Raison possible : votre hébergeur peut avoir désactivé la fonction mail().

sSMTP-02

La commande suivante entrée dans le shell retournera également une erreur :

$ echo "Petit test de mail" | mail test@fanjoe.be
/usr/lib/sendmail: Aucun fichier ou dossier de ce type
"/home/pi/dead.letter" 8/212
. . . message not sent.

Dans notre cas, nous aurons besoin d’un MTA qui aura pour seule tâche de rediriger nos mails vers le serveur SMTP de notre provider.

Mon choix s’est porté sur sSMTP car il est très léger en mémoire et est très simple à installer.

Comme d’habitude, nous commencerons par :

$ sudo apt-get update && sudo apt-get upgrade

Puis, on va installe sSMTP :

$ sudo apt-get install ssmtp

Une fois l’opération terminée, on va configurer sSMTP :

$ sudo nano /etc/ssmtp/ssmtp.conf

Par exemple :

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
#root=postmaster
root=admin@domaine.tld

# 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.votre_provider.tld

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

# The full hostname
hostname=votre_domaine.tld

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

Un exemple de configuration pour Gmail est disponible à cette adresse :
https://wiki.archlinux.org/index.php/SSMTP

Puis, on va déterminer les alias, c’est à dire quelle adresse mail sera substituée à chaque utilisateur.

Ex.: On ne veut peut-être pas que l’utilisateur « pi » envoi un mail avec pour adresse d’expéditeur pi@domaine.tld mais plutôt avec prenom.nom@gmail.com.

$ sudo nano /etc/ssmtp/revaliases

On y ajoute par exemple :

root:admin@domaine.tld:smtp.votre_provider.tld
pi:prenom.nom@gmail.com:smtp.votre_provider.tld

Pour permettre à PHP d’envoyer également des mails, nous allons éditer le fichier php.ini :

$ sudo nano /etc/php5/fpm/php.ini

Et modifier la ligne 976 comme ceci :

sendmail_path = /usr/sbin/ssmtp -t

Redémarrer PHP :

$ sudo service php5-fpm restart

Si vous utilisez un firewall, il convient d’ouvrir les ports SMTP 25/587/465 :

$ sudo nano /etc/init.d/firewall

On ajoute cette ligne :

# Allows SMTP access
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT

On assigne une ligne pour chaque port nécessaire :

25 (sans authentification)
587 (avec authentification)
465 (SSL)

Si vous utilisez des actions cron vous devrez ajouter ceci à la fin de chaque ligne :

2>&1

Sans ça, chaque action cron vous enverra un mail.

Désormais, cette commande enverra un email à nom.prenom@gmail.com contenant « Test Subject » comme sujet et « Hello world » dans le corps du mail.

$ echo "Hello world" | mail -s "Test Subject" nom.prenom@gmail.com

(2) comments

Quentin
7 ans ago · Répondre

Bonjour, merci pour ce super tuto, il y a juste un point que je n’ai pas tout a fait compris:
Vous dites que lorque l’on possède un firewall, il faut ajouter la ligne iptables -A OUTPUT -p tcp –dport 25 -j ACCEPT au fichier /etc/init.d/firewall/ ça j’ai compris m’ai ensuite, vous dites qu’il faut faire pareil pour les 2 autres ports, je l’ai fait, mais maintenant, je ne peut plus envoyer de mail.

    fanjoe
    7 ans ago · Répondre

    Avez-vous rechargé le firewall après avoir effectué les modifications ?
    $ sudo /etc/init.d/firewall

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.