Amavis

De Wiki NCad
Révision de 10 février 2014 à 16:40 par Cacheln (discuter | contributions) (Blacklistage)

Aller à : navigation, rechercher

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_DROP; # (defaults to D_BOUNCE)
$final_spam_destiny       = D_DROP;  # (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

Utilisation d'une base Sql

Installation des tables

Création des tables

ICON Light.png
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