Gérer son mail de façon simple sous Linux

Dernière mise à jour : 25/03/2006

    Cet article a pour but de vous initier à un contrôle rapide de votre mail sous Linux. Il nécessite quelques connaissances dans le domaine de la configuration de serveurs web. Je ne ferais donc que survoler les étapes de configuration avec les choses importantes à changer. J'ai réalisé cette configuration sur Gentoo Linux 1.4 et Debian mais c'est également applicable sur tout autre système Linux. Nous allons donc installer postfix, maildrop, spamassassin et fetchmail. J'ai rajouté dans la configuration postfix (première partie) un système anti-spam par interrogation de DNS, c'est relativement efficace, attention néanmoins à ce que vous faîtes. Enfin, postfix comporte deux lignes de configuration pour gérer le contenu et les en-têtes des messages. Après avoir ajouté une section sur les antivirus, voici une mise à jour pour gérer son mail sans postfix mais avec maildrop directement. J'ai écris un article sur l'installation d'un serveur de mail, consultez cet article en premier si vous manquez de notions.

    Installez en premier postfix (pour ceux ne voulant pas installer postfix mais gérer leurs mails directement par maildrop, rendez-vous à l'installation de fetchmail directement), je trouve qu'il est toujours utile d'avoir un postfix installé sur une machine, Postfix est un Agent de Transport de Mail (MTA en Anglais). Voici la configuration si vous possédez un domaine que vous gérez vous même. Editez alors : /etc/postfix/main.cf :

    Une petite explication rapide sur la ligne smtpd_clients_restrictions s'impose. Vous notez ici la présence d'une adresse sbl-xbl.spamhaus.org. Il s'avère que SpamHaus s'avère comme le meilleur RBL de la nouvelle année (j'utilisais CBL auparavant). SpamHaus utilise CBL plus d'autres règles pour interdire à des sites openrelay de se connecter à votre serveur mail. Enfin, notez que ceux utilisant Postfix 2 doivent changer reject_maps_rbl par reject_rbl_client dans la syntaxe. Vous aurez sans doute noté les deux lignes body_checks et header_checks. Elle vous permettent de filtrer le type de messages arrivant sur votre serveur postfix. Ainsi créez un fichier /etc/postfix/header_checks.cf et copiez ceci :

    Ceci ne représente bien sûr qu'une partie des règles possibles pour filtrer les spams et autres virus. Comme vous le voyez, il suffit d'indiquer le type de ligne à consulter (titre, sujet ou originateur du message) puis de rejeter selon la règle. Créez à présent un fichier /etc/postfix/body_checks.cf puis copiez ce qui suit :

    Ici les filtrages sont faits sur le corps du message, vous filtrez tous attachements abominables et non libres. J'en profite ici pour également filtrer sur le contenu et la codification des noms car les spams sont très intelligents. Notez la dernière ligne qui vous évitera quelques spams assez stupides.

    Pour ceux n'utilisant pas de domaine perso, c'est beaucoup plus simple, les seules lignes à modifier sont :

    Les utilisateurs de distributions récentes apprécieront l'usage d'un antivirus. Je vous propose donc clamav. Celui-ci travaille très bien sur une Debian sarge. Pour les installer, faîtes : apt-get install amavisd-new clamav clamavd-server puis éditez /etc/postifx/main.cf pour rajouter :

    Editez ensuite le fichier /etc/postifx/master.cf et ajouter :

    Enfin éditez /etc/amavis/amavisd.conf et modifiez les deux lignes suivantes. La première définit votre domaine local et la seconde notifie un utilisateur de votre choix (genre postmaster ou root) de mails contenant des virus. J'ai choisi de garder les défault donc personne de l'envoyeur ou du destinataire n'est notifié de la présence de virus, le mail est donc juste placé en quarantaine (dans /var/lib/amavis/ sous Debian) :


    Redémarrez alors postfix pour prendre en compte les modifications (un simple reload suffit pour les versions qui supportent ceci). Nous allons alors installer SpamAssassin. Il vous suffit de l'installer et de démarrer un démon. En effet, SpamAssassin vous permet de vérifier chacun des mails que vous recevez par le biais d'un exécutable mais cela prends beaucoup de ressources selon le nombre de mails, alors qu'un démon qui tourne en tâche de fond fera ca très bien. Donc après avoir installé votre SpamAssassin, il ne vous reste qu'à démarrer le démon :

    Passons à présent à l'installation de maildrop. Installez le à partir des outils de votre distribution puis éditez le fichier de configuration. Attention, il est important de savoir si vous voulez faire un paramétrage local ou global. Le local n'affectera que votre utilisateur alors que le global affectera TOUS les utilisateurs. Editez le fichier /etc/maildrop pour une utilisation globale ou bien $HOME/.maildroprc pour une utilisation individuelle. Ensuite entrez (selon votre type de boite mail) :

    Pour générer une boite de type Maildir dans votre $HOME, je vous conseille courier qui se révèle d'excellente facture pour ce type d'opérations (certains préfèrent cyrus mais courrier est mon programme de choix depuis 3 ans). Installez-le donc et suivez la documentation pour plus d'infos. La commande pour créer une boite Maildir est de faire : maildirmake $HOME/Maildir et vous voilà avec une boîte prête à recevoir votre correspondance.

    Passons à présent à fetchmail. Vous pouvez aussi utiliser getmail mais je l'ai écarté car il semblait bien plus long à accéder mon pop3. Créez alors un fichier $HOME/.fetchmailrc dans lequel vous pouvez taper :

    Ceux désirant retirer leur mail directement sans utiliser postfix devront ajouter les lignes suivantes à leur fetchmail (assurez vous que les chemins sont corrects). Attention, le paramétrage est pour un procmail :

    Ces deux lignes suffisent a dire à fetchmail d'accéder votre fournisseur d'accès en POP3 sur le serveur pop.acces.fr avec votre email et mot de passe et de passer le mail à votre utilisateur_local. Changez ensuite les permissions de votre fichier par la commande chmod 0710 .fetchmailrc. Sans ce changement, il vous sera impossible de retirer des emails. Il vous suffit de recopier ces lignes à l'infini dans le fichier pour consulter plusieurs comptes email. Il vous faut à présent créer un fichier de règles qui sera utilisé par maildrop pour filter vos emails avec SpamAssassin et les rediriger dans les bons répertoires. Créez donc un dossier spam dans votre Maildir en passant par un client mail ou la commande maildirmake. Puis créez un fichier $HOME/.mailfilter dans lequel vous allez entrer ces règles :

    La première ligne indique à maildrop de filtrer les emails en utilisant SpamAssassin (attention, spamc ne marchera que si vous avez démarré votre démon auparavant comme indiqué plus haut dans cet article). La seconde commande à maildrop de maintenir un fichier de log qui s'appelle .delivered dans lequel vous pouvez voir les emails arrivés. Les commandes if () { } sont ici pour rediriger les emails dans vos bons dossiers (cela evite d'avoir tout le temps à paramétrer un client mail). La première classe le spam dans votre dossier Spam, la seconde range mes emails gentoo dans un dossier perso. Libre à vous de créer d'autres règles (mon fichier est trop long et personnel pour être listé en détails ici ;), donc consultez les docs en ligne et votre ami de toujours : man.

    Alternativement, les utilisateurs de procmail, ne voulant pas se servir de postfix créeront le fichier .procmailrc avec les lignes suivantes. Notez que pour la bonne marche de ce script, il vous faut un script perl s'appellant clamfilter filtrant les virus à la place d'un autre outil tel qu'amavis décrit dans cet article :

    Le moment de vérité est arrivé, il faut tester le tout. La première fois, vous pouvez taper en tant que votre utilisateur un fetchmail -v (-v pour verbose, mode bavard) afin qu'il vous indique tout ce qui se passe, en voici l'exemple :

    Si vous allez à présent vérifier vos emails dans votre client préféré, vous devriez les voir apparaître (assurez vous bien sûr de paramétrer votre client mail pour consulter votre Maildir local sinon vous ne risquez pas de les voir, j'utilises IMAP que je trouve bien pratique pour cela). Vous pouvez aussi vérifier votre fichier de livraison de mails pour vous assurer qu'il les dirige bien. Essayez par exemple : tail $HOME/.delivered :

    Voilà, ceci conclus notre introduction dans le monde du mail géré sur votre petit Linux avec système Anti-Spam. Je rajouterais des éléments petit à petit, j'attends vos critiques et commentaires. Inutilie de préciser que si je n'ai pas documenté quelque chose, c'est très certainement parce que l'aide en ligne le couvre, lisez avant d'envoyer un email.