Installer un serveur IMAP avec uw-imap
Auteur : Olivier BOYER - oboyer () ajoute ! org
Mots clés
NetBSD, imap, imaps, pop, pop3, ssl, cram-md5
Introduction
Ce document décrit comment installer un mail pop3, et imap sur un système NetBSD 1.6.x et 2.x.
Le produit est disponible à l'adresse : http://www.washington.edu/imap/
Ce document utilise la version : imap-2004a
Présentation de la maquette
Le système de packages de NetBSD propose l'installation de uw-imap.
Cependant, nous n'allons pas utiliser l'arbre des packages pour installer ce produit. Nous le compilerons depuis les sources.
Voici les choix de configuration retenus :
- Utilisation de mots de passe en clair sur SSL.
- Utilisation d'une base password différente de
/etc/passwd
Note
Toutes les commandes présentées ici, sont à executer, sauf mention contraire, en tant qu'administrateur de la machine.
Pré-requis
Ce document suppose qu'OpenSSL est déjà installé sur la machine
Compilation de uw-imap
Obtenir les sources
Elles sont disponibles sur le site de l'Université de Washington : http://www.washington.edu/imap/
Pour le téléchargement : ftp://ftp.cac.washington.edu/mail/imap.tar.Z
La version utlisée dans ce document est : imap-2004a
Support cram-md5
Présentation
Le fichier /etc/cram-md5.pwd contient la base de mots de passe en CLAIR pour les services POP et IMAP. Il est utilisé pour les authentifications APOP ou CRAM-MD5.
Si ce fichier existe lors de la compilation de uw-imap, alors le produit authentifiera les utilisateurs via ce fichier, et non pas via /etc/passwd (ou NIS, LDAP), que l'on utilise ou non l'APOP, MD5-CRAM.
Ainsi, la présence du fichier /etc/cram-md5.pwd permet d'utiliser des mots de passe pour les services mail différents de ceux utilisés pour le login sur la machine.
Le format du fichier est très simple. Il est contient une série de lignes de text, représentant le nom UNIX de l'utilisateur, suivi d'une tabulation, et du mot de passe en CLAIR. Une ligne commencant par le caractère '#' est un commentaire, et est ignorée.
Voici un exemple de fichier /etc/cram-md5.pwd :
# CRAM-MD5 authentication database # Entries are in form <user><tab><password> # Lines starting with "#" are comments bill hubba-hubba monica beret kenstarr inquisitor
Chaque entrée dans le fichier /etc/cram-md5.pwd DOIT correspondre à une entrée dans la base password du système (/etc/passwd ou map NIS, LDAP). En effet, uw-imap ne consulte que les entrees : UID, GID et HOMEDIR. Cette entrée dans la base password peut-etre désactivée (compte verouillé, ou shell à /bin/false).
Il est FORTEMENT conseillé que le mot de passe dans /etc/cram-md5.pwd diffère de celui de la base password.
Créer le fichier /etc/cram-md5.pwd
Ce fichier sera lu par les daemons uw-imap (pop, pops, imap, imaps) durant la phase d'authentification de l'utilisateur. Ces daemons tournent en tant qu'utilisateur root. Donc, seul root doit avoir accès à ce fichier.
# touch /etc/cram-md5.pwd # chown root:wheel /etc/cram-md5.pwd # chmod 600 /etc/cram-md5.pwd
Configuration de OpenSSL
Editer le fichier src/osdep/unix/Makefile et vérifier que les paramètres SSL sont corrects. Voici un exemple, ou OpenSSL est installé dans /usr/local/ssl.
# Extended flags needed for SSL. You may need to modify.
SSLDIR=/usr/pkg
SSLCERTS=/etc/openssl/certs
SSLKEYS=$(SSLCERTS)
SSLINCLUDE=${SSLDIR}/include
SSLLIB=${SSLDIR}/lib
Compilation
Décompresser les sources
# cd /tmp # tar xvzf imap.tar.Z # cd /tmp/imap-2004a
Choisir la bonne plateforme
A la racine des sources, éditer le fichier Makefile. Il contient la liste des plateformes supportées par uw-imap. Pour un système NetBSD, choisir : 'neb'
Lancer la compilation
# cd /tmp/imap-2004a # make neb
Installation de uw-imap
Copier les binaires
# cd /tmp/imap-2004a # make install
Générer le certificat SSL
Générer une clef RSA
# openssl genrsa -out privkey.pem 4096
Généré un certificat serveur auto-signé
# openssl req -new -x509 -key privkey.pem -out imapd.pem -days 3650 Using configuration from /etc/openssl/openssl.cnf You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Haute-Garonne Locality Name (eg, city) []:Toulouse Organization Name (eg, company) [Internet Widgits Pty Ltd]:Leaves Networks Ltd Organizational Unit Name (eg, section) []:leaves.org Common Name (eg, YOUR name) []:mail.leaves.org Email Address []:postmaster@leaves.org
Modifier le fichier /etc/inetd.conf
Les daemons d'uw-imap ne fonctionnent pas seuls. Il utilisent le super daemon inetd pour attendre les requêtes entrantes. Modifiez comme suit le fichier /etc/inetd.conf
pop stream tcp nowait root /usr/local/uw-imap/ipop2d ipop2d pop3 stream tcp nowait root /usr/local/uw-imap/ipop3d ipop3d pop3s stream tcp nowait root /usr/local/uw-imap/ipop3d ipop3d imap stream tcp nowait root /usr/local/uw-imap/imapd imapd imaps stream tcp nowait root /usr/local/uw-imap/imapd imapd
Modifier le fichier /etc/services
Ajoutez, si necessaire, les lignes suivantes au fichier /etc/services :
pop2 109/tcp # Post Office Protocol - V2 pop3 110/tcp # Post Office Protocol - V3 pop3s 995/tcp # Post Office Protocol - V3 over SSL imap 143/tcp # Internet Mail Access Protocol imaps 993/tcp # Internet Mail Access Protocol over SSL
Relancer inetd
# kill -HUP `cat /var/run/inetd.pid`