Installer un serveur mail complet avec Postfix / ClamAV / Spamassassin sur une Debian-like
Par M le vendredi 10 novembre 2006, 21:59 - Technique - Lien permanent
Postfix tout seul, ne sert pas à grand chose. Il sert simplement à gérer le
transport des mails.
Malheureusement, il ne dispose pas de toutes les killer
features
du moment que sont l'antivirus couplé à l'antispam. De toute
façon, c'est pas son travail au pauvre Postfix, il ne faut pas l'accabler

Voici donc comment coupler quelques logiciels pour arriver à un bon
résultat.
EDIT : Ce tuto fonctionne parfaitement avec les
distributions Ubuntu ( testé sur une Ubuntu 7.10 Gutsy Gibbon, il faut
simplement éditer les fichiers correspondants à cahque logiciels dans
/etc/default )
Ce petit tutoriel a été fait à partir d'une Debian Etch (testing),
ce qui ne veut pas dire que ça ne marchera pas sur une autre distribution (en
particulier une Ubuntu qui est basée sur Debian).
Installation de Postfix
apt-get install postfix Ensuite, il faut éditer le fichier
/etc/postfix/main.cf et changer quelques lignes :
myhostname = mx.fabroce.net pour le nom d'hote du serveur (de
l'extérieur)
mydestination = où il faut ajouter les noms de domaines dont le
serveur va recevoir les mails
mynetworks = où il faut ajouter les plages IP (exemple :
192.168.1.0/24) à partir desquels les mails peuvent être relayés
ailleurs ( sinon le serveur renvoie un message du type Relay Access
Denied)
un petit /etc/init.d/postfix restart et postfix fonctionne! Seulement il est incapable pour l'instant de livrer les mails aux utilisateurs du système (ce n'est pas son travail)
Installation de Procmail
Procmail va servir à livrer les mails.
apt-get install procmail
La première chose à faire et d'informer Postfix qu'il faut utiliser procmail
dans le fichier /etc/postfix/main.cf en ajoutant la ligne :
mailbox_command = procmail
Procmail se configure soit avec un fichier .procmailrc dans le
répertoire de l'utilisateur soit par le fichier /etc/procmailrc
pour tous les utilisateurs (fichier qui n'existe pas toujours donc à créer).
Dans ce dernier, on ajoute une série d'informations sur la livraison des mails
:
LOGNAME=$USER
SHELL=/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin:$HOME/bin
MAILDIR=$HOME
DEFAULT=$HOME/mbox
ORGMAIL=$MAILDIR/emergency-inbox
LOGFILE=/var/log/procmail.log
DROPPRIVS=yes
Maintenant, les mails peuvent être livrés aux utilisateurs.
Installation d'amavisd-new et de ClamAV
Amavisd-new est un content-filter
, il sert à filtrer le contenu
des mails. Ici amavisd-new ne va pas filter les spams, mais va détecter les
virus avec ClamAV.
apt-get install amavisd-new clamav clamav-daemon va installer ce
qui nous intéresse. ClamAV ne nécessite pas de configuration particulière,
celle par défaut est suffisante (mise à jour automatique toutes les
heures).
Il faut maintenant déterminer le comportement d'amavisd-new. Par défaut, ClamAV
est utilisé comme antivirus comme indiqué dans le fichier
/etc/amavis/conf.d/15-av_scanners
On y voit aussi :
# NOTE: remember to add the clamav user to the amavis group,
and
# to properly set clamd to init supplementary groups
Il faut donc taper la commande addgroup clamav amavis
Maintenant, il faut vérifier le port où le service écoute. Par défaut il s'agit
du port 10024 comme indiqué dans le fichier
/etc/amavis/conf.d/20-debian_defaults :
$inet_socket_port = 10024; # default listenting socket
Maintenant, il ne reste plus qu'à indiquer à Postfix d'utiliser
Amavisd-new.
Dans le fichier /etc/postfix/main.cf, il suffit d'ajouter la
ligne : content_filter = smtp-amavis:[127.0.0.1]:10024
Puis d'ajouter dans /etc/postfix/master.cf : Attention,
il faut au moins un espace au début des lignes commençants par
-o
smtp-amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - y - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
Voilà, maintenant il faut relancer Postfix et Amavisd-new, et on dispose
d'un serveur de mail qui filtre les virus!
/etc/init.d/amavis restart /etc/init.d/postfix
restart
Installation de Spamassassin
EDIT : Il y a un tuto sur Dspam, moins gourmand en ressources
et autant performant sur le long terme ici.
apt-get install spamassassin spamc razor pyzor dcc-client
Spamassassin n'est pas actif par défaut pour des raisons de sécurité, il faut
l'activer en éditant le fichier /etc/default/spamassassin en
mettant ENABLED=1.
Spamassassin va résider en mémoire et spamc va servir à lui envoyer les
données.
On va vérifier que le mail n'est pas un spam après le test anti-virus, procmail
va donc appeler spamc.
Dans /etc/procmailrc, il faut ajouter :
:0fw
| spamc
Mais aussi ça pour mettre à la poubelle le spam :
:0 ED
* ^X-Spam-Flag: YES
$MAILDIR/spam
Maintenant, tout fonctionne normalement, restes à améliorer la configuration
de spamassassin.
Prochaine étape : Installation d'un serveur IMAP
Note : Lors du démarrage d'amavisd-new, il peut afficher ceci :
Starting amavisd: The value of variable $myhostname is "toto", but should
have been
a fully qualified domain name; perhaps uname(3) did not provide
such.
You must explicitly assign a FQDN of this host to variable
$myhostname
in amavisd.conf, or fix what uname(3) provides as a host's network
name!
Pour résoudre ce problème, il faut éditer le fichier /etc/hostname
et y mettre un FQDN du style machine.domaine.tld
Note: Ces instructions fonctionnent à la lettre près sur
Ubuntu LTS 6.06
N'hésitez pas à poster un commentaire pour compléter ce
billet
Edit (07/02/2007): Merci à M. Kouame pour son retour d'expérience qui a permis de corriger certains problèmes dû à la syntaxe Wiki empéchant de copier/coller les fichiers de conf.
Commentaires
Tutos très bien rédigé et qui marche sans demander des heures de mise au point. Merci Fabrice pour ce retour d'expérience. Parfait. Petite fausse note, ne marche pas avec un serveur POP3.
Merci pour le soutien!
Je vais faire les 2 corrections prévues pour que ça marche directement.
Encore merci pour le retour d'expérience!
Bonjour,
Ce tutorial nous a bien avancé, nous avons par contre la procédure permettant d'utiliser pop3 par le serveur popa3d, si interer, merci de nous contacter car le texte est un peu long...
Merci pour ce super tuto
Par contre j'utilise une boite au format Maildir et il a fallu que je mette ça dans mon procmailrc:
:0:
* ^X-Spam-Flag: YES
$HOME/Maildir/.spam/new
Vous noterez la différence entre :0: et :0 ED dans la régle.
Avec :0 ED cela ne filtrait rien
tres bon tuto!
Seul bémol, je ne parviens pas a le faire fonctionner avec pop3....
merci de bien vouloir m'aider a ce sujet^^
Bonjour,
Le lien vers le serveur imap semble ne pas marcher. Il renvoie chaque fois document non trouvé.
Merci de regarder car j'ai conseillé le lien à plusieurs personnes.
Spam Assassin met en piece jointe les mails spam, c'est très chiant, comment lui dire de juste ajouter SPAM dans le sujet, et ne pas les mettre en piece jointe ?
lorsque j'édite /etc/procmailrc, je trouve un fichier vide. Est-ce normal ?
Bonjour quand je fais
vi /etc/postfix/main.cf
J'ai un fichier vide est-ce normal?
Bsr a tous!jai le mem pb que Serange.lorske jinstall procmail jne trouve pa le fichier /etc/procmailrc.je sais vraimen pa cmt fair. help me!