Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sysadmin:amavis [2012/10/03 17:42]
james ajout install paquets
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) =====
Ligne 37: Ligne 41:
 # mount /​var/​lib/​amavis/​virusmails # mount /​var/​lib/​amavis/​virusmails
 # chown amavis:​amavis /​var/​lib/​amavis/​virusmails</​code>​ # 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 initiale =====
  
 +==== Configuration de clamav ====
   * ajouter l’utilisateur clamav au groupe amavis :<​code>#​ adduser clamav amavis</​code>​   * 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 =) 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.1349278920.txt.gz · Dernière modification: 2012/10/03 17:42 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0