Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
sysadmin:amavis [2012/10/03 16:32]
james créée
sysadmin:amavis [2014/10/30 11:10] (Version actuelle)
james modif tags
Ligne 1: Ligne 1:
-{{tag>​smtp mail server ​howto install ​postfix antivirus antispam amavis spamassassin}}+{{tag>​smtp mail serveur ​howto installation ​postfix antivirus antispam amavis spamassassin}}
  
 ====== Configurer un antivirus et antispam sur votre serveur de mail ====== ====== Configurer un antivirus et antispam sur votre serveur de mail ======
Ligne 6: Ligne 6:
  
 Amavis peut être perçu comme un conteneur pouvant contenir ... ce que l'en veut ... pour filtrer le contenu des mails. L'​idée est donc d'​utiliser ce conteneur pour effectuer sur les mails : Amavis peut être perçu comme un conteneur pouvant contenir ... ce que l'en veut ... pour filtrer le contenu des mails. L'​idée est donc d'​utiliser ce conteneur pour effectuer sur les mails :
-  * du filtrage antispam avec spamassassin+  * du filtrage antispam avec spamassassin ​(SA)
   * du filtrage de virus avec clamav   * du filtrage de virus avec clamav
 +
 +Le configuration sera la suivante : utilisation de clamav en démon, mais utilisation de spamassassin sans utiliser le démon.
 +
 +Les bases de signature de virus de clamav seront mises a jour grâce à clamav-freschlam.
  
 ===== Prérequis ===== ===== Prérequis =====
Ligne 17: Ligne 21:
 ===== Installation de base ===== ===== Installation de base =====
  
-<​code>#​ apt-get install amavisd-new clamav clamav-freshclam spamassassin</​code>​+<​code>#​ apt-get install amavisd-new clamav clamav-freshclam ​clamav-daemon ​spamassassin</​code>​
  
 ===== Installation(s) optionnelle(s) ===== ===== Installation(s) optionnelle(s) =====
