Installer un serveur mail Linux (ssmtp)
Il peut être intéressant pour monitorer ses services et serveurs de recevoir des rapports par mailmail.
Pour cela nous avons donc besoin d’un petit serveur mail qui, une fois paramétré, se servira d’une de vos adresse mail existante (gmail/yahoo etc…) afin d’envoyer vos rapports issue de vos tâches cron ou de vos services de monitoring.
Il existe plusieurs applications pour effectuer cela. L’une d’entre elle en ligne de commande est SSMTP. Son avantage est d’être très simple à paramétrer et surtout très légère.
Installation
sudo apt-get update
sudo apt-get install ssmtp
Configuration
Deux fichiers sont à configurer afin de faire fonctionner correctement ssmtp.
- /etc/ssmtp/ssmtp.conf
- /etc/ssmtp/revaliases
L’exemple pris pour la suite de l’explication fonctionne pour utiliser gmail avec le service ssmtp.
-
/etc/ssmtp/ssmtp.conf
1/ Configurer mailhub
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587
smtp.gmail.com indique l’adresse de communication avec le serveur mail gmail via le protocole smtp (qui nécessite le port 25)
587 indique le port utilisé par votre fournisseur de boite mail. Renseignez vous auprès de lui pour savoir quel port il utilise.
Google utilise deux port spécifique. le 465 et le 587.
Pour que tout fonctionne correctement il faudra évidemment autoriser tout ces ports (le 25, 465, 587) à communiquer à travers le firewall de votre machine : voir article iptables
2/ Configurer rewriteDomain
Ceci indique à ssmtp que l’entête de votre courriel doit être modifiée afin que le nom de domaine soit répertorié comme source de votre adresse de courriel. Pour que tout fonctionne bien indiquez le nom de domaine de votre fournisseur. Par défaut vous pouvez laisser cette valeur vide.
# Where will the mail seem to come from?
rewriteDomain=gmail.com
3/ Configurer hostname
le hostname doit indiquer le nom de la machine utilisée pour envoyer les mail. Par exemple ici pour ma machine de cloud perso qui s’appelle « claude » :
# The full hostname
hostname=claude
Par défaut vous pouvez néanmoins laisser cette valeur vide.
4/ Configurer réécritures et identifiants.
# 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
UseSTARTTLS=YES
FromLineOverride=YES
AuthUser=login_gmail
AuthPass=password_gmail
second fichier à configurer : /etc/ssmtp/revaliases.
-
/etc/ssmtp/revaliases
Ce fichier va spécifier quel compte mail est utilisé avec quel utilisateur de la machine.
Par exemple ici l’utilisateur root va utiliser le compte coco@gmail.com.
Vous pouvez ajouter autant de lignes que vous souhaitez d’utilisateur liés à votre compte.
# 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:coco@gmail.com:smtp.gmail.com:587
# Other System user: (for Apache)
# www-data:votre_identifiant@fournisseur.com:mail.fournisseur.com:587
Utilisations
Pour tester l’envoi de mail vous pouvez utiliser par exemple mailutils.
sudo apt-get install mailutils
puis envoyer un mail :
echo Ce que vous voulez dire | mail -s "sujet du mail" machin-truc@example.com
ssmtp va alors utiliser votre adresse mail précédemment configurée avec gmail en tant qu’utilisateur root pour envoyer un mail à Mr ou Mme « machin-truc@example.com ».
Vous pourrez par la suite paramétrer vos différents services et applications (fail2ban, php, etc..) pour qu’elles utilisent cette nouvelle fonction d’envoie de mail.