Installer un client SMTP sous Linux.

msmtp est un client SMTP robuste et facile à configurer pour l’envoi de courriels. Son mode de fonctionnement par défaut est simple. Il consiste à transférer les courriels au serveur SMTP que vous aurez indiqué dans son fichier de configuration. Il est entièrement compatible avec sendmail, prend en charge le transport sécurisé TLS, les comptes multiples, diverses méthodes d’authentification et les notifications de distribution.

Définition.

Attention !!! Il existe un autre logiciel, ssmtp, qui fait la même chose, mais malheureusement il est inactif depuis 2013. Je vous conseille vivement d’utiliser une alternative comme msmtp. Voici un tutoriel sur l’utilisation de ssmtp que j’avais fait en 2013 : Comment utiliser le MTA sSMTP sous Centos.

Le fonctionnement du courrier électronique est basé sur l’utilisation d’une boîte à lettres électronique. Lors de l’envoi d’un email, le message est acheminé de serveur en serveur jusqu’au serveur de messagerie du destinataire. Le message est envoyé au serveur de courrier électronique chargé du transport (nommé MTA pour Mail Transport Agent), jusqu’au MTA du destinataire. Sur le web, les MTA communiquent entre-eux grâce au protocole SMTP et sont appelés serveurs SMTP (mais aussi serveur de courrier sortant).

illustration fonctionnement envoie de mail avec le MTA, le MDA et le MUA

Le serveur MTA du destinataire délivre alors le courrier au serveur de courrier électronique entrant (nommé MDA pour Mail Delivery Agent), qui stocke alors le courrier en attendant que l’utilisateur vienne le relever.

La relève du courrier se fait grâce à un logiciel appelé MUA (Mail User Agent). On parle de client de messagerie (par exemple Mozilla Thunderbird, Microsoft Outlook, Eudora Mail, Incredimail, …).

Installation de msmtp sur Ubuntu.

L’installation du logiciel msmtp est très simple et ne nécessite pas de dépendances particulières.

# apt-get upgrade
# apt install msmtp msmtp-mta

Installation de msmtp sur sur Ubuntu

Ensuite vérifier si sendmail est présent sur votre système Linux.

# whereis sendmail

Vérifier si Sendmail est installé sur un serveur Linux

Puis vérifier si sendmail est lié à sSMTP.

# ls -la /usr/sbin/sendmail

Vérifier si sendmail est lié à msmtp

Ici nous voyons bien que les 2 logiciels sont bien associés. Si vous voulez vraiment tester, utiliser la commande ci-dessous. Vous souhaitez connaitre la version de sendmail et c’est la version de msmtp qui est affichée.

# sendmail --version

msmtp sera bien le logiciel utilisé pour envoyer des mails et non pas sendmail

Configurer MSMTP

Pour pouvoir envoyer des courriels depuis votre VPS, il faudra configurer un serveur SMTP comme Gmail par exemple.

Le paramétrage des options se fait dans le fichier /etc/msmtprc (si vous souhaitez configurer l’envoi de mails au niveau du système, donc pour tous les utilisateurs du serveur). Si vous voulez configurer l’envoi de courriels au niveau d’un utilisateur, créez le fichier .msmtprc dans le dossier personnel de l’utilisateur concerné.

Le fichier devra être accessible en lecture et écriture uniquement à l’utilisateur :

chmod 600 .msmtprc

Voici un exemple du fichier de configuration pour Gmail :

# Example for a user configuration file ~/.msmtprc
#
# This file focusses on TLS and authentication. Features not used here include
# logging, timeouts, SOCKS proxies, TLS parameters, Delivery Status Notification
# (DSN) settings, and more.

# Set default values for all following accounts.
defaults

# Use the mail submission port 587 instead of the SMTP port 25.
port 587 (1)

# Always use TLS.
tls on (2)

# Set a list of trusted CAs for TLS. The default is to use system settings, but
# you can select your own file.
#tls_trust_file /etc/ssl/certs/ca-certificates.crt
# If you select your own file, you should also use the tls_crl_file command to
# check for revoked certificates, but unfortunately getting revocation lists and
# keeping them up to date is not straightforward.
#tls_crl_file ~/.tls-crls
tls_certcheck on
tls_trust_file /etc/ssl/certs/ca-certificates.crt (3)

# A Gmail service
account gmail (4)

# Host name of the SMTP server
host smtp.gmail.com (5)

# As an alternative to tls_trust_file/tls_crl_file, you can use tls_fingerprint
# to pin a single certificate. You have to update the fingerprint when the
# server certificate changes, but an attacker cannot trick you into accepting
# a fraudulent certificate. Get the fingerprint with
# $ msmtp --serverinfo --tls --tls-certcheck=off --host=smtp.freemail.example
#tls_fingerprint 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33

# Envelope-from address
from ***********@gmail.com (6)

# Authentication. The password is given using one of five methods, see below.
auth on
user ********@gmail.com (7)

