Auteur: JJP (—.w193-252.abo.wanadoo.f)
Date: 07/10/2005 14:03
Source : www.sos-dedie.com
Lien direct : http://www.sos-dedie.com/index.php/2005/02/18/1-postfix-courier?spassage=1
Installer et configurer Postifx et Courier (pop) pour son serveur avec authentification simple
Postfix est un MTA, il permet en autre de récupérer le courrier envoyé à votre serveur (par exemple contact@votredomaine.com).
Nous allons donc procéder ici à la configuration de Postfix afin qu'il gère le courrier reçu par le serveur.
Courier est un client POP.
Nous allons installer ce logiciel afin de lire notre courrier présent sur le serveur par un logiciel de type Outlook express, Eudora, …
Ce tutorial a pour but de faire les choses simplement ! Nous allons travailler sur une debian.
Nous nous passerons donc de toute complication parceque c'est déjà assez complexe…
Pour installer Postfix, avec une debian :
apt-get install postfix
La version installé de postfix :
postconf mail_version
Quelques différences existent entre la version 1 et 2 de Postfix alors regardez quelle version vous avez ou installez une version spécifique avec apt-get.
Si Postfix vous demande pour quelle utilisation vous voulez vous en servir, choisissez Internet site. Faites Entrée pour tout le reste.
Nous allons créer des boites aux lettres virtuelles. Il faut savoir que par défaut, postfix envoi le courrier sur les comptes unix.
Etant donné que nous comptons héberger plusieurs domaines sur un serveur, il devient fastidieux et dangereux de créer de nouveaux utilisateurs unix.
Nous allons donc utiliser la fonction boite virtuelle de Postfix qui va créé automatiquement des répertoires contenant le courrier
et divers paramètres. Il suffit juste de lui indiquer ou placer le courrier et aussi quelle boite aux lettres il doit gérer.
Après avoir installer Postfix, créer un compte unix vmail qui servira de base pour la réception de tous les courriers.
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m
Allez dans le répertoire /etc/postfix/ editer le fichier main.cf qui contient la configuration de postfix.
cd /etc/postfix/vi main.cf
Voici un exemple de fichier main.cf épuré de tout commentaire (Postfix 2)
myhostname = votreserveur.comm origin = votredomaine.comm destination = $myhostname, localhost.$mydomain, localhost mynetworks = 127.0.0.0/8 virtual_mailbox_domains = votredomaine1.com votredomaine2.com virtual_maps = hash:/etc/postfix/virtual_adresse virtual_mailbox_base = /home/vmail virtual_mailbox_maps = hash:/etc/postfix/virtual_emplacement virtual_uid_maps = static:5000 virtual_gid_maps = static:5000
Nous allons étudier ce fichier. Toute modification de ce fichier doit être confirmé en relançant postfix par la commande
/etc/init.d/postfix reload
Nous allons d'abord configurer les paramètres généraux :
myhostname : Contient le nom de votre machine ou à défaut votre nom de domaine, à l'installation postfix a normalement
configuré ce champ
myorigin : Ce paramètre contient le nom de domaine qui apparaîtra dans tout courrier sortant de votre serveur.
Dans le fichier d'exemple, ce paramètre contient la valeur $myhostname ce qui signifie que myorigin contiendra la valeur défini dans myhostname.
mydestination : Définit le domaine par défaut de destination (qui reçoit donc le courrier).
Normalement ce paramètre est à localhost (le courrier est reçu à la machine elle-même)
Paramètre pour les boites aux lettres virtuelles
virtual_mailbox_base : Répertoire de base où sont stockés les boites aux lettres et leur courrier.
virtual_maps : Ce paramètre permet de définir toutes les adresses emails acceptés.
Par exemple si vous voulez une adresse du genre contact@votredomaine.com il faut l'indiquer dans virtual_maps sinon celle-ci sera éjecté.
De plus, vous pouvez faire du forwarding avec ce paramètre.
Par exemple : webmaster@votredomaine.com vers contact@votredomaine.com.
Comme la liste peut être grande, postfix utilise un fichier sous forme de base de donnée.
Tout d'abord, vous devez ecrire un fichier texte nommée virtual_adresse
ATTENTION ! Pour la version 1 de Postfix, pas besoin de virtual_maps mais de transport_maps dans lequel
vous indiquez un fichier contenant la liste des domaines virtuels suivi de virtual.
De plus rajoutez le paramétres relay_domains = votredomaine.com votredomaine2.com
vi virtual_adresse
Entrez vos adresses de boites virtuelles et/ou forwarding
contact@votredomaine.com contact@votredomaine.com contact@votredomaine2.com contact@votredomaine2.com webmaster@votredomaine.com contact@votredomaine.com
Une fois enregistré, vous devez transformer ce fichier en base de donnée en faisant
postmap virtual_adresse
Cela vous créé un nouveau fichier qui sera utilisé par Postfix. La commande hash: indique à Postfix le format du fichier à lire.
Maintenant que l'on a définit les adresses hébergées sur ce site, il faut tout de même dire où Postfix va stocker le courrier
de chaque adresse. C'est le rôle de virtual_mailbox_maps. Ce paramètre contient le chemin d'un fichier nommée virtual_emplacement.
Ce fichier contient une liste composée des adresses email suivi d'un chemin (relatif à virtual_mailbox_base).
vi virtual_emplacement contact@votredomaine.com votredomaine.com/contact/ contact@votredomaine2.com votredomaine2.com/contact/ postmap virtual_emplacement
Nous organisons nos boites de cette façon. Un dossier “nom de domaine” contenant des sous-dossiers “boite aux lettres”.
Attention au / à la fin du chemin qui indique que le format de la boite au lettre sera Maildir au lieu de Mailbox.
N'oubliez pas de faire postmap virtual_emplacement
Enfin les derniers paramétres
virtual_uid_maps = static:5000virtual_gid_maps = static:5000
Ces dernières valeurs permettent de spécifier sous quel compte postfix va écrire les messages.
Nous avons créé exprès un compte vmail (5000). Donc nous indiquons cette valeur qui est valable pour toute les
adresses (d'où le prefixe static:)
Sauvegardez votre main.cf et faite un
/etc/init.d/postfix reload
Si aucun message d'erreur apparaît, vous pouvez faire un petit contrôle avec un telnet.
Par exemple : telnet localhost 25 ou depuis l'extérieur telnet www.votredomaine.com 25
Si vous n'arrivez pas à vous connecter, regardez le fichier tail /var/log/syslog
telnet www.votredomaine.com 25 220 myserver ESMTP Postfix (Debian/GNU) ehlo coucou.com 250-mailtest 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 XVERP 250 8BITMIME mail from: 250 Ok rcpt to: 250 Ok data 354 End data with . blablabla... . 250 Ok: queued as ABC1D1C123 quit 221 BYE
Les erreurs possibles Une erreur peut se produire après la commande rcpt to: Le problème peut être souvent du à plusieurs facteurs :
l'adresse email du destinataire n'est pas reconnue, dans ce cas un problème peut se situer dans virtual_adresse Postfix ne trouve pas le répertoire de destination, cette fois-ci c'est virtual_emplacement qui peut avoir un problème Pour en savoir plus, n'hésitez pas à consulter /etc/var/mail.log ou /etc/var/syslog
L'installation de courier est assez simple, la partie la plus difficile se situe dans la connexion et l'indentification de votre
logiciel de messagerie (outlook par exemple) à votre serveur.
apt-get install courier-pop courier-authdaemon courier-debug Nous allons faire l'identification des clients se connectant au serveur de courrier pour relever leur email par
l'authentification userdb mais d'abord configurons un peu courier
cd /etc/courier
Editer le fichier pop3d, décommenter la ligne
vi pop3d POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
Commentez la ligne
#POP3AUTH=""
Editer ensuite le fichier authdaemonrc
vi authdaemonrc
Mettez le paramètre
authmodulelist="authuserdb"
Ce dernier permet de dire à Courier que l'authentification des utilisateurs se fait avec userdb.
Normalement il n'y a rien d'autre à faire.
Redémarrez les démons
/etc/init.d/courier-pop restart /etc/init.d/courier-authdaemon restart
Créez une liste d'utilisateur Vous n'allez pas autoriser tout le monde à relever le courrier sur votre serveur. Pour cela vous devez indiquer une liste d'utilisateur avec leur mot de passe. Nous allons utiliser userdb qui est livré en standard et laisse moins de faille de sécurité que mysql par exemple.
Allez dans /etc/courier
cd /etc/courier
Créez le répertoire userdb, pour une raison de sécurité faite un chmod 0 userdb (empeche quelqu'un de lire le contenu)
mkdir userdbchmod 0 userdb
Nous allons construire maintenant notre liste d'utilisateur. Nous allons créer dans le répertoire userdb autant de fichier que
de domaine hébergé sur le serveur. Ces fichiers vont contenir les informations nécessaires.
La commande userdb permet la création de ces fichiers facilement. Disons que vous voulez créer l'utilisateur contact@votredomaine.com, voici la commande à entrer
userdb votredomaine.com/contact@votredomaine.com set mail=/home/vmail/votredomaine.com/contact home=/home/vmail/votredomaine.com/contact uid=5000 gid=5000
Explication de la commande, on créer l'entrée contact@votredomaine.com dans le fichier votredomaine.com avec les paramètres mail et home qui contiennent l'adresse du courrier de cet utilisateur (voir postfix) et le repertoire de base de cet utilisateur. Ensuite pour cette entrée nous créons un mot de passe cryptée en md5. (le mot de passe est cryptée car nous avons défini dans pop3d d'authentifier une connexion avec un mot de passe cryptée)
userdbpw -md5 | userdb votredomaine.com/contact@votredomaine.com set systempw
Le prompt vous demande un mot de passe et une confirmation
Si tout c'est bien passé, un fichier votredomaine.com a été créé dans userdb contenant toute les informations nécessaires.
Si vous avez fini, transformez les fichiers textes en base de donnée par
makeuserdb
Maintenant nous allons tester le fonctionnement du pop
Pour vérifier le fonctionnement de l'authentification, on utilise l'outil courierauthtest
courierauthtest contact@votredomaine.com motdepasse
Réponse du prompt
Authenticated: module authdaemon Home directory: /home/vmail/votredomaine.com/contact UID/GID: 5000/5000 Maildir: /home/vmail/votredomaine.com/contact AUTHADDR=contact@votredomaine.com AUTHFULLNAME=
Maintenant vérifions la connexion pop au serveur
telnet www.votredomaine.com 110 +OK Hello there. USER contact@votredomaine.com +OK Password required. PASS motdepasse +OK logged in. STAT +OK 4 14434 TOP 1 5 +OK headers follow. Return-Path: Delivered-To: contact@votredomaine.com .... QUIT +OK Bye-bye.
Les erreurs possibles Le plus souvent les erreurs se situe dans l'authentification (le paramétrage de courier est simple).
Il faut donc faire marcher l'authentification userdb en testant avec courierauthtest. Ensuite vérifier dans les logs ce qu'il se passe s'il y a des problèmes avec le telnet. Une erreur de type
-ERR Maildir: No such file or directory
est classique d'une mauvaise authentification ou d'un mauvais paramétrage dans l'authentification (mauvais chemin ,etc…)