ssmtp permet à des applications d’envoyer des courriels via la commande /usr/sbin/sendmail
. Contrairement à postfix, il ne fait que rediriger les courriers vers un serveur SMTP externe. C’est donc un outil très léger et rapide, et qui ne demande que très peu de paramétrage.
A quoi cela peut servir ?
ssmtp peut permettre facilement :
- à CRON, ou encore à la commande at, de publier leurs résultats ;
- d’envoyer des courriels via le terminal ;
- aux CMS et LMS d’un environnement de développement lampp d’envoyer des courriels via sendmail (ex : tester les messages envoyés par Drupal ou Spip).
Si vous voulez savoir si vous pouvez utiliser sendmail avant cette installation, entrez : whereis sendmail
Si vous n’avez rien, l’installation et la configuration de ssmtp vous permettra d’utiliser sendmail.
Post-installation :
On peut commencer par retirer le serveur de mail de Debian : exim4
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.
root=XXX@openmailbox.org
# 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
AuthUser=XXX@openmailbox.org
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 XXX@openmailbox.org
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 XXX@openmailbox.org 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:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:XXX@openmailbox.org:smtp.openmailbox.org:587
user1:XXX@openmailbox.org:smtp.openmailbox.org:587
user2:XXX@openmailbox.org: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" moi@monemail.com