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é) :
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.
Gentoo :
Debian :
Pour envoyer un message :
Le mail est envoyé avec comme expéditeur le unixusername@hostname. On peut réécrire l'expéditeur ainsi :
Plutôt que de faire
on peut écrire tout au long du script dans un fichier (par exemple /tmp/fichier) puis de faire
Debian :
Pour envoyer un message :
Le mail est envoyé avec comme expéditeur le unixusername@hostname. On peut réécrire l'expéditeur ainsi :
Plutôt que de faire
on peut écrire tout au long du script dans un fichier (par exemple /tmp/fichier) puis de faire
Red Hat et dérivées :
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
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
Red Hat et dérivées :
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");