Logiciels en ligne de commande

ssmtp msmtp mail s-nail : Envoyer des emails facilement sous Linux en ligne de commande

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

envoi_courriel



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



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



msmtp est le premier outil que j'ai utilisé pour configurer localement un client SMTP sur la machine.

Il suffit d'installer le paquet msmtp.

CentOS :
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 :

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
 
account        msmtp
host           smtp.ionos.fr
port           587
from           XXX@linuxtricks.fr
user           XXX@linuxtricks.fr
password       XXXXX
 
# Definition du compte par defaut
account default : msmtp
 
 



La commande mail pour envoyer des emails



Il faut installer la commande mail pour envoyer des emails depuis vos scripts.
Certaines commandes n'ont pas la même syntaxe, je diffère donc les cas ici.

mailutils



Gentoo :
Code BASH :
emerge -av net-mail/mailutils


Debian :
Code BASH :
apt install mailutils


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" -a "From: [email protected]" destinataire@linuxtricks.fr


Plutôt que de faire
Code BASH :
echo "Du texte" | mail 


on peut écrire tout au long du script dans un fichier (par exemple /tmp/fichier) puis de faire
Code BASH :
cat /tmp/fichier | mail 


bsd-mailx



Debian :
Code BASH :
apt install mailutils


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" -a "From: [email protected]" destinataire@linuxtricks.fr


Plutôt que de faire
Code BASH :
echo "Du texte" | mail 


on peut écrire tout au long du script dans un fichier (par exemple /tmp/fichier) puis de faire
Code BASH :
cat /tmp/fichier | mail 


mailx



CentOS :
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