1. Page d'accueil
  2. Tutoriaux

Gestion centralisée de différentes boites emails.

Gestion centralisée de différentes boites emails.

Le 25-06-2006 à 19:45 par Nicolas L.. Dans Configurations et Tutoriaux

Nombre de commentaires : 0

Cet article a pour but de présenter le système de gestion de mail que j’ai mis en place sur ma machine perso. La problématique est la suivante : je possède un nombre croissant d’adresses emails sur différents serveurs (laposte, serveur perso, emails de mes différents sites, …). N’étant pas tout le temps connecté sur mon poste où mon thunderbird gérait toutes ces boites, je voulais disposer d’un système permettant de consulter toutes ces boites mails dans un webmail unique ou avec mon client graphique préféré. Je voulais que ce système me permette d’avoir un dossier par boite email afin de ne pas avoir les mails des différentes boites mélangés.

Le système mis en place permet de :

  • récupérer le contenu des différentes boites mails,
  • rajouter des filtres afin de trier ses mails en fonction des différentes boites emails rapatriées,
  • filtrer les spams,
  • mettre à disposition les mails sur un serveur imap.

Les outils utilisés sont les suivants : exim, fetchmail, procmail, spamassassin et courier-imap.

Mise en place du système

Installer et configurer le MTA

J’ai utilisé exim4 qui est fournit par défaut avec ma debian. Le système de mail présenté est ouovert et exim est un choix personnel que j’ai fait, le tutoriel fonctionnerai très bien avec postfix. Il faut configurer exim4 correctement, chose qui se fait très facilement grâce au paquet exim4-config :

 dpkg-reconfigure exim4-config

Voici les réponses importantes que j’ai fournies :

  • Faut-il séparer la configuration dans plusieurs fichiers ? : oui
  • Type de configuration : Distribution directe par SMTP (site Internet)
  • Nom de courriel du système : mondomaine.tld

On a désormais un MTA capable de relayer le courier aux utilisateurs locaux. Il fait également office de serveur stmp pour envoyer les mails vers l’extérieur.

Récupérer le contenu des différentes boites mails

La deuxième étape est de rapatrier le contenu des différentes boites mails que l’on souhaite centraliser et de les renvoyer au MTA. J’ai pour celà utiliser fetchmail qui est fait pour cette mission.

Installation de fetchmail
 aptitude install fetchmail

Dès l’installation du package, il vous demande : Faut-il installer un service fetchmail pour tout le système ?. Répondez Non.

Configuration de fetchmail

Ensuite, créer un fichier de configuration pour fetchmail :

touch ~/.fetchmailrc
chmod 600 ~/.fetchmailrc

Le fichier doit posséder les permissions 600 sinon fetchmail refusera de s’exécuter. Voici le contenu de mon fichier .fetchmailrc afin de vous aider à la configuration :

# Configuration created Sat Mar 11 11:52:47 2000 by fetchmailconf
# le postmaster c'est postmaster ;),
# en fait dans /etc/aliases, il y a un alias : postmaster -> root
set postmaster "postmaster"
# pour que les erreurs de distributions aillent  l'envoyeur :
set bouncemail
set properties ""

#set logfile /var/log/fetchmail.log

poll pop.laposte.net
protocol pop3
username "lassalle.nicolas"
password "thepass"

poll pop.domaine.net
protocol pop3 
username "root@domaine.net"
password "thepass"

Avant de rapatrier les messages, il faut indiquer à fetchmail de forwarder les mails à procmail sans passer par le MTA et sans modifier les entêtes du message reçu. Pour cela, créer le fichier ~/.forward et y placer le contenu suivant :

|/usr/bin/procmail

Pour rapatrier les mails depuis les serveurs distants, il n’y a plus qu’à lancer la commande :

fetchmail

Installer le serveur imap

Pour mes besoins j’ai choisit d’utiliser le serveur imap courier-imap. En effet, celui gère chaque dossier imap comme un dossier de type mdir. Et c’est exactement ce dont a besoin procmail pour trier les mails. Procmail permet de placer un mail suivant des filtres dans un dossier mdir, toute l’astuce du système mis en place repose sur cette fonctionnalité. Installation de courier-imap :

aptitude install courier-imap

Il n’y a ensuite rien à modifier, courier-imap est prêt à l’utilisation par les utilisateurs du système. J’ai cependant modifié un petit peu la configuration de l’emplacement de destination des mails afin qu’ils soient placés dans le dossier ~/mail . Pour cela, éditer le fichier /etc/courier/imapd . Modifier la constante MAILDIRPATH afin qu’elle ressemble à ceci :

