Monorailcat

Serveur IMAP

icon 03/02/2016 - Comments are closed

J'utilise Gmail sur lequel je redirigeais plusieurs de mes comptes email.
Par contre le fait que Google tente de plus en plus de devenir le "maître du monde" m'a encouragé à utiliser d'autres choses.

Architecture
Le but est d'avoir un client qui va récupérer les emails provenant de tous mes comptes (principalement en IMAP), les filtrer, puis les rendre accessible avec un serveur IMAP (ainsi le client final récupère des emails déjà triés).

Chroot
Comme je ne maîtrise pas complètement la sécurité et que je veux pouvoir changer rapidement le service de machine en cas de soucis, j'ai tout installé avec chroot, avec une Debian Jessie (installée avec debootstrap).
Le montage de /dev n'est pas indispensable, mais /proc est nécessaire pour que Dovecot fonctionne.

Installation du serveur IMAP
Pour l'instant, Dovecot semble le plus documenté et avec une configuration pas trop bordélique.
On commence par installer dovecot et une bibliothèque d'authentification.
apt-get install sasl2-bin dovecot-imapd
On active le daemon SASL en remplaçant START=no par START=yes dans le fichier /etc/default/saslauthd.

Par la suite, il faudra longuement lire et comprendre la doc de Dovecot pour faire ce qu'on veut :
  • Activer SSL ou TLS
  • Choisir la gestion des utilisateurs (système, bases de donnée, fichiers, annuaires)
  • Choisir comment et où héberger les messages (Maildir ou mbox)
Puis tester pas à pas avec telnet ou openssl.

Génération d'un certificat SSL
Une fois SSL activé, Dovecot refusera de s'executer si aucun certificat n'est présent (ou bien s'ils ont expiré).
On doit générer une clé privée :
openssl genrsa -out /etc/dovecot/private/dovecot-chemin-a-rallonge-unique.pem 1024
Puis un certificat publique :
openssl req -new -x509 -key /etc/dovecot/private/dovecot-chemin-a-rallonge-unique.pem -out /etc/dovecot/dovecot.pem -days 730
Le chemin unique permet de légèrement compliquer l'attaque de votre serveur, et les droits en lecture uniquement pour root permettent d'être sûr que personne n'ira lire votre clé privée.

Getmail
Getmail est un script en python qui permet de récupérer les messages de n'importe quel serveur imap vers des fichiers mbox ou un dossier Maildir.
J'utilise un ou deux fichiers de configuration par compte. La plupart des dossiers étant des archives (Drafts, Trash, Sent), il est possible de ne les mettre à jour plus rarement que les autres dossiers (Inbox).

Fetchmail
Comme les serveurs IMAP et POP de hotmail ont l'air de suivre leurs propres standards, Getmail est incapable de récupérer les email chez eux. À la place, j'ai utilisé fetchmail, qui va tout récupérer dans un dossier intermédaire.

Filtrage
On se retrouve avec des dossiers à peu près rangés, d'autres dossiers où la quantité impose un tri automatique, et certains dossiers avec les emails reçus et les emails envoyés mélangés.
Maildirproc permet de faire le tri avec une configuration assez simple.

Automatisation
La récupération est rajoutée dans un script shell executé toutes les heures (job cron).
Le script va d'abord récupérer les emails avec fetchmail et getmail, puis ensuite les filtrer avec maildirproc.

Notes
  • Dovecot ne crée pas de nouveaux dossier si on ne le spécifie pas dans sa conf.
  • Maildirproc ne crée pas de nouveaux dossiers, il faut les créer manuellement avant.
  • Certains caractères (+) doivent être échappés dans les scripts de Maildirproc.
F
Références

icon Tags de l'article :