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, …).
...@...:~$ sudo apt install {msmtp,msmtp-mta,bsd-mailx}
...@...:~$ sudo whereis sendmail sendmail: /usr/sbin/sendmail /usr/lib/sendmail /usr/share/sendmail /usr/share/man/man8/sendmail.8.gz
...@...:~$ sudo ls -la /usr/sbin/sendmail lrwxrwxrwx 1 root root 12 oct. 11 2019 /usr/sbin/sendmail -> ../bin/msmtp
→ Les 2 logiciels sont bien associés.
Le paramétrage des options se fait dans le fichier /etc/msmtprc (pour tous les utilisateurs ou ~/.msmtprc (pour un utilisateur)
Exemple de fichier msmtprc :
# Valeurs par défaut pour tous les comptes. defaults auth on tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile /var/log/msmtp # Exemple pour un compte Gmail account gmail auth plain host smtp.gmail.com port 587 from username@gmail.com user username password XXXXXXXXXX # Exemple pour un compte GMX account gmx host mail.gmx.com port 587 from username@gmx.com user username@gmx.com password XXXXXXXXXX tls_nocertcheck # Exemple pour un compte OVH account ovh host XXXXXX.ovh.net port 465 from username@example.com user username@example.com password XXXXXXXXXX # Exemple pour un compte Infomaniak account infomaniak host mail.infomaniak.com port 587 from username@example.com user username@example.com password XXXXXXXXXX # Exemple pour un serveur de test MailHog account mailhog auth off tls off tls_starttls off host localhost port 1024 from username@example.com # Définir le compte par défaut account default : gmail
Modèle exemple de fichier :
# nom du compte (le fichier de configuration accepte plusieurs configurations de serveurs SMTP) account default # serveur SMTP utilisé host smtp.monfai.fr # Adresse de l'expéditeur from prenom.nom@monfai.fr # si pas d'authentification auth off # si authentification #auth on # expéditeur du mail #user prenom.nom@fai.fr # mot de passe en clair dans le fichier de configuration password **************
Exemple de fichier de configuration utilisateur ~/.msmtprc
Ce fichier se concentre sur le protocole TLS et l'authentification.
Les fonctionnalités non utilisées ici incluent la journalisation, les délais d'expiration, les proxy SOCKS, les paramètres TLS, les paramètres de notification d'état de livraison (DSN), etc.
# Valeurs par défaut pour tous les comptes suivants. defaults # Utiliser le port 587 au lieu du port SMTP 25. port 587 # Toujours utiliser TLS. tls on # Définir une liste d'autorités de certification de confiance pour TLS. tls_certcheck on tls_trust_file /etc/ssl/certs/ca-certificates.crt # Service Gmail ############### account gmail # Serveur SMTP host smtp.gmail.com # Adresse de l'expéditeur du mail from ***********@gmail.com # Authentification. Le mot de passe est donné en utilisant l'une des cinq méthodes, voir ci-dessous. auth on user ********@gmail.com # Mot de passe, enregistré directement dans ce fichier. # Assurez-vous que ce fichier ne peut être lu que par vous-même. password ************** # Fichier journal logfile /var/log/msmtp.log # Compte par défaut account default : gmail (10)
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.
Définit une liste d'autorités de certification approuvées pour TLS.
Par défaut, on utilise les paramètres système, mais vous pouvez sélectionner votre propre fichier.
#tls_trust_file /etc/ssl/certs/ca-certificates.crt
Si vous sélectionnez votre propre fichier, vous devez également utiliser la commande tls_crl_file pour vérifier les certificats révoqués, mais malheureusement, obtenir des listes de révocation et les tenir à jour n'est pas simple.
#tls_crl_file ~/.tls-crls
Vous devez mettre à jour l'empreinte digitale lorsque le certificat du serveur change, mais un attaquant ne peut pas vous inciter à accepter un certificat frauduleux.
Obtenez l'empreinte digitale avec
# $ 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
Authentification
Le mot de passe est fourni en utilisant l'une de ces cinq méthodes :
# $ secret-tool store --label=msmtp \ # host smtp.freemail.example \ # service smtp \ # user joe.smith
#passwordeval gpg2 --no-tty -q -d ~/.msmtp-password.gpg
password **************
Pour ce tutoriel, j’ai choisi la plus facile mais la moins sécurisée, 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.
msmtp permet d’utiliser plusieurs comptes smtp. Vous devez en choisir un par défaut.
Si vous voulez configurer l’envoi de courriels au niveau d’un utilisateur seulement, créez le fichier ~/.msmtprc dans le dossier personnel de l’utilisateur concerné pour y écrire le même contenu.
# exemple de compte avec free account free host smtp.free.fr from prenom.nom@monfai.fr auth off user prenom.nom
account default tls on host smtp.gmail.com port 587 from nom_user@gmail.com auth on user nom_user password password_user tls_starttls on tls_certcheck on tls_trust_file /etc/ssl/certs/ca-certificates.crt
La dernière ligne est spécifique aux systèmes basés sur debian. Elle pointe vers le fichier où sont stockés l'ensemble des certificats racine de confiance du système
account default tls on host smtp.gmail.com port 587 from nom_user@gmail.com auth on user nom_user password password_user tls_starttls off tls_certcheck off
account default host smtp.orange.fr protocol smtp auth login tls on tls_starttls off tls_certcheck on tls_trust_file /etc/ssl/certs/ca-certificates.crt from mon-adresse@orange.fr maildomain orange.fr port 465 user mon-adresse password mon-motdepasse
account default host mail.gandi.net from <adresse de l'émetteur> tls on tls_certcheck off tls_starttls off auth on user <adresse Gandi/nom d'utilisateur utilisé pour se connecter à la boîte aux lettres électronique Gandi> password <mot de passe boîte aux lettres électronique>
...@...:~$ mail destinataire@domaine.fr Subject: ...... .... (corps du message) a moi . (un point suivi de <key>Entrée</key> pour terminer) Cc:
Suivre les indications en mode intéractif. Pour terminer le mail, tapez un point en début de ligne “.”
...@...:~$ printf "Un message\nde test" | mail -s "sujet de test" destinataire@domaine.fr
...@...:~$ cat readme.txt | mail johnny@liday.ch
...@...:~$ uuencode application.zip | mail johnny@liday.ch
Attention: il faut alors un saut de ligne : utilisez printf plutôt que echo. Exemple:
...@...:~$ printf "Subject:De Quoi On Parle\nLeCorpsDuMessage" | mail johnny@liday.ch
Vérifier que les mails sont bien partis en regardant le contenu de la file d'attente :
le fichier est à renommer et à créer avec les droits pertinents : modifier dans .msmtprc la ligne :
logfile /var/log/msmtp
il est nécessaire de créer le fichier de log , accessible par msmtp :
...@...:~ $ sudo groups msmtp ...@...:/var/log $ sudo touch /var/log/msmtp ...@...:/var/log $ sudo chown msmtp:msmtp /var/log/msmtp ...@...:/var/log $ sudo chmod 660 /var/log/msmtp