Solution de serveur de courrier électronique auto-hébergé (partie 2) : Débuter avec Exim4 sous Debian.

Introduction:

Exim4 étant le MTA par défaut officiel de Debian, sa configuration a été revue à la sauce Debian. Avant de commencer, il faut bien retenir qu'un MTA n'est pas un logiciel simple à installer. Déjà, le concept du courrier électronique n'est pas trivial car la chaîne "historique" fait intervenir de nombreux agent (voir mon article sur le sujet). Ensuite, un MTA est modulaire: de nombreux éléments sont à configurer pour de nombreuses utilisations différentes. Vous devez gérer l'authentification des utilisateurs, la sécurité et bien évidemment la manière dont vous gérez le courrier électronique: que garder, que redistribuer, que jeter dans /dev/null ?

Néanmoins, si vous vous hébergez et si vous avez envie d'avoir une adresse de courrier électronique rien qu'à vous que vous gérez à 100%, il faut quand même en passer par là.

Avant de commencer, je vous conseille de lire l'introduction à Exim4 de GNU/Linux Magazine France Hors-Série n°36. Ensuite, vous pouvez lire le fichier /usr/share/doc/exim4/README.Debian.gz (mais il faut installer exim4 avant de le lire). Enfin, la spécification de Exim4 située dans /usr/share/doc/exim4/spec.txt.gz sera d'un grand secours une fois que vous aurez envie d'aller plus loin ou de comprendre en détail ce que vous écrivez dans la configuration.

L'objectif de cette série d'articles est de monter un MTA sur votre serveur de manière à disposer d'un vrai service de courrier électronique sur Internet. A l'issue de ce deuxième article, vous devriez être capable d'installer un serveur Exim4 qui vous permettra de recevoir du courrier électronique, dans des conditions minimalistes.

Installation et configuration initiale:

Sous Debian, le travail d'empaquetage a été bien mené et un simple aptitude install exim4 devrait faire l'affaire. A retenir: Exim4 existe sous deux "formes": le démon "léger" (exim4-daemon-light) qui dispose uniquement de quelques modules et le démon "lourd" (exim4-daemon-heavy) qui vous permet par exemple de gérér l'authentification selon MySQL ou PgSQL, etc... Par défaut, c'est le démon "léger" qui est installé et, ça nous va bien pour débuter.

Pour configurer le MTA, un simple: dpkg-reconfigure exim4-config suffit.

Vous pouvez maintenant répondre aux questions qui vous sont posées par l'interface debconf:

  • Type de configuration : Choisir Distribution directe par SMTP (site Internet), c'est ce que nous voulons faire.
  • Nom de courriel du système : moi j'ai mis mon nom de domaine, à vous de mettre le vôtre (mondomaine.org).
  • Liste d'adresses IP où Exim sera en attente de connexions SMTP entrantes : 127.0.0.1 ; ::1; l'IP de votre serveur
  • Autres destinations dont le courriel doit être accepté : idem, on met le nom du domaine: (mondomaine.org)
  • Domaines à relayer : vide car nous ne relayons pas le courrier électronique
  • Machines à relayer : vide car idem !
  • Faut-il minimiser les requêtes DNS (connexions à la demande) ? : Non dans notre cas, sur une ligne ADSL ce n'est pas un problème.
  • Méthode de distribution du courrier local : Mailbox (pour commencer, c'est plus simple car mutt sait le lire sans aucune configuration).
  • Faut-il séparer la configuration dans plusieurs fichiers ?: Oui, c'est recommandé car le fichier de configuration monolithique est vraiment long à lire.

Ensuite, si vous êtes sur un réseau NATé (votre serveur de courrier électronique est situé derrière un routeur), il vous faudra effectuer une redirection de ports du port 25 de votre passerelle Internet vers le port 25 de votre serveur.

Après cette étape, et compte-tenu de l'ouverture de ce port 25, vous avez maintenant un vrai serveur de courrier électronique qui fonctionne. La configuration de base vous permet de recevoir des emails sur les comptes utilisateurs. Si vous avez un utilisateur toto, il peut donc recevoir du courrier sur l'adresse toto@mondomaine.org. Le courrier sera directement distribué dans son répertoire email au format mbox. S'il lance mutt sans configuration, il pourra lire ces messages. De plus, cet utilisateur pourra envoyer avec son MUA préféré (mutt ou la commande mail ou mailx ou directement avec la commande sendmail), uniquement en ayant un shell (ou une session graphique) depuis le serveur de courrier électronique, avec cette adresse email. Cette configuration par défaut est certes simple, mais elle est également efficace: le serveur n'est pas un relais ouvert (envoi uniquement depuis la machine du serveur) et l'envoi de messages électroniques sur les comptes systèmes est rerouté par défaut.

Ainsi, il dispose d'un service de courrier électronique qui respecte la chaîne historique telle que décrite dans l'article précédent. C'est un bon début et l'effort n'a pas été trop important: il a fallu répondre à une dizaine de question ! Les développeurs Debian ont donc bien travaillé pour nous et ce qui semblait être une usine à gaz (exim4 l'est vraiment) nous permet de disposer d'un service utilisable dès maintenant.

Principes de la configuration sous Debian:

