Installer un serveur de messagerie sous Linux : envoyer des mails
Table des matières
L'objectif est d'envoyer des mails depuis une machine ou un serveur. Le mail est préparé par un programme externe et est donnée au serveur SMTP qui va se charger de le transmettre au serveur mail de destination.
Le mécanisme mis en œuvre, pour envoyer un mail par le SMTP est le suivant. Prenons l'exemple d'un mail envoyé à caroline.dubois@acemail.fr.
- isolation du domaine de l'adresse mail caroline.dubois@acemail.fr
» acemail.fr - connaître le serveur de mails associés au domaine acemail.fr :
dig MX acemail.fr
» 1 mx1.ovh.net.
5 mx2.ovh.net.
100 mx3.ovh.net - connexion au serveur mx1.ovh.net :
telnet mx1.ovh.net 25
- émission des commandes SMTP
» EHLO abonnel.fr
MAIL FROM:sender@mailserver.fr
RCPT TO:caroline.dubois@acemail.fr
DATA
Test de mail
.
QUIT - vérification du SPF :
dig TXT acemail.fr
» v=spf1 include:mx.ovh.com ~all
Il existe deux programmes d'envoi de mails : Postfix et Sendmail. Sendmail est considéré comme déprécié. Il faut donc lui préférer Postfix.
Installer Postfix
Sous Linux, le service gérant la distribution des mails s'appelle Postfix. Il est concidéré comme le successeur du programme sendmail.
sudo apt install postfix
Choisir Site Internet
Entrer la valeur FQDN de votre adresse de serveur
si vous devez relancer la configuration de Postfix
sudo dpkg-reconfigure postfix
–
Faire un essai d'envoi de mail
echo "Le contenu du mail" | mail -s "ceci est le sujet" mail@domaine.tld
Le programme mail est une composante du package mailutils. Donc, si le programme n'est pas installer sur la machine, utilisez sudo apt install mailutils
–
Pour modifier un paramètre dans Postfix, il faut éditer le fichier de configuration
sudo nano /etc/postfix/main.cf
Redémarrer le service
sudo systemctl restart postfix
Gestion des Alias
Ajouter dans le fichier de configuration de Postfix, /etc/postfix/main.cf
virtual_alias_maps = hash:/etc/postfix/virtual
Puis ajouter dans le fichier /etc/postfix/virtual
les alias désirés tel que le modèle suivant :
@monserveur.tld mail@domain.tld
Enfin, exécuter le bloc suivant. Il sera nécessaire de l’exécuter à chaque modifications effectuées du fichier /etc/postfix/virtual
.
sudo postmap /etc/postfix/virtual sudo systemctl restart postfix
Mails en attente
Pour connaître les mails en attente
sudo postqueue -p
–
Pour traiter tous les mails en attente
sudo postqueue -f
–
Pour supprimer tous les mails en attente
sudo postsuper -d ALL
Reprise de la configuration de Postfix
Le fichier de configuration de Postfix est /etc/postfix/main.cf
. Il est éditable par nano ou vim. On va le reprendre pour configurer Postfix.
—
myhostname = myserver.example.com
Il est important que l'option myhostname
corresponde au FQDN (fully qualified domain name) du serveur. La valeur à renseigner et celle qui renvoyée par la commande :
nslookup 91.134.243.56
Cette information est gérée par le serveur DNS
Cette option se trouve les paramètres Gérer les paramètres IPs
, chez kimsufi.com
Cette option, reverse DNS, se trouve dans les options du serveur VPS de vos serveurs dédiés, chez ovh.com
—
Configurer le nom du serveur SMTP, domaine à afficher dans le courrier sortant
myorigin = example.com
Configuer le nom du serveur SMTP
mydomain = example.com
Configure to which SMTP domains to relay messages to, for example:
relay_domains = example.com
—
Configuration minimaliste du SMTP Greeting Banner:
smtpd_banner = $myhostname
—
Limiter les attaques par déni de services :
default_process_limit = 100 smtpd_client_connection_count_limit = 10 smtpd_client_connection_rate_limit = 30 queue_minfree = 20971520 header_size_limit = 51200 message_size_limit = 10485760 smtpd_recipient_limit = 100
Réécrire Return-Path et l'adresse d'expéditeur
Postfix permet de réécrire les adresses Return-Path et l'adresse de l'expéditeur de manière générique. http://www.postfix.org/ADDRESS_REWRITING_README.html#generic
Dans le fichier /etc/postfix/main.cf
:
smtp_generic_maps = hash:/etc/postfix/generic
Dans le fichier /etc/postfix/generic
:
his@localdomain.local hisaccount@hisisp.example her@localdomain.local heraccount@herisp.example @localdomain.local hisaccount+local@hisisp.example
Mettre à jour les données
sudo postmap /etc/postfix/generic
Redémarrer le service Postfix service postfix restart
Consulter le fichier log
Le fichier log standard de postfix est /var/log/mail.info
Vous pouvez garder un oeuil sur les logs
sudo tail -f /var/log/mail.info&
Envoyer un mail
Il y a deux possibilités :
- envoie depuis un client : mail
- connexion en Telnet sur le serveur SMTP
L'utilitaire mail fait parti de la suite mailutils
sudo apt install mailutils
—
Utilisation de l'utilitaire mail depuis un poste client.
Pour envoyer un mail à mail@example.com
de la part de sender@example.com
echo "This is the message body" | mail -s "This is the subject" mail@example.com -aFrom:sender@example.com
Pour envoyer un mail à username
echo "This is the message body" | mail -s "Hello World" username
—
Utilisation de telnet pour se connecter sur le serveur SMTP mail.mymailserver.com
telnet mail.mymailserver.com 25
Puis saisir les commandes SMTP
EHLO checkeremail.com
MAIL FROM:<sender@mailserver.fr>
RCPT TO:<dest@mymailserver.com>
DATA Subject: Sending an email using telnet Hello, Here is my body? Do you like it? Cédric .
QUIT
Vider tous les mails
Vider tous les mails présents dans la boite d'un utilisateur. On considère que la boite mail (mbox) de l'utilisateur www-data
se trouve dans le fichier /var/mail/www-data
sudo sh -c "> /var/mail/www-data"