bouil.org

vendredi 11 décembre 2009

Installer un serveur IMAP avec Dovecot, Postfix et Fetchmail

Installer postfix. Cela fonctionne aussi avec d'autres serveurs de courriel, mais je détaille uniquement pour Postfix.

Par choix personnel, je préfère utiliser le format Maildir afin de conserver mes courriels. Chaque courriel sera alors dans un fichier propre, contrairement au format mbox avec lequel chaque dossier (contenant souvent plusieurs centaines de courriels) est un fichier de plusieurs Mo. Pour configurer ainsi Postfix, modifier alors le fichier /etc/postfix/main.cf pour ajouter :

home_mailbox = Courriel/

Le "/" final indique à Postfix que l'on veut utiliser le format Maildir. Les courriels seront dont mis dans le repertoire personnel de chaque utilisateur, dans le sous répertoire courriel.

Redémarrer Postfix. Assurez vous que le répertoire ~/Courriel existe, avec les droits d'écriture pour votre utilisateur. Afin de créer la structure du Maildir, s'envoyer un courriel :

$ mail nom_utilisateur
Subject: Creation de la boite <entrée>
Voila qui est fait <ctrl+D>
Cc: <entree>
$

Si on liste le contenu de ~/Courriel, apparait alors :

$ ls -F ~/Courriel/
cur/  new/  tmp/
$

Installer dovecot-imapd. C'est un très bon serveur IMAP, qui est configurable facilement (contrairement à uw-imapd). Il suffit ensuite de modifier la configuration pour indiquer à Dovecot où il doit chercher les courriels. Dans le fichier /etc/dovecot.conf, chercher default_mail_env et indiquer à la suite des exemples donnés :

default_mail_env = maildir:/home/%u/Courriel/

Si vous avez conservé le format mbox, il suffit d'adapter la configuration à votre cas, dovecot pouvant également accéder à une boite au format mbox.

Redémarrez dovecot. Vous pouvez ensuite tester avec Mozilla Thunderbird, KMail ou évolution votre accès au serveur IMAP. Vous pouvez utiliser IMAP/SSL pour plus de sécurité.

Il s'agit ensuite de récupérer les courriels distants de votre éventuel fournisseur si vous ne faites pas vous même serveur pour vos courriels. Pour cela, installez fetchmail. Vous pouvez également installer fechtmailconf pour vous aider lors de la configuration de fetchmail. Fetchmail va se charger de récupérer vos courriels par POP3 ou POP3/SSL et va les transférer à Postfix. Créez vous un fichier ~/.fetchmailrc qui va ressembler à ceci :

# Configuration created Wed Apr  7 23:12:15 2004 by fetchmailconf
set postmaster "bouil"
set bouncemail
set no spambounce
set properties ""
poll pop.ouvaton.org with proto POP3 and options tracepolls
      user 'mon_login_POP' there with password 'VOTRE_MOT_DE_PASSE' is 'mon_login_LOCAL' here options fetchall ssl
poll mail.altern.org with proto POP3 and options tracepolls
      user 'mon_login_POP' there with password 'VOTRE_MOT_DE_PASSE' is 'mon_login_LOCAL' here options fetchall

Donc, on relève ici deux boites, la première en SSL (option ssl à la fin de la ligne), l'autre sans SSL. Les courriels seront dans les deux cas transmis dans la boite de l'utilsateur local.

Lancez ensuite fetchmail à ma main, et vérifiez ainsi que la configuration de fetchmail est correcte. Creez ensuite une tache planifiée afin de faire executer fetchmail de manière régulière, automatiquement. Éditez pour cela votre fichier crontab personnel :

$ crontab -e

et ajouter une ligne ressemblant à cela :

# m h dom mon dow user  command
 */5 * * * * fetchmail >/dev/null 2>&1

Ceci executera fetchmail toutes les 5 minutes. Les erreurs eventuelles de fetchmail (erreur de résolution de noms, connexion perdue, etc...) seront poubellisées, au lieu de vous être envoyées par courriel (mécanisme classique de cron).

N'oubliez pas, le cas échéant, d'autoriser IMAP en entrée au niveau de votre pare-feu.

Utilisation de procmail pour filter les mails

Dans le fichier postfix/main.cf, ne pas définir

home_mailbox = Courriel/
mais ajouter la ligne suivante :

mailbox_command = procmail -a "$EXTENSION"

Dans votre répertoire personnel, créer un fichier .procmailrc

SHELL=/bin/sh
PMDIR=$HOME/Procmail
LOGFILE=$PMDIR/pm.log
MAILDIR=$HOME/Courriel/
DEFAULT=$MAILDIR

INCLUDERC=$PMDIR/rc.subscription

Comme on a mis l'option tracepolls à fetchmail plus haut, on va pouvoir mettre les mails dans un répertoire différent en fonction de la boite d'origine. On peut filter par expéditeur, liste de diffusion, etc..

Créer donc le fichier

~/Procmail/rc.subscription
.

# Les messages du credit mutuel
:0:
* ^From:.*creditmutuel.fr.*
.INBOX.Banque/

# Tapestry Mailing List
:0:
* ^List-Id: .*tapestry.*$
.INBOX.Tapestry/

:0:
* ^X-fetchmailtracepoll: ouvaton$
.INBOX.Ouvaton/

blog comments powered by Disqus