Installer un serveur mail avec Postfix et Dovecot
06/07/2014 ⋅ Aucun commentaire
A y est, je dispose de mon propre serveur mail. J'ai rien inventé et d'autres ont écrit sur le sujet avant moi (merci à eux d'ailleurs ;) ). Je ne vais donc indiquer ici que quelques précisions que je n'ai pas trouvées dans les différents tutos que …
Les différentes solutions
Dans le couple, Postfix est le MTA (pour Mail Transfert Agent). C'est lui qui envoie et reçoit les courier via le protocole SMTP. Dovecot, qui, outre son rôle de serveur POP3 et IMAP sert également de MDA (pour mail delivery agent). Il va donc délivrer les mail dans la bonne boite au lettre. En tant que serveur POP3 et IMAP, il va permettre au logiciel de messagerie de récupérer et gérer les mails.
On peut utiliser Postfix pour gérer un très grand nombre de comptes mail via une base de donnée. Cela implique d'en définir l'emplacement, l'architecture et d'indiquer à Postfix les requêtes à effectuer pour réaliser ses opérations. J'ai trouvé ce tuto qui explique cette méthode.
Cependant, après un essai non concluant, j'ai préféré passer à plus simple, à savoir utiliser les comptes système comme comptes mails. C'est parfaitement faisable lorsque le nombre de comptes n'est pas trop important, et on peut même gérer les mails de plusieurs domaines et avoir plusieurs adresses par compte. Pour cela, j'ai suivi le tuto de Thuban. Cependant, quelques détails n'y sont pas expliquer, notamment la validation d'un compte ou l'utilisation d'un client de messagerie.
Utiliser un client de messagerie
Pour se parler entre eux, les serveurs SMTP utilisent le port 25. Cependant, ce port ne doit pas être employé par les clients de messagerie (Evolution, Icedove ...) car il est souvent bloqué par les box des FAI vers d'autre serveur SMTP que le leur. De ce fait, deux autres ports sont utilisés : le port 587 pour le service submission, et le port 465 pour le service smtps. Or, par défaut, postfix ne lance pas ces services. De ce fait, même si, après la configuration de Postfix/Devecot les mails partent bien lorsqu'il sont envoyés directement par le serveur via la commande mail ou une application de type webmail comme Squirel ou Roundcube, on reçoit une erreur lorsqu'on utilise un client de messagerie pour l'envoi.
Il faut donc modifier le fichier /etc/postfix/master.cf, en décommentant les lignes submission et/ou smtps pour indiquer à Postfix d'écouter sur ces ports. Redémarrer le service avec
service postfix restart
Ajouter un compte utilisateur
Pour ajouter un compte mail tout simple, on utilise la commande
adduser --shell=/bin/false $VOTRE_COMPTE
Pour vérifier le fonctionnement du compte et créer le dossier de réception, on voit souvent mention de l'utilisation de telnet.
telnet serveur.net 25 ehlo serveur.net Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 pansebete.net ESMTP Postfix (Debian/GNU) ehlo serveur.net 250-serveur.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from: <user@serveur.net> 250 2.1.0 Ok rcpt to: <user@serveur.net> 250 2.1.5 Ok quit
L'adresse de l'émetteur et du destinataire doit bien être entre chevron, ce n'est pas une convention d'écriture.
Cependant, avant de me rendre compte de ça et de pouvoir utiliser telnet, j'ai validé les comptes avec la commande mail et ça fonctionne très bien aussi.
Gérer des adresses virtuels
On peut disposer de plusieurs adresses par compte.
Pour gérer des adresses et des comptes virtuels, utiliser virtual_alias_maps= hash:/etc/postfix/virtual dans le fichier /etc/postfix/main.cf.
Il faut alors créer le fichier d'alias /etc/postfix/virtual avec la syntaxe suivante (voir la doc de Postfix
postmaster@serveur.net postmaster president@serveur.net jean tresorier@serveur.net paul
Mettre à jour avec
postmap /etc/postfix/virtual postfix reload
Voilà, c'est tout pour l'instant. Je n'ai pas encore mis en place de vérification dkim ni de webmail. Il semble également que Postgrey ait éventuellement besoin d'un peu de configuration mais je n'ai pas encore pris le temps de m'y pencher.