Pour comprendre comment configurer un serveur de messagerie MTA lire d'abord Configurer un serveur de messagerie MTA sous Ubuntu
Ici nous allons étudier le serveur de messageries Postfix porté par IBM qui est le serveur par défaut d'Ubuntu. Il est le successeur de Sendmail avec pour but d'en résoudre les problèmes de sécurité, et d'offrir une administration beaucoup plus souple et modulaire que ce dernier.
Postfix est ce que l'on appelle en anglais un MTA (Mail Transfer Agent). Le MTA, le Centre de Distribution des Courriels, est un serveur de messagerie qui :
Tout ceci se fait au travers du protocole SMTP (Simple Mail Transfer Protocol) pour la distribution des courriels et leurs transports vers les serveurs messagerie de distribution de courriels MTA destinataires.
Les fichiers de configuration du serveur de messageries se trouvent dans /etc/postfix.
Un minimum de paramètres doivent être configurés dans main.cf pour que la messagerie fonctionne.
Mais avant toute configuration de main.cf, pour avoir un suivi du fonctionnement de la distribution des courriels, il est préférable de définir un utilisateur en gestion des incidents de messagerie.
Dans Postfix, pour cela il faut éditer le fichier /etc/aliases (kate /etc/aliases
) pour relayer, par mail à l'utilisateur gestionnaire, la supervision du fonctionnement du serveur de messagerie.
Modifiez alors les variables de ce fichier comme ci-dessous :
postmasteur: votre_compte_linux # pour relayer par l'utilisateur votre_compte_linux, avec la messagerie, la supervision de la messagerie.
postmasteur: root # pour relayer par l'utilisateur root, avec la messagerie, la supervision de la messagerie root: votre_compte_linux # pour relayer la supervision du serveur, avec la messagerie, au gestionnaire du serveur.
Passer la commande postalias pour valider les modifications dans Postfix :
sudo postalias /etc/aliases
Le nombre des messages qui vont vous être envoyés par Postfix peut vite devenir du SPAM. Il est peut-être pertinent de ne pas recevoir tous les types d'informations. C'est la variable notify_classes dans main.cf qui nous permet de filtrer tout cela. Les valeurs possibles sont :
Pour un utilisateur novice il faut éditer /etc/postfix/main.cf (kate /etc/postfix/main.cf
).
Modifiez/Ajouter la variable notify_class comme ci-dessous :
notify_classes = ressource, software # Valeurs par défaut de Postfix
Voir l'état du serveur Postfix :
systemctl status postfix.service
Voir les logs de Postfix :
journalctl -u postfix -f
et
cat /var/log/mail.log
cat /var/log/mail.err
Voir les messages en file d'attente :
mailq
ou
postqueue -p
ou
qshape # montre une vue du contenu de la file d’attente de Postfix sous forme de tableau
ou
qshape active #pour ceux actif en file d'attente
ou
qshape deferred #pour les mails de la file d’attente retardée
sudo postsuper -d ALL deferred # pour vider la file retardée
sudo postsuper -d ALL # pour vider toutes les files
Si vous ne voulez pas relever votre courrier à la poste (vos colis chez votre livreur), votre facteur, votre livreur de colis, doit savoir où trouver la boite aux lettres personnelle à l'adresse de livraison de votre domicile. Afin de leur permettre de délivrer les lettres ou les colis qui vous sont adressés en votre absence. C'est pour cela que les boites aux lettres des particuliers sont normalisées.
Dans Postfix, c'est la variable home_mailbox qui définit pour votre serveur de messagerie où se trouve la boite aux lettres des utilisateurs.
Exemple :
home_mailbox = Mailbox/ # Les boites aux lettres des utilisateurs se trouvent dans /home/«utilisateur»/Mailbox/ et sont au format Maildir. home_mailbox = .local/share/local-mail/inbox/ # Les boites aux lettres des utilisateurs se trouvent dans /home/«utilisateur»/.local/share/local-mail/inbox/ home_mailbox = .local/share/akonadi_maildir_ressource_0/inbox/ # La boite aux lettres des utilisateurs kmail
Une adresse mail utilisateur@fournisseur_messagerie.fr se compose invariablement de trois éléments :
Donc si l'on fait un rapprochement avec le courrier écrit, le nom du destinataire est identique au nom du destinataire d'un courrier postal. Et la machine serveur SMTP, le centre de distribution des messages, c'est votre adresse postale complète du lieu d'habitation ou géographique d'entreprise/d'établissement.
La variable myorigin est alors utilisée par Postfix pour spécifier le nom de votre serveur de courriels comme centre de distribution des messages.
Exemples :
myorigin = $myhostname # envoie le courriel comme «utilisateur@valeur_de_myhostname» myorigin = $mydomain # envoie le courriel comme «utilisateur@valeur_de_mydomain» (a privilégier pour respecter le principe d'adresse de centre de distribution des messages) myorigin = fm.perso # envoie le courriel comme «utilisateur@fm.perso»
postconf myhostname
La variable myhostname peut être spécifiée dans le cas où celle-ci ne renvoie pas la bonne valeur. Pour voir le nom de machine tapez la commande «hostname
».
La variable mydomain peut aussi être spécifiée pour le nom de domaine (dans le cas où Postfix renvoie localdomain
avec cette variable par exemple). Pour voir le nom de domaine système tapez la commande «hostname -d
».
Exemple :
myhostname = mon_nom_de_serveur # fixe le nom du serveur à «mon_nom_de_serveur» mydomain = mon_domaine_machine.perso # fixe le nom de domaine à «mon_domaine_machine.perso» myorigin = $mydomain # envoie le courriel comme «utilisateur@mon_domaine_machine.perso»
Des courriers/colis vous sont proposés à l'arrivée à votre centre de distribution pour réception. Ici il est question d'accepter ou non les messages/colis à la livraison pour distribution en fonction de l'adresse indiqué. Pour la messagerie cela se traduit par quelles adresses de messages SMTP vont être autorisés pour un trie local.
C'est le paramètre mydestination qui indique les adresses de messages à l'arrivée pour lesquels on peut accepter le courriel comme adresse locale de centre de distribution. Attention pour éviter des boucles dans la distribution des messages, vous devez énumérer tous les noms d'hôtes de la machine en incluant $myhostname et localhost.$mydomain
Exemples :
mydestination = $myhostname localhost locahost.$mydomain # valeurs par défaut de Postfix pour un service local (adresses courriels distribués pour votre messagerie client : nom_utilisateur@nom_machine, nom_utilisateur@localhost, nom_utilisateur@localhost.nom_du_domaine) mydestination = $myhostname localhost locahost.$mydomain $mydomain # par exemple pour distribuer en plus des messages pour les utilisateurs locaux avec le nom de domaine messagerie : nom_utilisateur@mon_domaine_messagerie mydestination = $myhostname localhost locahost.$mydomain mon_fm.fr # avec mon fournisseur de messagerie en local.
echo "mon message" | mutt -s "Sujet du courriel" utilisateur
Par quels réseaux de transports les courriers/colis sont-ils distribués ? Par la route, par le train, par l'avion, etc. Ici il s'agit de définir quels moyens de transports sont utilisés pour la distribution des messages.
Par défaut Postfix relaie les messages des clients de messagerie SMTP non distribués sur tout les réseaux de transports de la machine. Les réseaux autorisés sont spécifié par les variables mynetworks et mynetworks_style
La variable mynetwork_style peut prendre la valeur :
Exemples :
mynetworks_style = subnet # Autorise tous les sous-réseaux raccordés. mynetworks_style = host # Seul la machine locale est autorisée, c'est sécurisé contre le spam. mynetworks = 127.0.0.0/8 # Seul la machine locale est autorisée, c'est sécurisé contre le spam. mynetworks = 127.0.0.0/8 168.100.100.0/32
Lorsque on vous délivre des courriers ou des colis à votre centre d'arrivées et de trie postal, certains vous sont destinés pour une distribution locale, et d'autres n'ont aucun destinataire. Vous pouvez décider vers quels autres centres d'arrivées des courriers expédier ces courriers.
Postfix relaie tous les messages qui ne lui sont pas destinés et les distribue vers les destinations autorisées. C'est la variable relay_domains qui définit ces relaies. Exemples :
relay_domains = $mydestination # Distribution suivant les destinations autorisées. Par défaut dans Postfix. relay_domains = # Ne relaie aucun courrier provenant de réseaux non autorisés. C'est la version sécurisé. relay_domains = mon_domaine_machine.perso # Relaie le courrier vers mon_domaine_machine.perso et ses sous-domaine.mon_domaine_machine.perso
Vous avez des courriers au départ dans votre centre de trie avec des adresses qui ne sont pas pour votre centre de traitement d'arrivées. Ces adresses n'ont pas une distribution locale à l'arrivée possible. Donc pour votre trie vous devez expédier ces courriers vers un (d')autre(s) centre(s) de traitements au départ qui peux les expédier.
C'est la variable relayhost qui est à paramétrer pour tout cela. Exemples :
relayhost = # Livraison directe dans internet. Par défaut dans Postfix. relayhost = mon_domaine_machine.perso # Livraison via la messagerie de mon domaine (centre de traitements) relayhost = [messages.mon_domaine_machine.perso] # Livraison via la passerelle messages.mon_domaine_machine.perso (centre de trie) relayhost = [smtp.fai.fr]:465 # Livraison via la passerelle du fournisseur d'accès smtp.fai.fr suivant le port sécurisé 465 (crypté en SSL)
Les [] permettent d'éviter d'avoir les correspondances IP DNS des MX des noms de domaines de messageries. Ce sont les ports de ces adresses IP qui sont filtrés par les pare-feux.
Pour modifier le port d'Émission de votre serveur, dans /etc/postfix/main.cf, modifier RELAYHOST comme ceci:
relayhost = [serveursmtp]:port
( EX : relayhost = [smtp.orange-business.com]:587
)
Il est également possible d'utiliser le port 587 en lieu et place du port 25, pour cela, éditer le fichier /etc/postfix/master.cf et ajouter
587 inet n - y - - smtpd -o smtpd_proxy_ehlo=no -o content_filter=dksign:[127.0.0.1]:12028
juste en dessous de votre ligne smtp
smtp inet n - - - - smtpd -o smtpd_proxy_ehlo=no -o content_filter=dksign:[127.0.0.1]:12028
Pour crypter les connections au serveur SMTP on peut utiliser un tunnel SSH, c'est le protocole SMTPS, ou mieux le protocole TLS qui fait la même chose mais corrige des failles de sécurité des anciennes versions de SSH.
Postfix doit être utilisé avec SASL, cela va assurer l'authentification SMTP (pour éviter que des spammeurs utilisent votre serveur pour envoyer du spam), ainsi qu'un chiffrement via SSL/TLS.
général:
Avancé :