MAILDIRPATH=mail
Création du dossier imap

Chaque utilisateur doit créer un dossier mdir dans ~/mail afin que courier-imap puisse y lire les messages. Cela ce fait grâce à la commande maildirmake.courier :

maildirmake.courier ~/mail
maildirmake.courier ~/mail/.inbox

On va aussi créer des sous dossiers pour chacun de nos comptes :

maildirmake.courier ~/mail/.compteLaPoste
maildirmake.courier ~/mail/.compteDomaine

J’ai également créé les dossiers imap suivants afin de gérer les spams :

maildirmake.courier ~/mail/.SPAM
maildirmake.courier ~/mail/.notSpam
maildirmake.courier ~/mail/.toSpam

Trier et filtrer les mails dans des dossiers imap

Il ne reste maintenant qu’à filtrer les spams et à trier les mails dans les dossiers imap. L’outil chargé de cette tache est procmail qui permet de placer des messages dans des dossiers différents en suivant des règles de filrages. L’outil pour supprimer les spams est spamassassin. Pour installer ces outils :

aptitude install procmail spamassassin

Pour configurer procmail il suffit maintenant de créer le fichier ~/.procmailrc . Vous pouvez vous inspirer de mon fichier .procmailrc :

# caractère verbeux de procmail ; mettre 'yes' permet d'avoir des messages
# supplémentaires
VERBOSE=yes

# pas obligatoire : procmail détermine votre nom de login tout seul, mais pour
# l'exemple on supposera que l'utilisateur s'appelle 'nicolas'
LOGNAME=nicolas

# mettre /bin/sh surtout si vous utilisez tcsh !
SHELL=/bin/sh

# chemin d'accès aux excutables ; en mettre le minimum, pour n'accéder qu'aux
# programmes indiqus dans le fichier de configuration
PATH=/bin:/usr/bin:/usr/local/bin:/home/nicolas/bin

# rpertoire o seront stocks les mails ; s'assurer que votre MUA sait y
# accder aussi
MAILDIR=/home/nicolas/mail

# si procmail n'arrive pas  dlivrer le courrier, cette bote sera utilise
# en dernier ressort : il vaut mieux dfinir cette variable !
ORGMAIL=$MAILDIR/.emergency-inbox

# bote de rception par dfaut
DEFAULT=/var/mail/nicolas

# fichier de log de procmail ; si vous dfinissez cette variable,
# procmail gardera une trace de son excution dans le fichier
# indiqu.  consulter priodiquement !

# Utilisation de SPAMASSASSIN, qui rajoute un header X-Spam-Status:
:0fw
| spamassassin -P
  
# Les mails considérés par spamassassin comme tant du spam vont dans
# la mailbox "spam"
:0
* ^X-Spam-Status: Yes
.SPAM/
      
# Les mails de lassalle.nicolas
* ^(To|Cc|Cci).*(lassalle.nicolas _at_ laposte.net)
.compteLaPoste/

# Les mails de domaine
* ^(To|Cc|Cci).*(root@domaine.net)
.compteDomaine/
  
# Tout ce qui n'a pas t tri jusqu'ici va dans la mailbox principale "inbox"
:0
.inbox/

NB: il faut bien faire attention au nom du dossier dans lequel on place les mails avec procmail, le nom du dossier doit impérativement commencer par un . et finir par un /

Finalisation

Vous avez remarquer que lors de la création des dossiers imap, j’ai créé 3 dossiers pour les spams :

  • .SPAM/ : remplit automatiquement par spamassassin
  • .toSpam/ : placez ici les mails non filtrés par spamassassin
  • .notSpam/ : placer ici les mails filtrés par spamassassin alors que ce ne sont pas des spams

Ensuite j’ai créé des taches crontab afin d’éduquer spamassassin. Lancer la commande crontab -e et placez y les lignes suivantes :

0 11 * * * sa-learn --spam ~/mail/.toSpam/cur/
0 11 * * * sa-learn --ham ~/mail/.notSpam/cur/

Ainsi tous les jours à 11 heures, je dis à spamassassin les choses suivantes :

  • ce qui est dans .toSpam/ sont des spams que tu n’a pas filtré
  • ce qui est dans .notSpam/ sont des mails que tu a filtré alors que ce ne sont pas des spams

Importer les mails à partir de fichiers mbox (Mozilla Thunderbird, et surement d’autres)

http://perfectmaildir.home-dn.net/

Ajouter un commentaire

 *

* Nécessaire mais ni communiqué, ni affiché.