AirV's Blog

Just another blog

Redirection de mail

Désirant utiliser la messagerie gmail, j'ai été confronté au problème de redirection des mails provenant de mes différents comptes (free, yahoo, wanadoo, hotmail, caramail).

La solution à consister à mettre en place le trio fetchmail – procmail – sendmail.
L'installation se déroule sur une Debian Ubuntu Draper sur laquelle nous relevons les emails et les redirigeons sur gmail.
Fetchmail relève le mail, Procmail le filtre c'est à dire le range là o๠il faut, et le client mail permettra de le lire sur gmail. Sendmail servant dans l'envoi des mailsà proprement parlé.

Sommaire

  • Fetchmail
  • Procmail
  • Relève automatique avec Fetchmail
  • Filtrer avec Procmail
  • Lutter contre le spam
  • Liens utiles

 

2. Fetchmail

Réunissez les informations de base, il vous faut :

  • Votre login sur votre machine
  • L'url du serveur de mail
  • Le login de la boite aux lettres
  • Le mot de passe de cette boîte aux lettres

Nous pouvons installer fetchmail par Synaptic.
Fetchmail installé il faut créer son fichier de configuration, .fetchmailrc doit se trouver dans le répertoire $HOME de l'utilisateur. Nous allons éditer ce fichier et y placer les lignes suivantes:

$ vi ~/.fetchmailrc poll pop3.free.fr with protocol pop3 username 'hozec' there with password 'toto10' poll pop.mail.yahoo.fr with protocol pop3 username 'hozec' there with password 'toto10' poll pop.wanadoo.fr with protocol pop3 username 'herve' there with password 'toto10'

Il faut donner les droits corrects sur ce fichier :

$ chmod 600 ~/.fetchmailrc

Testons que cela fonctionne avec la commande : fetchmail -c (aucune relève ne sera effectuée)

pcroze $ fetchmail -c 13 messages pour hrozec dans pop3.free.fr (54502 octets).

3. Procmail

Nous pouvons installer procmail par Synaptic.
Puis création du fichier de configuration de procmail, dans le répertoire $HOME de l'utilisateur, ~/.procmailrc comme suit :

SHELL=/bin/sh MAILDIR=$HOME/mail DEFAULT=$HOME/mail/inbox/. LOGFILE=$HOME/.procmaillog VERBOSE=yes

La ligne MAILDIR indique le repertoire parent contenant le mail, lui mème occupé par plusieurs répertoires (type inbox, outbox, draft, etc.).
La ligne DEFAULT indique le chemin vers le répertoire par défaut dans lequel on va ranger le courrier. Typiquement avec Sylpheed ce sera dans Mail/inbox. Vous noterez toutefois que nous avons ajouté à la fin de la ligne un "/." (slash-dot ;), cela indique à procmail qu'il faut enregistrer les messages au format mailbox, pour que sylpheed puisse le lire. C'est important car par la suite, dans les règles de filtrage, vous devrez toujours mettre ce "/." à la fin des répertoires de destination de vos règles de filtrage. Si vous utilisez un client mail de type MUTT, ne mettez pas le "/."

4. Relève automatique avec Fetchmail

Pour que fetchmail relève automatiquement le courrier toutes les 1 minutes par exemple, nous pouvons le faire tourner en tant que démon dans le cas de plusieurs utilisateurs par exemple (consulter le "man") ou utiliser la crontab. Nous choisissons la méthode crontab.

Tout d'abord, quelle sera la commande à lancer:

$ fetchmail -m /usr/bin/procmail

