PostFix : serveur de messagerie sous Linux
Table des matières
Postfix est un logiciel de serveur de messagerie open source largement utilisé. Il fonctionne comme un MTA
et est principalement utilisé pour gère le routage, la livraison et l'envoi des e-mails. Il offre des fonctionnalités avancées pour la sécurité, le filtrage et la personnalisation, en en faisant un choix populaire pour les systèmes de messagerie.
MTA
, ou Mail Transfer Agent, est un acronyme utilisé pour désigner les logiciels ou les serveurs qui acheminent les e-mails d'un serveur à un autre. Le MTA est responsable du transfert des messages électroniques d'un serveur de messagerie à un autre à travers le réseau.
—
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
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"
Mise à jour du certificat
On part du principe que :
- le nom de domaine d'envoi des mails est
smtp.monserveur.fr
- le certificat de votre nom de domaine est géré par Let's Encrypt et est opérationnel
- le renouvellement automatique opéré par Certbot utilise le protocole ACME et est opérationnel.
L'objectif est de copier le certificat et la clé du domaine pour postfix de manière automatique et régulière.
1. Se connecter sur le serveur avec le compte root
2. Créer le fichier /root/scripts/update_smtpd_certificat.sh
nano /root/scripts/update_smtpd_certificat.sh
avec le contenu suivant
- update_smtpd_certificat.sh
#!/bin/bash # mettre à jour le certificat pour smtpd cp /etc/letsencrypt/live/smtp.monserveur.fr/cert.pem /etc/postfix/smtpd.cert cp /etc/letsencrypt/live/smtp.monserveur.fr/privkey.pem /etc/postfix/smtpd.key
Attention, il se peut que le fichier /etc/postfix/smtpd.cert
soit un alias vers /usr/local/ispconfig/interface/ssl/ispserver.crt
dans le cadre de l'utilisation d'ISP Config
Le script écrasera systématiquement les fichiers cibles dans le dossier /etc/postfix
3. Rendre exécutable le script
chown +x /root/scripts/update_smtpd_certificat.sh
4. Programmer le script avec crontab
crontab -e
0 0 * * * /root/scripts/update_smtpd_certificat.sh 2>&1
5. Vérifier le certificat
openssl x509 -text -in /etc/postfix/smtpd.cert