====== FDM : Récupérer et trier son courrier ======
* Objet : Récupération et tri des mails avec fdm
* Niveau requis : {{tag>débutant avisé}}
* Commentaires : //Vous récupérez vos mails sur votre système local et souhaitez les trier dans des boîtes mails différentes. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Suivi : {{tag>à-placer}}
* Création par [[user>Thuban]] le 18/12/2012
* Testé par <...> le <...>
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=128718#p128718 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
Bien qu'il existe la possibilité d'utiliser les bulldozer fetchmail et procmail, je vous propose ici une solution plus légère : [[http://fdm.sourceforge.net/|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 [[http://fr.wikipedia.org/wiki/Maildir|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).
===== Ajout des comptes =====
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''
===== fdm le facteur du système =====
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"
===== Définir des actions =====
[[http://fdm.sourceforge.net/|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 [[http://fr.wikipedia.org/wiki/Maildir|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"''
===== Récupérer les mails =====
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"
===== Gestion des spams =====
Pour gérer les spams, je vous conseille [[http://bogofilter.sourceforge.net/faq_fr.shtml|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.
===== Listes de diffusion =====
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 ([[https://fr.wikipedia.org/wiki/Expression_rationnelle|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"
===== Archivage =====
[[http://fdm.sourceforge.net/|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"
===== Récupérer le courrier =====
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
===== Un exemple? =====
Cela fait beaucoup d'un coup. Vous trouverez plusieurs exemples dans ''/usr/share/doc/fdm/examples''.