# Password method 1: Add the password to the system keyring, and let msmtp get
# it automatically. To set the keyring password using Gnome's libsecret:
# $ secret-tool store --label=msmtp \
# host smtp.freemail.example \
# service smtp \
# user joe.smith

# Password method 2: Store the password in an encrypted file, and tell msmtp
# which command to use to decrypt it. This is usually used with GnuPG, as in
# this example. Usually gpg-agent will ask once for the decryption password.
#passwordeval gpg2 --no-tty -q -d ~/.msmtp-password.gpg

# Password method 3: Store the password directly in this file. Usually it is not
# a good idea to store passwords in plain text files. If you do it anyway, at
# least make sure that this file can only be read by yourself.
password ************** (8)
# Password method 4: Store the password in ~/.netrc. This method is probably not
# relevant anymore.

# Password method 5: Do not specify a password. Msmtp will then prompt you for
# it. This means you need to be able to type into a terminal when msmtp runs.

# Log File
logfile /var/log/msmtp.log (9)

# Set a default account
account default : gmail (10)
Attention !!! Si vous souhaitez réutiliser la configuration, penser à enlever les numéros au bout des lignes.
  • 1 : port 587, vous permet de spécifier un port d’envoi pour votre mail
  • 2 : tls on, La connexion entre votre ordinateur et le serveur distant est chiffrée, ce qui signifie que si une personne arrive à intercepter les données, elles seront illisibles, car elles nécessitent une sorte de “mot de passe” connu de votre ordinateur et du serveur pour être lues.
  • 3 : tls_certcheck on et tls_trust_file /etc/ssl/certs/ca-certificates.crt, permet d’indiquer ou sont situés les certificats par défaut de votre OS, ici c’est le chemin par défaut à base de Debian, donc compatible Ubuntu.
  • 4: account gmail, vous devez saisir le nom du compte que vous utiliserez pour envoyer vos mails. Le fichier de configuration accepte plusieurs configurations de serveurs SMTP.
  • 5 : host smtp.gmail.com, indiquer le nom du serveur SMTP utilisé.
  • 6 : from ***********@gmail.com, ce paramètre indique l’origine du message, le nom de l’expéditeur.
  • 7 : auth on et user ********@gmail.com, ces 2 paramètres permettent d’activer l’authentification utilisateur pour authentifier l’expéditeur du mail. Absolument nécessaire pour sécuriser l’envoi de mails.
  • 8 : Vous avez 5 possibilités pour la saisie du mot de passe. Pour ce tutoriel j’ai choisi la plus facile mais la moins sécurisé, c’est-à-dire la saisie directe du mot de passe en clair dans le fichier de configuration. Je vous conseillerai plutôt une autre méthode, la 1 où la 2 qui cache le mot de passe.
  • 9 : Cette ligne permet de créer un fichier de log spécifique pour l’application msmtp.
  • 10 : msmtp permet d’utiliser plusieurs comptes smtp. Vous devez en choisir un par défaut.

Erreur avec smtp.gmail.com

Si vous utilisez le serveur smtp de Google pour envoyer des mails, vous aurez sûrement cette erreur :

send-mail: Authorization failed (534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 ni5sm3908366pbc.83 – gsmtp)
Can’t send mail: sendmail process failed with error code 1

Pour résoudre ce problème, vous devrez vous connectez sur votre compte Google et modifier les paramétres par défaut.

Pour vous faciliter la tâche voici les 2 liens concernés :

Autoriser les appalications a accéder à votre compte Google

Vous devez activer cette option qui autorise les applications moins sécurisées à pouvoir utilisé le smtp de Gmail.

Annuler la demande de captcha pour utiliser les fonctionnalités de votre compte GoogleAnnuler la demande de captcha pour utiliser les fonctionnalités de votre compte Google

Maintenant vos applications externes peuvent accéder à votre compte Google.

Test de fonctionnement.

Pour valider le bon fonctionnement de notre configuration, nous allons essayer d’envoyer un message en ligne de commande grâce à la commande mail.

mail -s "Alert VPS" webmaster@quick-tutoriel.com <<< "Attack SSH on VPS"

envoie d'un mail en ligne de commande avec la commande mail

Pour vous assurer que tout fonctionne correctement, vous pouvez éditer le fichier de log qui se trouve dans /var/log/msmtp.log (dépend de votre configuration)

Lors d'un problème il faut consulter le fichier de log que vous aurez définie dans la configuration de msmtp

Nous voyons dans les logs ci-dessus que les deux derniers messages ont bien été transmis par le smtp de gmail, le champ SMTP Status retourne 250 donc OK.

Lors d'un problème il faut consulter le fichier de log que vous aurez définie dans la configuration de msmtp

Ici le message n’a pas été délivré et le code de retour est 534 pour une mauvaise authentification.

Si vous souhaitez plus de renseignements, notamment sur les différentes méthodes pour cacher son mot de passe dans le fichier de configuration de msmtp, je vous invite à lire la documentation officielle : documentation msmtp.

That’s All.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Curabitur dictum nec vel, odio diam eget massa ut