Configuration d'un serveur mail privé

Ce document décrit l'installation et la configuration d'un serveur mail privé. Il récupère les e-mails de mes différentes adresses par POP3 et les dépose dans une boîte aux lettres locale, accessible en IMAP4 et par webmail.

Environnement

Le tout est installé sur mon serveur (Debian Etch); cela guide donc certains choix en fonction de ce qui est déjà installé ou peut l'être par aptitude. En l'occurence, je dispose déjà d'un Exim 4 et d'un Apache 2 avec PHP installés.

Configuration d'Exim

Exim ne pourra pas recevoir les e-mails de l'extérieur, ni en envoyer directement puisque les providers ont l'habitude de bloquer le port 25 et donc les serveurs mails privés. Il faut donc le configurer en conséquence. Par contre, il pourra recevoir et relayer des e-mails depuis mon réseau interne, évitant ainsi aux notifications e-mails de mes backups de quitter mon réseau. Le serveur est mon routeur; il a ainsi une adresse sur mon réseau privé (192.168.128.1) et une adresse théoriquement dynamique sur Internet.

Taper dpkg-reconfigure exim4-config et répondre comme suit aux questions:

Type de configuration:
Envoi via relais ("smarthost") - réception SMTP ou fetchmail
Nom de courriel du système:
debona.dyndns.org
Liste d'adresses où Exim sera en attente de connexions SMTP entrantes:
127.0.0.1;192.168.128.1
Autres destinations dont le courriel doit être accepté:
debona.dyndns.org;espresso
Machines à relayer
192.168.128.0/24
Nom réseau ou adresse IP du système "smarthost":
mail.teledisnet.be
Méthode de distribution du courrier local
Format "Maildir" dans le répertoire de base (home)

La limitation des adresses me permet de ne faire écouter le serveur que là où j'en ai besoin et où les réseaux sont sûrs. Je lui indique de déposer dans les boîtes locales le courrier vers les adresses *@debona.dyndns.org et *@espresso (le nom du serveur), et d'envoyer le reste vers le relais de mon provider. Le format de boîte aux lettres Maildir stocke chaque e-mail dans un fichier distinct. Il y a des avantages et inconvénients par rapport au format mbox (tous les e-mails dans un seul fichier), mais ce qui m'intéresse est:

On peut alors tester le comportement d'Exim en configurant un ordinateur du réseau pour utiliser ce serveur en tant que relais, et envoyer un e-mail vers Internet et un utilisateur du serveur.

Installation de Dovecot

Dovecot est un serveur IMAP sécurisé et performant, tout en restant simple à configurer. On l'installe par la commande aptitude install dovecot-imapd. Ensuite, il faut le configurer en éditant le fichier /etc/dovecot/dovecot.conf, où il faut ajouter des lignes protocols = imap, mail_location = maildir:~/Maildir et disable_plaintext_auth = no. Pour finir, redémarrer Dovecot: /etc/init.d/dovecot restart.

A ce point, on peut configurer un client IMAP (ex: Thunderbird) dans le réseau local et le faire pointer vers ce serveur. L'authentification est la même que pour le système (login et mot de passe).

Installation d'un webmail

Installer les paquets squirrelmail et squirellmail-locales et l'activer en incluant le fichier /etc/squirrelmail.apache.conf dans la config d'apache (lien dans /etc/apache2/conf.d ou inclusion par une directive include). La configuration par défaut de ce fichier rend squirrelmail accessible dans le sous-répertoire squirrelmail du serveur.

Récupération des e-mails

Pour récupérer les e-mails d'une boîte extérieure et les ajouter dans ma boîte aux lettres locale, on peut utiliser le classique fetchmail, contenu dans le package du même nom. Une fois installé, activer le daemon dans le fichier /etc/default/fetchmail. Créer aussi le fichier /etc/fetchmailrc, lui donner les permissions 600 et y entrer les informations des comptes à rapatrier.

Le fichier /etc/fetchmailrc dont contenir les lignes suivantes pour récupérer les e-mails (en POP3):

poll mail.mon_provider.net with protocol pop3
  user mon_login there is julien here password "mon_mot_de_passe" keep;

Les infos de login sont celles de la boîte aux lettres à télécharger; julien est le nom de ma boîte locale. L'option keep permet de laisser les mails sur le serveur (pratique à titre temporaire).

Cryptage des communications

Je veux pouvoir accéder facilement à mon mail depuis l'extérieur, sans pour autant laisser passer mon mot de passe en clair. En IMAP, je devrai donc utiliser la variante sécurisée IMAPS, et pour le webmail, je devrai configurer Apache pour servir le webmail en HTTPS.

Apache 2 et HTTPS

Tout d'abord, installer le package libapache2-mod-ssl (pour Apache 2 sous Debian), puis créer la clé privée du serveur et un certificat autosigné:

mkdir /etc/apache2/ssl
cd ssl
openssl req -new > server.csr
# Répondre aux questions, en précisant le nom du serveur pour le Common Name
# Retirer le mot de passe; cela permet au serveur de démarrer sans intervention externe
openssl rsa -in privkey.pem -out server.key
# Créer le certificat
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
# Faire le ménage
rm server.csr privkey.pem

Ensuite, ajouter les deux lignes suivantes dans /etc/apache2/mods-available/ssl.conf, et créer des liens vers ce fichier et le fichier ssl.load dans /etc/apache2/mods-enabled

SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Apache est maintenant, après redémarrage, d'utiliser SSL; il reste à configurer où cela doit être fait. Dans ports.conf, ajouter une ligne Listen 443. Ensuite, dans les définitions des virtual hosts, remplacer les occurences de "*" par "*:80. Ajouter un VirtualHost sur *:443 avec la configuration désirée et la ligne SSLEngine on.

S'il y a un firewall, ne pas oublier de laisser passer le trafic entrant sur le port 443, qui est le port par défaut du HTTPS.

Dovecot et IMAPS

L'installation du package Debian est presque complète: il suffit de rajouter imaps à la ligne protocols = .... Les certificat et clé nécessaires sont dans /etc/ssl (répertoires certs et private). Le certificat est autosigné pour localhost, et il est donc avantageux de le remplacer, au moins par un certificat autosigné.

La procédure est la même que pour Apache, sauf qu'il faut copier le certificat (resp. la clé privée) dans /etc/ssl/certs/dovecot.pem (resp. /etc/ssl/private/dovecot.pem).

Et voilà! Mes mails sont accessibles depuis chez moi de manière centralisée.

Julien De Bona - http://debona.dyndns.org - e-mail: julien(chez)bawet(point)org - Jabber: julien@debona.dyndns.org

Valid XHTML 1.0 Strict Valid CSS! Powered by Debian Powered by Linux Powered by Apache Created with Vim