Solution de serveur de courrier électronique auto-hébergé (partie 7) : Concentrer l'information.

Comme de nombreuses personnes, je dispose de plusieurs adresses de courrier électronique. Vous le savez, jongler d'un compte à l'autre est pénible, même avec Mutt. Il existe néanmoins un "truc" qui existe sans doute depuis que le courrier électronique est né: les outils de concentration et de tri. Ces derniers permettent de récupérer des messages depuis de nombreux comptes, sur des machines différentes et d'appliquer des traitements dessus. Parmi ces traitements, il y a évidemment la copie dans un répertoire Maildir.

Je suis sûr que vous avez déjà entendu parler de tels outils: fetchmail et procmail en font partie. En ce qui me concerne, je n'avais pas envie de me mettre à ces deux outils qui sont très puissants mais qui dépassent largement mes moyens. Néanmoins, mes regards ont été attirés par fdm pour plusieurs raisons:

  • Il est très léger et il occupe très peu de place.
  • Il n'est pas en Python ou en Ruby (ce n'est pas un script) et semble robuste.
  • Il fait tout ce dont j'ai besoin (imaps et écriture dans un maildir).

Installation et configuration:

L'installation est très simple: aptitude install fdm. Il dispose de peu de dépendances et normalement, seul le paquet fdm et la libtdb seront installés. En version armel, il occupe environ 440Ko ce qui est vraiment minime.

Le fichier de configuration est personnel et il est situé dans \~/.fdm.conf. Cette configuration par utilisateur est tout à fait normale: la gestion du courrier électronique n'est-elle pas une activité purement privée qui ne concerne que l'utilisateur et non l'administrateur (dans un mesure moindre) ? Par défaut sous Debian, il n'y a pas de fichier central de configuration, normalement situé dans /etc/fdm.conf. Sachant que fdm travaille au niveau de l'utilisateur, autant tout mettre dans le répertoire home !

Ce fichier de configuration est assez complexe à mettre en oeuvre car fdm peut servir à faire de nombreuses choses comme des tris automatiques, des vérifications de spams, d'antivirus, etc... Notre cas d'utilisation est plus simple.

fdm exploite plusieurs "concepts" qu'il faut comprendre avant de se lancer dans la configuration:

  • Les comptes (mot-clef account) qui permettent de récupérer les emails depuis un serveur externe ou un pipe.
  • Les actions (mot-clef action) sont des commandes qui effectuent des traitements sur les messages (suppression, modifications d'en-tête, stockage dans un répertoire, etc...).
  • Les règles (mot-clef match) qui se chargent de lancer les actions sur les messages répondants à la règle.

Globalement, l'action de fdm suit le déroulement suivant:

  • Récupération des messages depuis les comptes décrits.
  • Chaque message se voit assigné une étiquette (tag) qui indique ses caractéristiques (compte, date, etc...).
  • Les règles sont vérifiées sur chacun des messages.
  • Lorsqu'une règle correspond, une action spécifique est lancée sur le message.

Voici un fichier de configuration simpliste pour mieux comprendre:

# Fichier simple de configuration de fdm
# Récupération depuis un compte POPS GMail et envoi
# dans une maildir spécifique

# Définition du compte (il sera référencé comme gmail):
account "gmail" pop3s server "pop.googlemail.com" port 995 
        user "jean.nemard@gmail.com" pass "my_true_password"

# Définition de l'action de stockage dans le bon répertoire maildir:
# Elle sera référencée comme gmailbox
action "gmailbox" maildir "%h/Maildir/.Gmail.inbox"

# Règle pour balancer les emails GMail dans le répertoire
match account "gmail" action "gmailbox"

Attention, ce fichier simpliste videra les messages de votre répertoire Inbox de GMail ! Mais, si vous désirez vous en passer, autant passer par là !

Dernière précision: les droits d'accès ! Fdm est pointilleux: il vous indique lorsque les fichiers sont en lecture par tout le monde. Pour éviter de pourrir trop vos logs, vous devez modifier les droits d'accès du fichier de configuration et des répertoires de Maildir:

chmod 600 ~/.fdm.conf
chmod -R 700 ~/Maildir/

Lancement automatique:

Pour lancer fdm, vous devez indiquer une commande sur les trois suivantes:

  • fetch: lance vraiment l'action de récupération des emails.
  • poll: indique combien de messages vont être traités
  • cache: permet de manipuler le cache.

Ainsi, si vous désirez lancer manuellement fmd, vous devez lancer la commande fdm fetch pour que l'action se lance vraiment.

Après vérification du bon fonctionnement de votre configuration, vous pouvez programmer une crontab:

# Activation de FDM toutes les heures tous les jours:
0 * * * *       /usr/bin/fdm fetch >/dev/null 2>&1

Conclusion:

Voici, rapidement, comment concentrer son courrier électronique dans une seule arborescence Maildir. FDM est vraiment bien pour cette action: il est léger mais puissant. On peut bien entendu aller plus loin avec. La documentation de cet outil se révèlera, dans ce cas, une précieuse alliée.