Configuration de msmtp pour l'envoi d'e-mails sous Linux

Cet article explique comment configurer le client SMTP léger msmtp sous Linux pour envoyer des e-mails depuis la ligne de commande, en utilisant des exemples concrets pour des services comme QQ Mail.

Installation des paquets requis

Pour commencer, installez msmtp, msmtp-mta et mailx. Si les paquets ne sont pas disponibles, assurez-vous que le dépôt EPEL (Extra Packages for Enterprise Linux) est activé.


# Installer les paquets
yum install -y msmtp msmtp-mta mailx

# Si les paquets ne sont pas trouvés, installez le dépôt EPEL
# yum install -y epel-release
# Puis réessayez l'installation de msmtp

Configuration de msmtp

Créez et configurez le fichier /etc/msmtprc. Assurez-vous que ses permissions sont restreintes pour des raisons de sécurité.


# Créer le fichier de configuration
touch /etc/msmtprc

# Définir les permissions restrictives (lecture/écriture pour propriétaire uniquement)
chmod 600 /etc/msmtprc

Modifiez ensuite le fichier /etc/msmtprc avec vos paramètres SMTP. Les exemples ci-dessous montrent la configuration pour QQ Mail.


# Paramètres par défaut
defaults
# Activer le chiffrement TLS (obligatoire pour la sécurité)
tls on
# Utiliser STARTTLS pour la négociation du chiffrement
tls_starttls on
# Chemin vers le certificat CA racine (peut varier selon la distribution, exemple pour CentOS 7)
tls_trust_file /etc/pki/tls/certs/ca-bundle.crt

# Configuration du compte par défaut (pour QQ Mail)
account default
# Serveur SMTP
host smtp.qq.com
# Port du serveur SMTP (587 pour TLS/STARTTLS, 465 pour SSL/TLS sans STARTTLS)
port 587
# Activer l'authentification
auth on
# Votre adresse e-mail complète
user votre_email@qq.com
# Votre mot de passe ou code d'autorisation (généralement 16 caractères pour QQ)
password votre_code_autorisation
# Adresse e-mail affichée dans l'en-tête "From"
from votre_email@qq.com

# Exemple de configuration pour un autre compte (ex: 163.com)
# account 163
# host smtp.163.com
# port 465
# auth on
# user votre_email@163.com
# password votre_mot_de_passe_163
# from votre_email@163.com
# Note: Pour certains serveurs comme 163 avec port 465, il peut être nécessaire de désactiver STARTTLS
# tls_starttls off

# Fichier de journalisation pour le débogage
logfile /var/log/msmtp.log

Création du fichier journal

Créez le fichier journal et définissez ses permissions pour permettre l'écriture.


# Créer le fichier journal
touch /var/log/msmtp.log

# Définir les permissions pour permettre l'écriture par tous (peut être ajusté si nécessaire)
chmod 666 /var/log/msmtp.log

Tests d'anvoi d'e-mails

Utilisez mailx pour envoyer un e-mail de test. C'est la méthode la plus courante et recommandée lorsque msmtp-mta est configuré.


# Envoyer un e-mail simple avec mailx
echo "Ceci est un e-mail de test envoyé via msmtp." | mailx -s "Test SMTP" destinataire@example.com

# Vous pouvez aussi utiliser msmtp directement, en spécifiant le compte si nécessaire
echo "Contenu du test direct" | msmtp --account=default destinataire@example.com

# Utilisation de Heredoc pour un formatage plus riche
msmtp --account=default destinataire@example.com <<EOF
Subject: Titre du test Heredoc
From: Votre Nom <votre_email@qq.com>
To: destinataire@example.com

Bonjour,
Ceci est le corps de l'e-mail envoyé en utilisant la syntaxe Heredoc.
EOF

Vérification des journaux

En cas d'échec, consultez le fichier journal pour identifier les erreurs.


tail -n 20 /var/log/msmtp.log

Configuration de l'expéditeur par défaut (optionnel)

Pour définir un expéditeur par défaut pour tous les envois via mailx, vous pouvez modifier le fichier /etc/mail.rc.


echo 'set from="Votre Nom <votre_email@qq.com>"' >> /etc/mail.rc

Comprendre les composants : msmtp, msmtp-mta, et mailx

Ces trois outils travaillent ensemble pour permettre l'envoi d'e-mails depuis la ligne de commande sous Linux.

  • mailx : Génère le contanu de l'e-mail, définit le sujet, les destinataires, etc. Il ne peut pas envoyer l'e-mail seul.
  • msmtp : Agit comme un client SMTP. Il établit une connexion sécurisée avec le serveur SMTP (par exemple, celui de votre fournisseur d'e-mail) et envoie l'e-mail. Il gère l'authentification et le chiffrement (TLS/SSL).
  • msmtp-mta : Crée un lien symbolique (généralement /usr/sbin/sendmail vers /usr/bin/msmtp). Cela permet aux applications qui s'attendent à utiliser le programme sendmail standard (comme mailx) d'utiliser msmtp à la place pour l'envoi réel des e-mails. Sans msmtp-mta, mailx essaierait d'utiliser le sendmail du système, qui n'est souvent pas configuré ou disponible.

L'installation combinée de ces trois paquets assure que le processus d'envoi d'e-mail est complet : mailx prépare le message, msmtp-mta redirige la commande d'envoi, et msmtp effectue l'envoi sécurisé via le serveur SMTP.

Localisation automatique du fichier de configuration msmtp

Lorsque vous exécutez la commande msmtp sans spécifier explicitement le fichier de configuration via l'option --file ou -C, msmtp recherche le fichier de configuration dans un ordre de priorité défini :

  1. Paramètres de la ligne de commande : Si vous utilisez --file=/chemin/vers/votre/config, c'est ce fichier qui sera utilisé.
  2. Configuration utilisateur : msmtp vérifie ensuite si un fichier nommé .msmtprc existe dans le répertoire personnel de l'utilisateur courant (par exemple, ~/.msmtprc).
  3. Configuration système globale : Si aucun fichier n'est trouvé aux emplacements précédents, msmtp recherche le fichier /etc/msmtprc.

En plaçant votre fichier de configuration sous /etc/msmtprc et en le nomment correctement, vous vous assurez qu'il sera trouvé et utilisé par défaut par msmtp, que ce soit lors d'une exécution directe ou lorsqu'il est appelé via des outils comme mailx grâce à msmtp-mta.

Étiquettes: msmtp Linux SMTP mailx Configuration

Publié le 22 juillet à 09h01