En temps normal (c'est à dire si vous compilez Exim depuis les sources), le fichier de configuration d'Exim est différent de celui qui est présenté par Debian. Pour faire simple, Debian implémente un système de macros de configuration:

  • Les réponses aux questions dpkg-reconfigure sont dans un fichier de macros (/etc/exim4/update-exim4.conf.conf)
  • Des macros sont contenues dans des fichiers de macros dans la configuration d'exim4 (/etc/exim4/conf.d)
  • En plus de ces macros, des fichiers de modèle (template) sont situés dans le répertoire de configuration d'exim4 (/etc/exim4/conf.d)
  • Vous appelez la commande update-exim4.conf qui génère à partir des fichiers sus-cités le vrai fichier de configuration d'exim situé dans /var/lib/exim4/config.autogenerated.

Vous pouvez bien entendu modifier les fichiers de modèle directement dans /etc/exim4/conf.d mais, lors de la prochaine mise à jour du paquet dans Debian, on vous demandera si vous voulez installer la version du développeur ou conserver la vôtre. C'est pourquoi, Debian recommande l'utilisation de macros dans des fichiers séparés qui ne seront pas affectés par la mise à jour.

Nous essayerons, dans la mesure du possible, de gérer notre configuration par des macros. Nous allons donc créer le fichier /etc/exim4/conf.d/main/000_localmacros où nous renseignerons les valeurs des macros. Les exemples de configuration de cet article utiliseront cette mécanique.

Pour faire en sorte qu'Exim4 prenne votre nouvelle configuration en compte, il n'y a pas besoin d'appeler la commande update-exim4.conf. En effet, cette dernière ne fait que mettre à jour le fichier dans /var/lib/exim4. Pour que le serveur prenne en compte cette configuration, il faut aussi le redémarrer. Le script init.d d'exim4 inclus un appel à update-exim4.conf. Dans ces conditions, autant redémarrer le serveur avec ce script à chaque modification de configuration.

Gestion de l'enregistrement MX:

En dehors de la configuration d'Exim, vous devez indiquer à ceux qui voudrait vous écrire, le nom FQDN et l'adresse IP de votre serveur de courrier électronique au monde entier. Pour cela, on utilise le DNS en renseignant un enregistrement DNS particulier le champ Mail Exchange (MX). A vous de trouver comment faire pour ajouter cet enregistrement...

Gestion des alias:

Un truc tout bête mais essentiel. Vous disposez d'un compte système nommé toto. On peut lui écrire sur l'adresse toto@mondomaine.org. Néanmoins, pour des raisons de communication, un compte système est souvent peu explicite. Par exemple, l'utilisateur toto qui s'apelle en vérité Didier Lechat désire sans doute disposer d'une adresse didier.lechat@mondomaine.org.

Il suffit d'éditer le fichier /etc/aliases et d'ajouter la ligne:

didier.lechat: toto

Je vous conseille les actions suivantes:

  • Renseigner l'adresse du postmaster: le postmaster est le compte administrateur qui doit être prévenu en cas d'erreur ou de problème sur le serveur de courrier électronique.
  • Renseigner les alias pour les comptes systèmes si ce n'est déjà fait.
  • Ajouter les alias pour les comptes suivants:
    • abuse: pour qu'on puisse signaler les problèmes de réseau.
    • webmaster: l'adresse de contact de base pour votre site web.

Pour plus d'informations sur les alias de courrier électronique, vous pouvez lire la documentation de etc-aliases (man etc-aliases).

Gestion de la taille des messages:

La spécification SMTP SIZE permet au serveur d'indiquer la taille maximale totale d'un message reçu ou envoyé. Ainsi, le client qui veut envoyer un email trop gros pourra l'indiquer à l'utilisateur avant que celui-ci n'envoie tout le message au serveur et que ce dernier indique qu'il est trop gros.

La configuration par défaut d'Exim4 implémente l'extension SIZE. Un simple telnet localhost 25 suivi d'un EHLO test, donne le résultat suivant:

220 top.serveur.exim4 ESMTP Exim 4.72 Fri, 06 May 2011 10:11:14 +0200
EHLO World
250-top.serveur.exim4 Hello localhost [127.0.0.1]
250-SIZE 52428800
250-PIPELINING
250 HELP

La taille après 250-SIZE est exprimée en octets. Donc par défaut, 50Mo ce qui est pas mal. Si vous désirez modifier cette taille, vous devez modifier la macro MESSAGE_SIZE_LIMIT. Par exemple, pour limiter la taille totale du message à 30Mo (soit 31457280), il suffit d'ajouter la ligne suivante dans /etc/exim4/conf.d/main/000_localmacros :

MESSAGE_SIZE_LIMIT = 31457280

Au redémarrage d'Exim, la configuration est prise en compte et voici ce qu'il indique:

EHLO world
250-top.serveur.exim4 Hello localhost [127.0.0.1]
250-SIZE 31457280
250-PIPELINING
250 HELP

Conclusion

Avec ces quelques instructions, vous pouvez avoir un vrai MTA à peu près configuré correctement et qui vous permet de recevoir du courrier électronique. La prochaine fois, nous parlerons de chiffrement, d'authentification avant de rentrer plus en détails dans le coeur de configuration d'Exim4. Enfin, il nous reste à travailler sur le reste: mise en place d'un serveur IMAP, gestion basique du SPAM, pourquoi pas un webmail, etc...