Bien qu'il existe la possibilité d'utiliser les bulldozer fetchmail et procmail, je vous propose ici une solution plus légère : fdm. À lui tout seul, il peut récupérer vos e-mails, les trier selon le destinataire, l'émetteur, la date, archiver vos mails…
Par la suite, vous serez en mesure de lire vos mails localement, puisqu'ils seront téléchargés dans vos dossiers. Pour cela, on utilise des dossiers appelés Maildir, eux-mêmes composés de sous-dossier cur
, new
et temp
. Pensez donc à créer ces dossiers avant de récupérer vos mails.
L'installation est des plus simple :
apt-get update && apt-get install fdm
Maintenant, on peut le configurer. Pour cela, créez un fichier ~/.fdm.conf
(le '~' représentant votre répertoire utilisateur).
On peut désormais préciser dans le fichier de configuration les comptes e-mail. Cela se fait avec la syntaxe suivante :
account "compte1" imap server "imap.serveur.net" port 143 user "utilisateur" pass "******"
Ce qui est précisé entre guillemets ainsi que le numéro du port est à remplacer selon vos besoins. Sachez que “compte1” est le nom donné à ce compte, pour pouvoir se repérer ensuite dans la configuration.
Il est tout à fait possible de définir plusieurs comptes de cette façon. Attention toutefois, pour les comptes imap ssl, remplacez imap
par imaps
Pour recevoir les mails du système, ajoutez ces lignes au fichier de
configuration ~/.fdm.conf
:
account "stdin" disabled stdin
Puis ceci dans le fichier ~/.forward
, avec les “
:
"|/usr/bin/fdm -m -a stdin fetch"
fdm utilise un système d'“actions” pour traiter vos e-mails. Par exemple, on peut définir une action nommée “inlaposte”, pour déplacer les messages dans le dossier maildir /home/xavier/Maildir/laposte
.
Afin de se simplifier la vie, vous pouvez écrire %h
à la place de /home/utilisateur
, fdm le comprendra.
Voici donc un exemple pour déplacer du courrier dans un dossier précis : action “inlaposte” maildir ”%h/Maildir/laposte“
On va maintenant dire à fdm de placer les courriels destinés à ce compte dans le dossier correspondant. On écrit alors plus bas :
match account "laposte" action "inlaposte"
Pour gérer les spams, je vous conseille bogofilter.
Je vous propose le comportement suivant : un mail arrive, bogofilter vérifie s'il s'agit d'un spam, et si oui, il ajoute un en-tête à ce spam. Ensuite, fdm se charge de placer les éventuels spam dans un dossier prévu à cet effet : ~/Maildir/spam
On définit alors les 2 actions suivantes, qui se chargent de filtrer les spams, et de déplacer dans le dossier spam :
action "antispam" rewrite "bogofilter -u -e -p" action "inspam" maildir "%h/Maildir/spam"
Afin que bogofilter traite les éventuels spams, on va placer 3 autres lignes avant la ligne match account “laposte” action “inlaposte”
:
# Tout passe par l'antispam match all action "antispam" continue match "^X-Spam-Status: Yes" in headers action "inspam" match "^X-Bogosity: Yes" in headers action "inspam"
Ces trois lignes font passer tous (all) les mails à l'action antispam, puis continue. Ensuite, on vérifie sir dans les en-têtes des mails (headers) sont présentes les lignes X-Spam-Status: Yes
et X-Bogosity: Yes
témoignant de la nature spam du mail. Si oui, alors ce mail est passé à l'action “inspam”, et placé dans le dossier des spams.
De la même façon, on peut placer les mails destinés à une liste de diffusion dans un dossier à part. Cela se passe avec des expressions régulières (regexp) qui peuvent être trouvées dans le header ou le corps (body) du message :
match "^(From|Cc|To|List-Id).*@suckless\\.org" in headers action "suckless"
fdm peut apparement archiver les mails plus vieux de n jours. Voici ce que l'on ajoute dans le fichier de configuration pour ce faire :
%max_age = 30 action "keep" keep action "archive" mbox "$h/Maildir/archive/%[maildir]-%yq%Q" compress account "archive" disabled maildirs { "%h/Maildir/laposte/" } match account "archive" and age > %{max_age} days action "archive" match account "archive" action "keep"
Pour récupérer le courrier, lancez la commande fdm fetch
. Pour faire vos essai, rajoutez l'option -k
afin de laisser les messages sur le serveur.
Si vous souhaitez que fdm récupère vos messages toutes les 5 minutes, tapez crontab -e
, puis ajoutez cette ligne :
*/5 * * * * fdm fetch >> $HOME/Maildir/fdm.log
Cela fait beaucoup d'un coup. Vous trouverez plusieurs exemples dans /usr/share/doc/fdm/examples
.