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.
Sommaire de l'article
Définition.
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).
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
Ensuite vérifier si sendmail est présent sur votre système Linux.
# whereis sendmail
Puis vérifier si sendmail est lié à sSMTP.
# ls -la /usr/sbin/sendmail
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
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)
- 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 :
Vous devez activer cette option qui autorise les applications moins sécurisées à pouvoir utilisé le smtp de Gmail.
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"
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)
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.
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.