informatique:serveur:postfix

Ceci est une ancienne révision du document !


PostFix : serveur de messagerie sous Linux

et toutes les astuces à connaître concernant les mails.

Cet article est destiné aux débutants qui veulent configurer un serveur de messagerie électronique de base. Il est préférable d'avoir une connaissance élémentaire en administration système, ainsi que la capacité d'installer des logiciels et de modifier des fichiers de configuration. L'article a été rédigé en se basant sur Debian 11, mais les instructions devraient également convenir aux autres versions. Veuillez noter que des différences peuvent exister dans les autres versions.

Postfix est un logiciel de serveur de messagerie open source largement adopté. En tant que “MTA” (Agent de Transfert de Message), il joue un rôle central dans le traitement, la transmission et la distribution des courriels. Doté de fonctionnalités avancées en matière de sécurité, de filtrage et de personnalisation, Postfix est un choix prisé pour la gestion des systèmes de messagerie.

L'objectif principal de cette démarche est de permettre l'envoi de courriels depuis une machine ou un serveur vers une adresse de destination spécifiée. Cela implique la préparation du courrier par un programme externe, suivi de la transmission efficace de ce courrier vers le serveur de messagerie de destination via le serveur SMTP (Simple Mail Transfer Protocol).

Le mécanisme mis en œuvre pour envoyer un courrier électronique via le SMTP est le suivant. Prenons l'exemple d'un courriel destiné à être envoyé à l'adresse alice@example.com :

1. L'utilisateur ou le programme externe crée le courrier électronique avec les informations du destinataire (alice@example.com), le contenu du message et d'autres détails pertinents.

2. Le courrier électronique est remis au serveur SMTP local sur la machine ou le serveur depuis lequel l'envoi doit être effectué.

3. Le serveur SMTP examine le domaine du destinataire (dans ce cas, “example.com”) pour déterminer comment atteindre le serveur de messagerie de destination.

4. Le serveur SMTP contacte le serveur de messagerie de destination (le serveur SMTP de “example.com” dans cet exemple) en utilisant le protocole SMTP.

5. Le serveur de messagerie de destination accepte le courrier électronique, le stocke temporairement et le transfère éventuellement à la boîte aux lettres de l'utilisateur Alice sur son serveur de messagerie.

6. Si le processus se déroule sans problème, le courrier est remis avec succès à Alice, qui peut alors le consulter dans sa boîte de réception.

C'est ainsi que le SMTP assure la transmission des courriels d'un expéditeur à un destinataire, en passant par les serveurs de messagerie appropriés sur Internet.

Sous Linux Debian, il existe plusieurs programmes d'envoi de courriels, chacun avec ses propres fonctionnalités et avantages. Voici quelques-uns des programmes les plus couramment utilisés pour envoyer des courriels sous Debian :

1. ssmtp: Simple SMTP est un programme léger qui permet d'envoyer des courriels via SMTP. Il est particulièrement adapté aux tâches d'envoi de courriels automatisées et ne prend pas en charge la réception de courriels.

2. msmtp: MSMTP est un autre client SMTP léger qui facilite l'envoi de courriels depuis la ligne de commande ou depuis des scripts. Il peut être configuré pour transmettre des courriels à travers un serveur SMTP externe.

3. Postfix: Bien que Postfix soit principalement un serveur de messagerie, il peut également être utilisé pour envoyer des courriels depuis une machine Debian. Il offre une grande flexibilité en matière de configuration, mais sa configuration peut être plus complexe que celle des clients SMTP plus simples.

4. sendmail: Sendmail est un programme de messagerie historique sous Unix/Linux, bien qu'il soit maintenant souvent remplacé par des alternatives plus modernes. Cependant, il est toujours disponible sur Debian et peut être utilisé pour envoyer des courriels.

5. Exim: Exim est un autre serveur de messagerie qui peut être configuré pour envoyer des courriels. Il est également capable de gérer la réception de courriels, ce qui en fait une option plus complète.

Le choix du programme d'envoi de courriels dépendra de vos besoins spécifiques, de votre niveau de confort avec la configuration et de la complexité de votre infrastructure de messagerie. Pour des tâches simples d'envoi de courriels depuis la ligne de commande ou depuis des scripts, ssmtp ou msmtp sont souvent des choix pratiques. Pour des besoins plus avancés, Postfix ou Exim peuvent être mieux adaptés.

Sous Linux, le service chargé de la gestion de la distribution des courriels est connu sous le nom de Postfix. Il est considé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

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

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

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

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&

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 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"

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
  • informatique/serveur/postfix.1701004661.txt.gz
  • Dernière modification : 2023/11/26 14:17
  • de Cédric ABONNEL