Installer un serveur de messagerie sous Linux : envoyer des mails

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

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.

  1. isolation du domaine de l'adresse mail caroline.dubois@acemail.fr
    » acemail.fr
  2. 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
  3. connexion au serveur mx1.ovh.net : telnet mx1.ovh.net 25
  4. émission des commandes SMTP
    » EHLO abonnel.fr
    MAIL FROM:sender@mailserver.fr
    RCPT TO:caroline.dubois@acemail.fr
    DATA
    Test de mail
    .
    QUIT
  5. 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.

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

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

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

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"
Entrer votre commentaire. La syntaxe wiki est autorisée:
   ____   __ __  _____   __    __ 
  /  _/  / // / / ___/  / /   / / 
 _/ /   / _  / / /__   / /__ / /__
/___/  /_//_/  \___/  /____//____/
 
  • informatique/linux/postfix.txt
  • Dernière modification: 2021/03/19 08:48
  • par Cédric ABONNEL