ssmtp msmtp mail s-nail : Envoyer des emails facilement sous Linux en ligne de commande
Table des matières
Sur ce site, j'ai réalisé des tutoriels sur postfix et comment l'installer en tant que relais SMTP.
Cependant, il existe plus simple que de mettre en place postfix pour envoyer des emails, grâce à 2 composants :
- Un Client SMTP
- Une commande qui permet d'expédier des emails
Vous allez voir, c'est facile, cela fonctionne super bien, et j'utilise ça depuis bien longtemps sur les serveurs du travail pour envoyer par mail des retours de scripts de sauvegarde.
Il existe plusieurs clients SMTP. Choisissez celui de votre choix : ssmtp, msmtp.
ssmtp est le premier outil que j'ai utilisé pour configurer localement un client SMTP sur la machine.
Il suffit d'installer le paquet ssmtp.
CentOS :
Gentoo :
Debian :
Ensuite, on va indiquer à ssmtp les paramètres du SMTP à contacter pour envoyer des emails. Tout se passe dans le fichier /etc/ssmtp/ssmtp.conf :
Je vous mets mon fichier de configuration avec les options
msmtp est le deuxième outil que j'ai utilisé pour configurer localement un client SMTP sur la machine.
Il suffit d'installer le paquet msmtp.
Red Hat et dérivées :
Gentoo :
Debian:
Ensuite, on va indiquer à msmtp les paramètres du SMTP à contacter pour envoyer des emails.
Tout se passe dans le fichier /etc/msmtprc ou bien dans le fichier ~/.msmtprc pour un utilisateur :
Je vous mets mon fichier de configuration avec les options (sur CentOS 8)
Pour désactiver l'authentification ou le tls (non recommandé) :
Plusieurs programmes sont disponibles.
Le plus standard niveau distributions Linux est s-nail.
Pour les versions plus anciennes de Red Hat et dérivées on utilisera mailx.
La commande "mail" est invoquable pour des raisons de compatibilité mais les options peuvent différer suivant les outils
Red Hat 9 et dérivées (EPEL pour Red Hat 7 et 8) + Fedora :
Debian + Ubuntu :
Gentoo :
Pour envoyer un message :
Pour envoyer un message et attacher un fichier :
Le mail est envoyé avec comme expéditeur le unixusername@hostname. On peut réécrire l'expéditeur ainsi :
On peut envoyer le contenu d'un fichier HTML dans un mail au format HTML :
Red Hat et dérivées (8 et 7) :
Pour envoyer un message :
Le mail est envoyé avec comme expéditeur le unixusername@hostname. On peut réécrire l'expéditeur ainsi :
On peut envoyer le contenu d'un fichier HTML dans un mail au format HTML :
Quand msmtp est paramétré sur le serveur, la fonction mail de PHP ne sait pas l'utiliser par défaut.
Dans un premier temps, s'assurer que apache puisse lire le fichier /etc/msmtprc
On peut autoriser la lecture du fichier par apache (ou de l'utilisateur qui exécute php) :
Ensuite éditer le fichier php.ini (l'emplacement peut différer) :
Modifier la ligne sendmail_path comme ceci :
Le libellé de l'option -a est le nom du compte à utiliser paramétré dans le msmtprc.
Ensuite, rechargez la configuration PHP testez avec une fonction mail le bon fonctionnement :
Introduction
Sur ce site, j'ai réalisé des tutoriels sur postfix et comment l'installer en tant que relais SMTP.
Cependant, il existe plus simple que de mettre en place postfix pour envoyer des emails, grâce à 2 composants :
- Un Client SMTP
- Une commande qui permet d'expédier des emails
Vous allez voir, c'est facile, cela fonctionne super bien, et j'utilise ça depuis bien longtemps sur les serveurs du travail pour envoyer par mail des retours de scripts de sauvegarde.
Le client SMTP
Il existe plusieurs clients SMTP. Choisissez celui de votre choix : ssmtp, msmtp.
ssmtp (obsolète mais gardé pour archive)
ssmtp est le premier outil que j'ai utilisé pour configurer localement un client SMTP sur la machine.
Il suffit d'installer le paquet ssmtp.
CentOS :
Code BASH :
yum install ssmtp
Gentoo :
Code BASH :
emerge -av mail-mta/ssmtp
Debian :
Code BASH :
apt install ssmtp
Ensuite, on va indiquer à ssmtp les paramètres du SMTP à contacter pour envoyer des emails. Tout se passe dans le fichier /etc/ssmtp/ssmtp.conf :
Code BASH :
vi /etc/ssmtp/ssmtp.conf
Je vous mets mon fichier de configuration avec les options
Code BASH :
# # /etc/ssmtp.conf -- a config file for sSMTP sendmail. # # Serveur SMTP à utiliser mailhub=auth.smtp.1and1.fr:587 # Réécrire le domaine de l'expéditeur rewriteDomain=linuxtricks.fr # Nom de la machine hostname=serveur ## Mettre YES permet au programme qui envoie un courriel de modifier l'entête du message concernant l'émetteur. FromLineOverride=YES ## Authentification sur le relais smtp UseSTARTTLS=yes UseTLS=yes #IMPORTANT: The following line is mandatory for TLS authentication TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt ## Nom d'utilisateur SMTP AuthUser=XXXXXXXXXXX@linuxtricks.fr ## Mot de passe associe au compte AuthPass=XXXXXXXXXXX
msmtp (recommandé)
msmtp est le deuxième outil que j'ai utilisé pour configurer localement un client SMTP sur la machine.
Il suffit d'installer le paquet msmtp.
Red Hat et dérivées :
Code BASH :
dnf install msmtp
Gentoo :
Code BASH :
emerge -av mail-mta/msmtp
Debian:
Code BASH :
apt install msmtp
Ensuite, on va indiquer à msmtp les paramètres du SMTP à contacter pour envoyer des emails.
Tout se passe dans le fichier /etc/msmtprc ou bien dans le fichier ~/.msmtprc pour un utilisateur :
Code BASH :
vi /etc/msmtprc
Je vous mets mon fichier de configuration avec les options (sur CentOS 8)
Code BASH :
# Valeurs par défaut pour tous les comptes. defaults auth on tls on tls_starttls on tls_trust_file /etc/pki/tls/certs/ca-bundle.crt logfile /var/log/msmtp.log syslog LOG_MAIL account ionos host smtp.ionos.fr port 587 from XXX@linuxtricks.fr user XXX@linuxtricks.fr password XXXXX # Definition du compte par defaut account default : ionos
Pour désactiver l'authentification ou le tls (non recommandé) :
Code TEXT :
auth off tls off tls_starttls off
Envoyer des mails en ligne de commande
Plusieurs programmes sont disponibles.
Le plus standard niveau distributions Linux est s-nail.
Pour les versions plus anciennes de Red Hat et dérivées on utilisera mailx.
La commande "mail" est invoquable pour des raisons de compatibilité mais les options peuvent différer suivant les outils
s-nail
Red Hat 9 et dérivées (EPEL pour Red Hat 7 et 8) + Fedora :
Code BASH :
dnf install s-nail
Debian + Ubuntu :
Code BASH :
apt install s-nail
Gentoo :
Code BASH :
emerge -av mail-client/s-nail
Pour envoyer un message :
Code BASH :
echo "Corps de mail" | s-nail -s "Sujet" destinataire@linuxtricks.fr
Pour envoyer un message et attacher un fichier :
Code BASH :
echo "Corps de mail" | s-nail -s "Sujet" -a /tmp/fichier.txt destinataire@linuxtricks.fr
Le mail est envoyé avec comme expéditeur le unixusername@hostname. On peut réécrire l'expéditeur ainsi :
Code BASH :
echo "Corps de mail" | s-nail -s "Sujet" -r expediteur@linuxtricks.fr destinataire@linuxtricks.fr
On peut envoyer le contenu d'un fichier HTML dans un mail au format HTML :
Code BASH :
cat export.html | s-nail -s "Sujet" -M "text/html" destinataire@linuxtricks.fr
mailx
Red Hat et dérivées (8 et 7) :
Code BASH :
yum install mailx
Pour envoyer un message :
Code BASH :
echo "Corps de mail" | mail -s "Sujet" destinataire@linuxtricks.fr
Le mail est envoyé avec comme expéditeur le unixusername@hostname. On peut réécrire l'expéditeur ainsi :
Code BASH :
echo "Corps de mail" | mail -s "Sujet" -r expediteur@linuxtricks.fr destinataire@linuxtricks.fr
On peut envoyer le contenu d'un fichier HTML dans un mail au format HTML :
Code BASH :
cat export.html | mail -s "$(echo -e "Sujet\nContent-Type: text/html")" destinataire@linuxtricks.fr
Paramétrer PHP avec msmtp
Quand msmtp est paramétré sur le serveur, la fonction mail de PHP ne sait pas l'utiliser par défaut.
Dans un premier temps, s'assurer que apache puisse lire le fichier /etc/msmtprc
On peut autoriser la lecture du fichier par apache (ou de l'utilisateur qui exécute php) :
Code BASH :
chgrp apache /etc/msmtprc chmod g+r /etc/msmtprc
Ensuite éditer le fichier php.ini (l'emplacement peut différer) :
Code BASH :
vi /etc/php.ini
Modifier la ligne sendmail_path comme ceci :
Code TEXT :
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc -a ionos -t"
Le libellé de l'option -a est le nom du compte à utiliser paramétré dans le msmtprc.
Ensuite, rechargez la configuration PHP testez avec une fonction mail le bon fonctionnement :
Code PHP :
mail("[email protected]","Sujet","Email envoye avec PHP via msmtp");