-Si vous souhaitez que clamav puisse regarder a l'​intérieur des pièces jointes compressées pour y chercher des virus, il est conseillé d'​installer les paquets suivants. Vous pouvez néanmoins réduire cette liste si vous ne souhaitez pas gérer tous les types d'​archives ci dessous.<​code>#​ apt-get install lha arj unrar zoo nomarch lzop cabextract p7zip </​code>​+ 
 +==== Archives en pièce jointe ==== 
 + 
 +Si vous souhaitez que clamav puisse regarder a l'​intérieur des pièces jointes compressées pour y chercher des virus, il est conseillé d'​installer les paquets suivants. Vous pouvez néanmoins réduire cette liste si vous ne souhaitez pas gérer tous les types d'​archives ci dessous.<​code>​ 
 +apt-get install arj unrar-free zoo nomarch lzop cabextract p7zip</​code>​ 
 +Si vous avez ajouté les depots non-free, vous pouvez utiliser cette commande à la place :<​code>​ 
 +apt-get install lha arj unrar zoo nomarch lzop cabextract p7zip </​code>​ 
 + 
 + 
 +==== Partition dédiée à la quarantaine ==== 
 + 
 +Si comme moi vous souhaitez utiliser une partition séparée pour la quarantaine (dans mon cas un //Logical Volume// LVM de 500 Mo sur le //Volume Group// vg0) :<​code>​ 
 +# lvcreate -n virusmails -L 500M vg0 
 +# mkfs.ext4 /​dev/​vg0/​virusmails 
 +# echo "/​dev/​vg0/​virusmails ​    /​var/​lib/​amavis/​virusmails ​     ext4    defaults ​       0       ​2"​ >> /​etc/​fstab 
 +# mount /​var/​lib/​amavis/​virusmails 
 +# chown amavis:​amavis /​var/​lib/​amavis/​virusmails</​code>​ 
 + 
 +==== Répertoires temporaires d'​amavis en tmpfs ==== 
 + 
 +Pour gagner en performance on peut utiliser des partitions tmpfs pour les fichiers temporaires d'​amavis. Ainsi les acces se feront en mémoire et non plus sur le disque. 
 +<​note>​ La taille de ces lecteurs tmpfs est à modifier selon la charge du serveur, la configuration et bien sur la quantité de RAM disponible. Pour simplifier /​var/​lib/​amavis/​tmp est dépendant du nombre d’instances d’amavisd et de la taille maximale d’un message. Les paramètres mis ici sont ok pour 5 instances et un message_size_limit de 10 Mo, ce qui est largement suffisant dans la config par défaut d’amavisd (2 instances)</​note>​ 
 +  * stopper amavis s'il est démarré :<​code>#​ /​etc/​init.d/​amavis stop</​code>​ 
 +  * déclarer ces partitions dans le fichier /etc/fstab (adaptez les tailles au besoin) : <​code>#​ cat << EOF >> /​etc/​fstab 
 +tmpfs   /​var/​lib/​amavis/​db ​     tmpfs   ​rw,​size=10m,​mode=750,​uid=amavis,​gid=amavis ​     0 0 
 +tmpfs   /​var/​lib/​amavis/​tmp ​    ​tmpfs ​  ​rw,​size=150m,​mode=770,​uid=amavis,​gid=amavis ​    0 0 
 +EOF 
 +</​code>​ 
 +  * monter ces partitions :<​code>​ 
 +# mount /​var/​lib/​amavis/​db 
 +# mount /​var/​lib/​amavis/​tmp</​code>​ 
 +  * redémarrer amavis :<​code>#​ /​etc/​init.d/​amavis start</​code>​ 
 + 
 +==== Pas de compilation des règles spamassassin ==== 
 + 
 +Pour gagner en performance on peut aussi choisir de compiler les règles spamassassin. Ce choix n'a pas été fait pour ne pas avoir a installer "​inutilement"​ un compilateur sur un serveur. 
 + 
 +===== Configuration initiale ===== 
 + 
 +==== Configuration de clamav ==== 
 +  * ajouter l’utilisateur clamav au groupe amavis :<​code>#​ adduser clamav amavis</​code>​ 
 +  * La configuration par défaut de clamd conviendra 
 + 
 +==== Configuration de clamav-freshclam ==== 
 +  * Modifier le fichier /​etc/​clamav/​freshclam.conf pour utiliser en plus un miroir de signature français, et notifier le demon clamd qu'une mise a jour de la base de signature à été effectuée, par exemple à l'aide de la commande suivante : <​code>#​ cat << EOF >> /​etc/​clamav/​freshclam.conf 
 +DatabaseMirror db.fr.clamav.net 
 +NotifyClamd /​etc/​clamav/​clamd.conf 
 +EOF 
 +</​code>​ 
 +<​note>​la directive NotifyClamd prend bien comme valeur l'​emplacement du fichier de configuration de clamd, ca n'est pas une erreur, l'​application se chargeant d'​aller parcourir ce fichier pour y trouver l'​emplacement du socket à utiliser</​note>​ 
 +  * Il ne reste plus qu'a redémarrer ces services pour prendre cette configuration en compte :<​code>​ 
 +# /​etc/​init.d/​clamav-freshclam restart 
 +# /​etc/​init.d/​clamav-daemon restart</​code>​ 
 + 
 +==== Configuration d'​amavis ==== 
 + 
 +  * Editer le fichier /​etc/​amavis/​conf.d/​50-user et y mettre le contenu suivant en remplacant "​mail.mondomaine.com"​ par le "​mailname"​ de votre serveur de mail et en adaptant votre(vos) nom(s) de domaine<​code>​ 
 +use strict; 
 + 
 +
 +# Place your configuration directives here.  They will override those in 
 +# earlier files. 
 +
 +# See /​usr/​share/​doc/​amavisd-new/​ for documentation and examples of 
 +# the directives you can use in this file 
 +
 + 
 +# nombre de fils (prefork) (valeurs courantes : entre 2 et 30) 
 +$max_servers = 2; 
 + 
 +# les domaines mail gérés par ce serveur (tous les sous domaines seront inclus) 
 +@local_domains_maps = ( [ '​.domaine.com',​ '​.domaine.org',​ '​.domaine2.com'​ ] ); 
 + 
 +$sa_tag_level_deflt ​ = -1000; # ajouter le score antispam dans les entetes a partir de ce score (dans ce cas pour tous les mails) 
 +$myhostname = "​mail.mondomaine.com";​ 
 + 
 +# optionnel - liste des domaines pour lesquels ne pas effectuer de check sur l'​entete des mails (connus comme étant pourris ;p) 
 +@bypass_header_checks_maps = (['​.lesjeudis.com',​ '​.lists.ubuntu.com'​]);​ 
 + 
 +# pour rendre la definition de bypass_header_checks_maps ci dessus utile si vous l'avez défini 
 +@bad_header_lovers_maps = @bypass_header_checks_maps;​ 
 + 
 +# reinjection de mail dans postfix a la sortie d'​amavis 
 +$notify_method ​ = '​smtp:​[127.0.0.1]:​10025';​ 
 +$forward_method = '​smtp:​[127.0.0.1]:​10025'; ​  
 + 
 +# ne pas bouncer les messages bannis (virus) : inutile de notifier la personne qui spamme de virus que cette adresse mail répond 
 +$final_banned_destiny ​    = D_DISCARD;​ 
 + 
 +# accepter les messages ayant un mauvais entete 
 +$final_bad_header_destiny = D_PASS; 
 +# et ne pas les stocker en plus en quarantaine 
 +$bad_header_quarantine_to = undef; 
 + 
 +# laisser passer le spam (il sera taggué comme spam) 
 +$final_spam_destiny ​      = D_PASS; 
 +#donc ne pas mettre le spam en quarantaine : ca n'a pas de sens vu que le mail a été délivré a l'​utilisateur 
 +$spam_quarantine_to ​ = undef; 
 + 
 + 
 +#​------------ Do not modify anything below this line ------------- 
 +1;  # ensure a defined return 
 +</​code>​ 
 +  * Editer le fichier /​etc/​amavis/​conf.d/​15-content_filter_mode et dé-commenter (enlever les # de début de lignes) les 2 couples de ligne suivants pour activer les filtrages antivirus et antispam : 
 +    * <​code>​@bypass_virus_checks_maps = ( 
 +   ​\%bypass_virus_checks,​ \@bypass_virus_checks_acl,​ \$bypass_virus_checks_re);​ 
 +</​code>​ 
 +    * <​code>​@bypass_spam_checks_maps = ( 
 +   ​\%bypass_spam_checks,​ \@bypass_spam_checks_acl,​ \$bypass_spam_checks_re);​ 
 +</​code>​ 
 +  * Redémarrer maintenant amavis pour prendre tout cela en compte :<​code>​ 
 +# /​etc/​init.d/​amavis restart</​code>​En regardant de plus pres dans le fichier de log /​var/​log/​syslog,​ vous devriez voir des lignes contenant :<​code>​ 
 +amavis[4860]:​ ANTI-SPAM-SA code    loaded 
 +... 
 +amavis[4860]:​ Using primary internal av scanner code for ClamAV-clamd 
 +</​code>​ indiquant bien qu'​amavis utilisera le démon clamd, ainsi que SpamAssassin. 
 + 
 +===== Configuration du routage postfix ===== 
 + 
 +Maintenant que chacune des briques est en place il est temps de configurer postfix pour utiliser tout ca. 
 + 
 +Utiliser la commande suivante pour ajouter la configuration nécessaire : 
 +  * Le point d'​entrée postfix->​amavis :<​code>​cat << EOF >> /​etc/​postfix/​master.cf 
 +# ========================================================================== 
 +# service type  private unpriv ​ chroot ​ wakeup ​ maxproc command + args 
 +#               ​(yes) ​  ​(yes) ​  ​(yes) ​  ​(never) (100) 
 +# ========================================================================== 
 +amavisfeed unix    -       ​- ​      ​n ​       -      2     ​lmtp 
 +     -o lmtp_data_done_timeout=1200 
 +     -o lmtp_send_xforward_command=yes 
 +     -o lmtp_tls_note_starttls_offer=no 
 +EOF 
 +</​code>​ 
 +<​note>​Le nombre dans la colonne "​maxproc"​ (ici 2) doit être le meme que le $max_servers défini dans la configuration d'​amavis. Adapter au besoin</​note>​ 
 +  * Configuration d'un nouveau service pour réinjecter le mail a sa sortie d'​amavis dans postfix :<​code>​ 
 +cat << EOF >> /​etc/​postfix/​master.cf 
 +127.0.0.1:​10025 inet n    -       ​n ​      ​- ​      ​- ​    ​smtpd 
 +     -o content_filter= 
 +     -o smtpd_delay_reject=no 
 +     -o smtpd_client_restrictions=permit_mynetworks,​reject 
 +     -o smtpd_helo_restrictions= 
 +     -o smtpd_sender_restrictions= 
 +     -o smtpd_recipient_restrictions=permit_mynetworks,​reject 
 +     -o smtpd_data_restrictions=reject_unauth_pipelining 
 +     -o smtpd_end_of_data_restrictions= 
 +     -o smtpd_restriction_classes= 
 +     -o mynetworks=127.0.0.0/​8 
 +     -o smtpd_error_sleep_time=0 
 +     -o smtpd_soft_error_limit=1001 
 +     -o smtpd_hard_error_limit=1000 
 +     -o smtpd_client_connection_count_limit=0 
 +     -o smtpd_client_connection_rate_limit=0 
 +     -o receive_override_options=no_header_body_checks,​no_unknown_recipient_checks,​no_milters 
 +     -o local_header_rewrite_clients= 
 +     -o smtpd_milters= 
 +     -o local_recipient_maps= 
 +     -o relay_recipient_maps= 
 +EOF</​code>​ 
 +  * Et pour finir ajouter le filtrage du contenu dans postfix : ajouter dans le fichier /​etc/​postfix/​main.cf :<​code>​ 
 +# filtrage du contenu avec amavis 
 +content_filter=amavisfeed:​[127.0.0.1]:​10024 
 +</​code>​ 
 +  * Il ne reste plus qu'a recharger la configuration de postfix :<​code>#​ /​etc/​init.d/​postfix reload</​code>​. On peut vérifier grace a la commande suivant qu'il ecoute bien maintenant sur 127.0.0.1:​10025 :<​code>#​ netstat -tulpen | grep master 
 +tcp        0      0 127.0.0.1:​10025 ​        ​0.0.0.0:​* ​              ​LISTEN ​     0          17164728 ​   6345/​master ​     
 +tcp        0      0 0.0.0.0:​25 ​             0.0.0.0:​* ​              ​LISTEN ​     0          15608256 ​   6345/​master ​     
 +</​code>​ 
 + 
 +TODO : test eicar spam+virus 
 + 
 +TODO: finir =) 
 + 
 +sa-learn; sa-update 
 + 
 +===== References ===== 
 +  * http://​www.starbridge.org/​spip/​spip.php?​article12#​Amavisd-et-SA 
 +  * http://​www.collet-matrat.com/?​p=270 
 +  * http://​www.majorxtrem.be/​2009/​11/​19/​installation-serveur-mail-postfix-amavisd-mysql-spamassassin-dspam-courier-imap/​ 
 +  * http://​wiki.centos.org/​HowTos/​Amavisd 
  
sysadmin/amavis.1349274727.txt.gz · Dernière modification: 2012/10/03 16:32 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0