Cette commande demande à fetchmail de relever le courrier et de le transmettre à Procmail (option -m). Sans cette option il est probable que fetchmail essaie de vous délivrer votre mail par le port 25 (ce qui ne marchera pas si vous n'avez pas un SMTP installé en local). L'option -k permettrait de laisser les messages sur le serveur.
Pour l'ajouter dans une crontab, faites crontab -e et ajoutez la ligne suivante :

*/1 * * * * /usr/bin/fetchmail -m /usr/bin/procmail >> /home/rozec/.fetchlog 2>&1

Ainsi toutes les 1 minutes, le mail sera relevé par fetchmail, transmis à procmail et les logs seront consignés dans ~/.fetchlog.

5. Filtrer avec procmail

Les possibilités de filtres de procmail sont extrèmement puissantes, elles reposent sur les expressions régulières, autrement dit les regexp. Elles permettent de filtrer en analysant le contenu mail puis en réagissant selon les critères que vous aurez programmé.

Les règles que vous voudrez configurer dans procmail iront se loger dans votre ~/.procmailrc, à la suite de la configuration que nous avons entré un peu plus haut. Les commentaires sont tolérés en faisant débuter la ligne par un # (comme c'est souvent le cas).

Quelques exemples :

# Texte invariable dans le champ subject :0: * ^Subject: texte Sandbox/.

Qu'est ce que cela veut dire ?

:0:
Cette ligne invariable indique à procmail le début d'une règle.
^Subject: texte
Cette ligne définit la règle en elle mème : ici, si une ligne commence par l'expression "Subject: texte", cela indique à procmail qu'il doit réagir.
Sandbox/.
Cette ligne indique à procmail ce qu'il doit faire en cas de test positif : il doit ranger le mail dans le répertoire /home/rozec/mail/Sandbox. En effet, il ajoute au début de Sandbox/. la valeur de MAILDIR qui dans notre fichier de configuration est $HOME/mail.
Notez que pour que cela fonctionne, vous devez avoir créé le répertoire Sandbox dans ~/mail.

:0: * ^To.*debian-user-french@lists.debian.org deb-user-fr/.

Cette règle est destinée à filtrer le courrier de la mailing list debian-user-french. Elle se base sur le champ To:

:0: * ^To.*debian-user-french@lists.debian.org deb-user-fr/. :0: * ^Cc.*debian-user-french@lists.debian.org deb-user-fr/.

C'est mieux mais deux règles pour une seule mailing list…

:0: * ^(From|Cc|To).*debian-user-french@lists.debian.org
deb-user-fr/.
Dans notre cas :
:0:
! herve.rozec@gmail.com
6. Sendmail
Pour relancer le sendmail
$ /etc/rc2.d/sendmail start

Modifier le serveur de mail sortant par défaut (localhost) afin de passer par un autre serveur
/etc/mail/submit.cf (messages qu'il recoit ?)
/etc/mail/sendmail (messages qu'il envoie ?)
# "Smart" relay host (may be null)
DSscanele.eleve.imn.fr

7. Lutter contre le SPAM

Une façon simple de bloquer un bon nombre de SPAM sans passer son temps à bidouiller ses règles est d'utiliser un logiciel tel que Spamassassin, conjointement à procmail et fetchmail.

# apt-get install spamassassin

On peut l'utiliser lui aussi en temps que démon mais cela consomme beaucoup de ressources et dans l'optique d'une workstation il est plus simple d'ajouter deux simples règles à votre fichier .procmailrc

# Spamassassin  # Règle évitant de contrôler les mails > à  50ko: cela évite que # spamassassin ne consomme trop de ressources, et les spams supérieurs # à  cette taille sont rarissimes.  :0fW: * < 56000 | /usr/bin/spamassassin -P  # Tous les mails déclarés comme SPAM par spamassassin seront envoyés # dans la boîte SPAM. On peut rediriger sur /dev/null pour les faire # disparaître mais c'est risqué en cas de faux positif. N'oubliez pas # que la boîte SPAM doit exister dans votre maildir. # spam mail). :0: * ^X-Spam-Status: Yes SPAM/.

A chaque relève du courrier par fetchmail procmail donnera à Spamassassin les mails inférieurs à 50K et ce dernier y ajoutera un entète "X-Spam-Status: Yes". Spamassassin rend alors la main à procmail qui cherche cet entète "X-Spam-Status: Yes", si il le trouve le mail est directement placé dans /home/rozec/mail/SPAM (qui doit exister).

7. Liens utiles

jeudi 5 octobre 2006 Posté par à 15:05 | Informatique | 7 commentaires