-
Configuration simple d'un MTA avec Postfix
Lorsque l'on a un serveur avec différents outils de configurés ( supervision, journalisation...), il est important de recevoir les alertes / notifications générés par ces outils par e-mail.
Une des solutions serait d'installer un serveur de mails complet, mais si vous n'avez pas envie de vous lancer dans cette tâche complexe, vous pourrez opter de passer par un relais SMTP ( orange, sfr, free...) pour l'envoi des mails.
Tutoriel réalisé sur Debian 7 Wheezy.
Le courrier électronique repose sur 4 principes :
- Le Mail User Agent ( MUA ) qui est le logiciel chargé d'envoyer et recevoir du courrier ( Thunderbird, Outlook...).
- Le Mail Transfert Agent ( MTA ) qui est l'agent chargé d'assurer le transfert du message à travers le réseau ( Postfix, Exim...).
- Le Mail Delivery Agent ( MDA ) qui est chargé de la remise du courrier dans la boite aux lettres du destinataire ( Procmail, Dovecot...).
(cliquer sur l'image pour l'agrandir)
- Les 3 protocoles :
- Simple Mail Transfer Protocol ( SMTP ) qui est chargé du transfert du courrier.
- Post Office Protocol version 3 (POP3 qui est chargé de relever le courrier depuis le serveur vers votre MUA.
- Internet Message Access Protocol (IMAP) qui va également être chargé de relever le courrier en apportant des fonctionnalités supplémentaires par rapport au POP3 ( les mails restent sur le serveur et le contenu de votre boite aux lettres reste le même quelque soit l'endroit de consultation des mails).
Pour mieux comprendre le fonctionnement de la messagerie électronique je vous conseille cet article :
Mise en place d'un système de messagerie électronique sous Linux
Il existe plusieurs MTA sous Linux ( Postfix, Sendmail, Exim, sSMTP...).
Pour ma part, j'utilise Postfix et bsd-mallx pour tester l'envoi de mails en ligne de commandes.
Nous allons d'abord commencer par installer Postfix et bsd-mailx à l'aide de la commande :
sudo apt-get install postfix bsd-mailx
(cliquer sur l'image pour l'agrandir)
Lors de l'installation, il vous sera demandé quel type de configuration vous souhaitez mettre en place.
- Site Internet pour que postfix soit un serveur de mail.
- Internet avec un « smarthost » pour un serveur de mail qui utilisera un relais SMTP pour envoyer des courriels à l’extérieur.
- Système satellite afin que postfix soit un relayhost qui enverra le courrier à une autre machine.
- Local uniquement pour un serveur de mail fonctionnant uniquement dans votre réseau local.
Ici, je choisis Internet avec un « smarthost ».
(cliquer sur l'image pour l'agrandir)
Entrer ensuite le nom de courrier qui est le nom inscrit dans /etc/hosts ou /etc/hostname.
(cliquer sur l'image pour l'agrandir)
Entrer ensuite le nom du relais smtp par lequel les mails seront envoyés.
Certains FAI ayant bridé le port SMTP 25 ( port sans authentification ), je configure donc avec le port SMTP 587 (port avec authentification).
(cliquer sur l'image pour l'agrandir)
Nous allons maintenant étudier le fichier de configuration de postfix ( main.cf ) qui est situé dans /etc/postfix.
sudo nano /etc/postfix/main.cf
Voici comment j'ai configuré mon fichier, libre à vous de l'adapter par la suite.
(cliquer sur l'image pour l'agrandir)
- myhostname : Postfix a besoin d'un nom de domaine complet ou FQDN. Un nom de domaine complet comprend le nom d'hôte du serveur ainsi que le nom de domaine.
- mydomain : domaine auquel est rattaché le serveur.
- mydestination : définit une liste de domaines ou noms de machines pour laquelle le serveur se considérera comme étant la destination finale des messages.
PS : J'aurais pu très bien remplacer srvdebian.mika.fr par $myhostname.
- relayhost : serveur SMTP vers lequel les mails seront renvoyés.
- mynetworks : permet de définir le/les réseaux qui sont autorisés à envoyer des mails.
- inet_interfaces : définit les adresses du serveurs suceptibles de recevoir du courrier.
- myorigin : domaine qui apparaît dans le courrier envoyé sur cette machine ( ici $mydomain correspond à mika.fr ).
- default_transport : définit le protocole à utiliser pour délivrer les messages.
Une fois votre configuration effectuée et enregistrée, rechargez la configuration avec la commande :
sudo postfix reload
Faisons maintenant un test d'envoi de mail avec la commande suivante :
echo "test envoi mail" | mail -s "test envoi mail" michaelbonnard@sfr.fr
Postfix enregistre tous les échecs et succès de livraison dans un fichier appelé mail.log situé dans /var/log.
Je vais donc voir dans ce fichier si mon mail a bien été délivré.
sudo tail -f /var/log/mail.log
Vous pouvez voir qu'un message ayant pour identifiant 20140226005901.2629B20525@srvdebian.mika.fr
avec pour expéditeur mickael@mika.fr à destination d'un seul destinataire ( nrcpt=1 ) a été envoyé à
michaelbonnard@sfr.fr via le relais smtp.sfr.fr.
Vous pouvez également lire le message : Sender address rejected: Domain not found (in reply to RCPT TO command)
Ce message d'erreur vient du fait que le domaine mika.fr n'a pas d'enregistrement MX et que celui-ci n'est donc pas un nom de domaine valide.
(cliquer sur l'image pour l'agrandir)
Pour régler le problème, je vais utiliser la réécriture d'adresses afin que les expéditeurs en @mika.fr soient remplacés par @sfr.fr.
Pour cela, je vais insérer une ligne supplémentaire dans mon fichier main.cf.
Cette option va permettre de réécrire vos adresses locales en adresses de type identifiant@FAI.fr.
(cliquer sur l'image pour l'agrandir)
Ensuite nous allons éditer le fichier sender_canonical avec la commande :
sudo nano /etc/postfix/sender_canonical
Il existe plusieurs façons de configurer la réécriture d'adresses ( ici j'ai mis 3 exemples ) :
(cliquer sur l'image pour l'agrandir)
La 1er exemple va réécrire tous les expéditeurs en @mika.fr pour les faire apparaitre en @sfr.fr.
(cliquer sur l'image pour l'agrandir)
Le second exemple va réécrire uniquement l'expéditeur mickael ( mickael@mika.fr ) et le faire apparaitre en mickael@sfr.fr.
(cliquer sur l'image pour l'agrandir)
Enfin, le 3ème exemple va réécrire tous les expéditeurs en @mika.fr pour les faire apparaitre en srvdebian@sfr.fr.
(cliquer sur l'image pour l'agrandir)
Une fois votre fichier sender_canonical configuré et enregistré, il va falloir créer une base de données à partir de ce fichier avec la commande :
sudo postmap /etc/postfix/sender_canonical
Enfin rechargez la configuration de postfix avec la commande :
sudo postfix reload
(cliquer sur l'image pour l'agrandir)
Je vais maintenant retourner dans mes logs.
Vous pouvez voir qu'un message ayant pour identifiant 20140226132757.84B3A2053F@srvdebian.mika.fr
avec pour expéditeur srvdebian@sfr.fr à destination d'un seul destinataire ( nrcpt=1 ) a été envoyé
à michaelbonnard@sfr.fr via le relais smtp.sfr.fr.
Vous pouvez voir également que le message a bien été envoyé ( status=sent ), qu'il a été mis dans la file
d'attente de la messagerie ( queued as E07C57000098 ) et qu'une fois que celui-ci a été reçu par le client de
messagerie, il est supprimé de mon serveur ( removed ).
(cliquer sur l'image pour l'agrandir)
Un administrateur Linux ( admin-linux.fr ) m'a également indiqué que Postfix devait envoyer des mails mais pas en recevoir et que par conséquent le démon SMTP de postfix n'avait pas lieu d'être démarré.
Pour cela, il suffit d'éditer le fichier master.cf situé dans /etc/postfix.
sudo nano /etc/postfix/master.cf
Ensuite, il faudra commenter la ligne correspondant au démarrage de SMTP.
(cliquer sur l'image pour l'agrandir)
Si vous souhaitez relayer vos mail via Gmail ( je préfère relayer sur mon FAI ), il vous faudra activer le module SASL ( Simple Authentication and Security Layer ).
Vous trouverez une multitude de tutoriels sur le sujet.
Conclusion :
Avec cette configuration simple, vous serez en mesure de recevoir les alertes / notifications de votre serveur.
N'hésitez pas à me faire part de vos remarques et connaissances sur la configuration de Postfix.
Tags : postfix, mail, mta
-
Commentaires
merci