Amavis : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
(Amavis)
(Utilisation d'une base Sql)
Ligne 73 : Ligne 73 :
  
 
{{ Box Console | objet=service postfix restart}}
 
{{ Box Console | objet=service postfix restart}}
 
== Utilisation d'une base Sql ==
 
 
=== Installation des tables ===
 
 
==== Création des tables ====
 
 
{{ Box Remarque | objet=La documentation complète ainsi que la structure des tables sont décrites dans les fichiers /usr/share/doc/amavisd-new/README.sql.gz et /usr/share/doc/amavisd-new/README.sql-mysql.gz. }}
 
 
* La table '''user''' contient la liste des utilisateurs ayant une boîte mail locale ''(Postfix)''. Elle sera consulter pour vérifier les préférences de l'utilisateur recevant un courriel - si elle existe.
 
 
CREATE TABLE users (
 
  id        int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,  -- unique id
 
  priority  integer      NOT NULL DEFAULT '7',  -- 0 étant la plus faible priorité.
 
  policy_id  integer unsigned NOT NULL DEFAULT '1',  -- N° de la règle policy (id) appliquée
 
  email      varbinary(255) NOT NULL UNIQUE,
 
  fullname  varchar(255) DEFAULT NULL,    -- Non utilisé par amavisd-new
 
  local      char(1)      -- Y/N  (optionnel)
 
);
 
 
* La table '''policy''' contient les règles de filtrage pour le '''spam''' et les '''virus''' ''(score, activation des divers filtres, tag des messages, avertir l'émetteur en cas d’échec, ...)''.
 
 
CREATE TABLE policy (
 
  id  int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
 
                                    -- 'id' this is the _only_ required field
 
  policy_name      varchar(32),    -- non utilisé par amavisd-new, à titre de commentaire
 
 
  virus_lover          char(1) default NULL,    -- Y/N
 
  spam_lover          char(1) default NULL,    -- Y/N
 
  banned_files_lover  char(1) default NULL,    -- Y/N
 
  bad_header_lover    char(1) default NULL,    -- Y/N
 
 
  bypass_virus_checks  char(1) default NULL,    -- Y/N
 
  bypass_spam_checks  char(1) default NULL,    -- Y/N
 
  bypass_banned_checks char(1) default NULL,    -- Y/N
 
  bypass_header_checks char(1) default NULL,    -- Y/N
 
 
  spam_modifies_subj  char(1) default NULL,    -- Y/N
 
 
  virus_quarantine_to      varchar(64) default NULL,
 
  spam_quarantine_to      varchar(64) default NULL,
 
  banned_quarantine_to    varchar(64) default NULL,
 
  bad_header_quarantine_to varchar(64) default NULL,
 
  clean_quarantine_to      varchar(64) default NULL,
 
  other_quarantine_to      varchar(64) default NULL,
 
 
  spam_tag_level  float default NULL, -- higher score inserts spam info headers
 
  spam_tag2_level float default NULL, -- inserts 'declared spam' header fields
 
  spam_kill_level float default NULL, -- higher score triggers evasive actions
 
                                      -- e.g. reject/drop, quarantine, ...
 
                                      -- (subject to final_spam_destiny setting)
 
  spam_dsn_cutoff_level        float default NULL,
 
  spam_quarantine_cutoff_level float default NULL,
 
 
  addr_extension_virus      varchar(64) default NULL,
 
  addr_extension_spam      varchar(64) default NULL,
 
  addr_extension_banned    varchar(64) default NULL,
 
  addr_extension_bad_header varchar(64) default NULL,
 
 
  warnvirusrecip      char(1)    default NULL, -- Y/N
 
  warnbannedrecip    char(1)    default NULL, -- Y/N
 
  warnbadhrecip      char(1)    default NULL, -- Y/N
 
  newvirus_admin      varchar(64) default NULL,
 
  virus_admin        varchar(64) default NULL,
 
  banned_admin        varchar(64) default NULL,
 
  bad_header_admin    varchar(64) default NULL,
 
  spam_admin          varchar(64) default NULL,
 
  spam_subject_tag    varchar(64) default NULL,
 
  spam_subject_tag2  varchar(64) default NULL,
 
  message_size_limit  integer    default NULL, -- max size in bytes, 0 disable
 
  banned_rulenames    varchar(64) default NULL  -- comma-separated list of ...
 
        -- names mapped through %banned_rules to actual banned_filename tables
 
);
 
 
* La table '''mailaddr''' contient les adresses ou domaines pour lesquels on souhaite définir une '''règle de listage''' ''(c.f table '''wblist''')'' ainsi qu'une '''priorité''' de traitement.
 
 
CREATE TABLE mailaddr (
 
  id        int unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
 
  priority  integer      NOT NULL DEFAULT '7',  -- 0 est la plus faible priorité
 
  email      varbinary(255) NOT NULL UNIQUE
 
);
 
 
* La table '''wblist''' permet de blacklister ou whitelister une adresse émetteur définie dans la table '''mailaddr''' et appliqué pour le destinataire locale définit dans la table ''(users)''.
 
 
CREATE TABLE wblist (
 
  rid        integer unsigned NOT NULL,  -- destinataire: users.id
 
  sid        integer unsigned NOT NULL,  -- émetteur: mailaddr.id
 
  wb        varchar(10)  NOT NULL,  -- W ou Y / B ou N / espace=neutre / score
 
  PRIMARY KEY (rid,sid)
 
);
 
 
==== Configuration de Amavis ====
 
 
* Pour activer le module Sql dans Amavis, il faut insérer les deux lignes suivantes dans le fichier '''/etc/amavis/conf.d''':
 
 
  @lookup_sql_dsn = ( ['DBI:mysql:database=postfix;host=10.0.0.47;port=3306', 'postfix', 'motdepassebasemysqlpourpostfix']);
 
  @storage_sql_dsn = @lookup_sql_dsn;
 
 
=== Fonctions & Comportements ===
 
 
==== Blacklistage ====
 
  
 
== Liens ==
 
== Liens ==
  
 
* '''Informations règles Amavis :''' http://www.grafactory.net/blog/post/2009/09/28/Documentation-des-diff%C3%A9rentes-r%C3%A8gles-d-Amavisd-new
 
* '''Informations règles Amavis :''' http://www.grafactory.net/blog/post/2009/09/28/Documentation-des-diff%C3%A9rentes-r%C3%A8gles-d-Amavisd-new

Version du 10 février 2014 à 17:58

Installation

ICON Terminal.png

sudo apt-get install amavisd-new

Configuration

Amavis

  • Pour que Amavis puisse avoir accès aux dossiers et fichiers de ClamAV, on ajoute l'utilisateur amavis au groupe clamav :
ICON Terminal.png

adduser clamav amavis

  • On vérifie que l'anti-virus /etc/amavis/conf.d/15-av_scanners a bien été détecté par Amavis. Si c'est bien le cas, les lignes suivantes sont décommentées :
['ClamAV-clamd',
  \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"],
  qr/\bOK$/m, qr/\bFOUND$/m,
  qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],
  • Pour que Amavis consulte Clamav et SpamAssassin pour le traitement des mails, il faut décommenter les lignes suivantes dans /etc/amavis/conf.d/15-content_filter_mode :
@bypass_virus_checks_maps = (
  \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
@bypass_spam_checks_maps = (
  \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
  • Sous Ubuntu, pour que les mails détectés comme spam et virus ne soient pas supprimés, il faudra remplacer dans le fichier /etc/amavis/conf.d/21-ubuntu_defaults les lignes :
$final_virus_destiny      = D_DISCARD; # (defaults to D_BOUNCE)
$final_spam_destiny       = D_DISCARD;  # (defaults to D_REJECT)
  • Par :
$final_virus_destiny      = D_BOUNCE; # (defaults to D_BOUNCE)
$final_spam_destiny       = D_PASS;  # (defaults to D_REJECT)
  • Dans le fichier /etc/amavis/conf.d/05-node_id on va définir le hostname du serveur :
$myhostname = "mail.glx";
  • Pour appliquer la configuration, on redémarre Amavis :
ICON Terminal.png

service amavis restart

Postfix

  • Dans le fichier /etc/postfix/main.cf on insérera la ligne suivante qui permettra de transférer les mails reçus par Postfix à Amavis pour traitement :
content_filter = scan:127.0.0.1:10024
  • A la fin du fichier /etc/postfix/master.cf, on insère les éléments suivants :
scan      unix  -       -       n       -       16      smtp
        -o smtp_data_done_timeout=1200
        -o disable_dns_lookups=yes
  • Ainsi que ce bloc qui permettra de récupérer les mails traités par Amavis :
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
  • On redémarre Postfix pour appliquer les modifications :
ICON Terminal.png

service postfix restart

Liens