Amavis

Stéphane RAULT -

Version 0.2 - 06 Mars 2004

Version originale : http://www.espace-groupware.com/spam/amavisd-new/index.html

Rédiger une documentation est toujours un travail long et difficile. Vous trouverez sans aucun doute des fautes d'orthographes et peut être même techniques, n'hésitez surtout pas à me les signaler.

Les critiques, suggestions et remerciements sont les bienvenues.

Cette documentation peut être reproduite entièrement ou partiellement mais je vous demanderais juste de me le signaler en m'envoyant un message.


Table des matières

Introduction

Amavis est utilisé comme relais pour le filtrage viral et anti-spam par un serveur de courrier.

Il simplifie et optimise le traitement des messages à analyser.

Cette documentation est basé sur Amavisd-new-20030616-p7 que vous trouverez à l'adresse suivante : http://www.ijs.si/software/amavisd

Je n'ai utilisé Amavis qu'avec Postfix 2.x, SpamAssassin 2.5 et > , Clamav, Sophie. Certains commentaires et syntaxe sont donc propres à mon expérience dans ce contexte.

Configuration

Introduction :

Le fichier amavisd.conf ne doit pas être accessible en écriture pour d'autres utilisateurs que root

Paramètres dans les modèles :

%f : Adresse email de l'administrateur telle que définie dans les paramètres du fichier amavisd.conf

%T : Liste des destinataires du champs 'To:' (sur plusieurs lignes)

%C : Liste des destinataires du champs 'Cc:' (sur plusieurs lignes)

%B : Liste des destinataires du champs 'Bcc:' (sur plusieurs lignes)

%h : Nom complet du serveur tel que renvoyé dans la commande "hostname"

%n : ID du message tel qu'il est visible dans les logs d'amavis

%b : ??? message digest of mail body (MD5, hex)

%d : Date au format de la RFC 2822

%m : Champs 'Message-ID' du message d'origine

%j : Champs 'Subject' du message d'origine

%t : Première ligne de champs 'Received'

%H : Liste de toutes les entêtes (sauf 'Return-Path:' ou 'Delivered-To:')

%s : Adresse originale de l'expéditeur prise dans le champs 'From' de l'enveloppe

%l : ??? (letter ell) true if sender belongs to local_domains, undef otherwise

%o : ??? Même chose que %s pour les virus

%S : ??? address that will get sender notification;

%R : Liste des destinataires originaux pris dans les champs 'To' de l'enveloppe

%D : Liste des destinataires à qui le message à bien été envoyé

%N : Liste des destinataires qui n'ont pas reçus le message

%i : ID du fichier en quarantaine

%q : Liste des boites aux lettres de quarantaine

%v : ??? output of the (last) virus checking program

%V : Liste des noms de virus trouvés dans le message

%F : Liste des noms de fichiers interdits trouvés dans le message

%W : Liste des moteurs de détection virales qui ont détectés un virus

%A : Rapport de SpamAssassin

%c : Nombre de points que SpamAssassin a attribué au message


%x : ??? Evalue la valeur d'un hash %#x : Evalue un nombre

Modèle de notification de Spam pour les administrateurs :

[root@linux /]$ vi /var/amavis/notify_spam_admin.txt

Date: %d
From: %f
Subject: SPAM FROM <%o> - \[%c\]
To: [? %#T |undisclosed-recipients: ;|[<%T>|, ]]
[? %#C |#|Cc: [<%C>|, ]]
[? %#B |#|Bcc: [<%B>|, ]]
Message-ID: <SA%n@%h>

---------------------------------------------------------------------
Hit     : %c
From    : %o
Subject : %j
------------------------- Destinataires -----------------------------
%N
---------------------------------------------------------------------
# Chemin vers le fichier en quarantaine
%q
[%A
]\

------------------------- BEGIN HEADERS -----------------------------
Return-Path: %s
[%H
]\
-------------------------- END HEADERS ------------------------------

Quelques informations sur la configuration :

Ajout systématique d'entêtes X-Spam-xxx dans les messages légitimes et les spam :

Vous devez remplir les conditions suivantes :


Variables d'environnement influant sur le fonctionnement d'Amavis :

Si les variables d'environnement de la session dans laquelle tourne amavis, ne peuvent être forcé, quelqu'en soit la raison, vous avez la possibilité de définir ces variables dans le fichier de configuration amavisd.conf

Exemple avec la variable de LANG qui devrait être à "en_US" pour le bon fonctionnement de SpamAssassin :

# Dans le fichier amavisd.conf : 
$ENV(LANG} = "en_US";

Scripts

Introduction :

Ces scripts peuvent toujours êtres améliorés mais en l'état il devrait, je l'espère, pouvoir vous rendre quelques services.


Purge des fichiers temporaires :

# Suppression des fichiers temporaires générés par Amavis :
find /var/amavis/tmp -type d -name 'amavis-20??????T*' -prune -mtime +1 -exec rm {} \;

# Remarque : 
# -mtime +1 = fichier de plus de 24 heures
# /var/amavis/tmp = correspond à la valeur que vous aurez utilisé dans $TEMPBASE

Extraction de la liste des expéditeurs de virus :

Attention : La durée de l'exécution du script dépendra du nombre de virus en quarantaine. C'est la raison pour laquelle j'exporte le résultat afin d'effectuer les opérations de classement à partir d'un fichier de résultat.

#!/bin/sh
find /var/virusmail/ -name "virus*" -exec grep '^From' {} \; > /tmp/virus-sender
echo -e `cat /tmp/virus-sender | sort | uniq -c | sort -k1,1 -n -r |`

Remarque : Vous pouvez utiliser -mtime -1 pour les virus des dernières 24 heures

Le script renverra une liste trié des plus gros expéditeurs de virus. Voir l'exemple suivant :

     13 From: "Microsoft" 
      2 From: mswsgulf@gmx.at
      2 From: arlandabilcenter@swipnet.se
	.....

Vous pouvez utilisez un " | head -20" pour obtenir un TOP 20 des expéditeurs

Remarque : N'oubliez pas que les adresses d'expéditeurs sont en général fausses ou utilisés dans le consentement de leur propriétaire. Alors soyez cool avec les mesures de représsions.

Paramètres de configuration

Les paramètres et leurs valeurs sont conformes aux règles syntaxiques Perl 5


Classement par catégories :

Classement alphabétique :

$MYHOME

Défaut /var/amavis
Syntaxe Chemin complet vers un répertoire unix
Description
Répertoire de base d'Amavis. En général le même répertoire que celui du "HOME DIRECTORY" rattaché au compte de l'utilisateur exécutant le serveur Amavis.


$mydomain

Défaut example.com
Syntaxe Nom de domaine internet
Description
Ce paramètre n'est pas utilisé par le serveur Amavisd. Il sert à remplir d'autres variables facultatives du fichier de configuration.


$daemon_user

Défaut vscan
Syntaxe
Description
Compte utilisateur Unix, sous lequel sera exécuté le daemon Amavis.


$daemon_group

Défaut sweep
Syntaxe
Description
Compte groupe Unix, sous lequel sera exécuté Amavis.


$TEMPBASE

Défaut $MYHOME
Syntaxe
Description
Répertoire temporaire utilisé pour décompresser les fichiers avant l'analyse par les produits tiers.


$helpers_home

Défaut $MYHOME
Syntaxe
Description
Répertoire de base pour les produits tiers comme SpamAssassin, Razor, DCC.


$daemon_chroot_dir

Défaut Aucune
Syntaxe
Description
Répertoire de base dans le cas ou Amavis serait "chrooté".
Remarques


$pid_file

Défaut $MYHOME/amavisd.pid
Syntaxe
Description
Chemin du fichier contenant le numéro de processus.
Remarques


$lock_file

Défaut $MYHOME/amavisd.lock
Syntaxe
Description
Fichier de vérrouillage du processus.
Remarques


$ENV{TMPDIR}

Défaut $TEMPBASE
Syntaxe
Description
Re-définition d'une variable d'environnement existante ou non.
Remarques


$forward_method

Défaut smtp:127.0.0.1:10025
Syntaxe bsmtp:$MYHOME/out-%i-%n.bsmtp
Description
Méthode pour transmettre en sortie les messages après traitement par amavis.
Remarques


$notify_method

Défaut $forward_method
Syntaxe bsmtp:$MYHOME/out-%i-%n.bsmtp
Description
Méthode pour transmettre en sortie les notifications après traitement par amavis quand un virus ou un spam est détecté.
Remarques


$max_servers

Défaut 2
Syntaxe
Description
Nombre maximum de tâches serveur. Doit correspondre au nombre de processus inscrit dans le fichier master.cf de Postfix.
Remarques


$max_requests

Défaut 10
Syntaxe
Description
Nombre maximum de requettes par processus serveur. Voir $max_servers.
Remarques


$child_timeout

Défaut 5*60
Syntaxe
Description
Time out sur les connections SMTP rattachées aux processus enfants de "max_server". A VOIR!!!
Remarques


@bypass_virus_checks_acl

Défaut qw( . )
Syntaxe Expression régulière pour alimenter un tableau Perl 5.
Description
Avec comme paramètre "qw( . )", le controle anti-viral sera totalement désactivé dans Amavis.
Remarques
Il doit être possible de ne désactiver le controle que pour certaines conditions (domaine, expéditeur, destinataires, etc..) mais il est préférable dans ce cas d'utiliser les paramètres réservés à cet effet.


@bypass_spam_checks_acl

Défaut qw( . )
Syntaxe Expression régulière pour alimenter un tableau Perl 5.
Description
Avec comme paramètre "qw( . )", le controle anti-spam sera totalement désactivé dans Amavis.
Remarques
Il doit être possible de ne désactiver le controle que pour certaines conditions (domaine, expéditeur, destinataires, etc..) mais il est préférable dans ce cas d'utiliser les paramètres réservés à cet effet.


@local_domains_acl

Défaut ( ".$mydomain" )
Syntaxe qw() qw( .example.com ) qw( .example.com !host.sub.example.net .sub.example.net ) ( ".$mydomain", '.example.com', 'sub.example.net' ) read_hash(\%local_domains, '/var/amavis/local_domains') $local_domains_re = new_RE( qr'[@.]example\.com$'i )
Description
Liste de controle d'accès pour les domaines "local". A VOIR!!!
Remarques


$relayhost_is_client

Défaut false
Syntaxe
Description
A VOIR!!!
Remarques


$insert_received_line

Défaut true
Syntaxe
Description
Si ce paramètre est activé, Amavis insèrera une entête "Received" à chaque message traité.
Remarques


$unix_socketname

Défaut undef
Syntaxe $MYHOME/amavisd.sock
Description
Chemin d'un socket ouvert par Amavis pour permettre à des applications clientes d'accéder à Amavis.
Remarques
Pour Amavis-milter (SendMail) seulement.


$gets_addr_in_quoted_form

Défaut 1
Syntaxe
Description
Si activé : "Bob \"Funny\" Dude"@example.com Si désactivé : Bob "Funny" Dude@example.com
Remarques


$inet_socket_port

Défaut undef
Syntaxe 10024 [10024, 10026, 10028]
Description
Ports sur lesquel Amavis restera à l'écoute pour recevoir des messages à traiter.
Remarques
Il est possible d'ouvrir plusieurs ports, mais je n'en voit pas l'utilité pour le moment.


$inet_socket_bind

Défaut 127.0.0.1
Syntaxe undef
Description
Rattachement du socket d'écoute SMTP à une interface réseau (adresse IP).
Remarques
Par défaut, l'adresse IP est la "127.0.0.1", ce qui veut dire qu'il n'est pas possible à Postfix ou un autre MTA, d'utiliser Amavis sur une machine différente. Dans ce cas, les deux produits doivent se trouver sur la même machine.


@inet_acl

Défaut qw( 127.0.0.1 )
Syntaxe qw(127/8 10.1.0.1 10.1.0.2) qw( 127/8 10/8 172.16/12 192.168/16 ) qw( !192.168.1.12 172.16.3.3 !172.16.3/255.255.255.0 127.0.0.1 10/8 172.16/12 192.168/16 ) qw( 127/8 !172.16.3.0 !172.16.3.127 172.16.3.0/25 !172.16.3.128 !172.16.3.255 172.16.3.128/25 )
Description
Si l'interface réseau de la tâche d'écoute SMTP est différente de "127.0.0.1", ce paramètre permet de controler les machines autorisés à se connecter.
Remarques


$DO_SYSLOG

Défaut 0
Syntaxe
Description
Active ou désactive l'utilisation de Syslog pour les logs d'amavis.
Remarques


$SYSLOG_LEVEL

Défaut mail.info
Syntaxe N'importe quel canal Syslog valide.
Description
Canal syslog utilisé si Syslog est activé.
Remarques


$LOGFILE

Défaut Aucune
Syntaxe $MYHOME/amavis.log
Description
Fichier de log au cas ou Syslog ne serait pas utilisé.
Remarques
Il faut que l'utilisateur exécutant le processus ait accès en écriture dans le répertoire de stockage de ce fichier.


$log_level

Défaut 0
Syntaxe # 0: startup/exit/failure messages, viruses detected # 1: args passed from client, some more interesting messages # 2: virus scanner output, timing # 3: server, client # 4: decompose parts # 5: more debug details
Description
Niveau de détail des logs.
Remarques


$log_templ

Défaut '[? %#V |[? %#F |[?%#D|Not-Delivered|Passed]|BANNED name/type (%F)]|INFECTED (%V)], <%o> -> [<%R>|,][? %i ||, quarantine %i], Message-ID: %m, Hits: %c';
Syntaxe
Description
Modèle de logs.
Remarques
Voir si utilisé avec Syslog ou seulement en log direct.


$hdr_encoding

Défaut iso-8859-1
Syntaxe
Description
Code ISO pour l'encodage des "Header".
Remarques
Voir si il s'agit de la lecture des messages ou l'écriture des notifications.


$bdy_encoding

Défaut iso-8859-1
Syntaxe Code ISO pour l'encodage des "Body".
Description
Remarques
Voir si il s'agit de la lecture des messages ou l'écriture des notifications.


$notify_sender_templ

Défaut read_text('/var/amavis/notify_sender.txt');
Syntaxe
Description
Modèle de notification pour les ???.
Remarques
A VOIR!!!


$notify_virus_sender_templ

Défaut read_text('/var/amavis/notify_virus_sender.txt');
Syntaxe
Description
Modèle de notification pour les expéditeurs de Virus.
Remarques


$notify_virus_admin_templ

Défaut read_text('/var/amavis/notify_virus_admin.txt');
Syntaxe
Description
Modèle de notification de Virus pour les administrateurs.
Remarques


$notify_virus_recips_templ

Défaut read_text('/var/amavis/notify_virus_recips.txt');
Syntaxe
Description
Modèle de notification pour les destinataires de virus.
Remarques


$notify_spam_sender_templ

Défaut read_text('/var/amavis/notify_spam_sender.txt');
Syntaxe
Description
Modèle de notification pour les expéditeurs de SPAM.
Remarques


$notify_spam_admin_templ

Défaut read_text('/var/amavis/notify_spam_admin.txt');
Syntaxe
Description
Modèle de notification de SPAM pour les Administrateurs.
Remarques


$final_virus_destiny

Défaut D_BOUNCE
Syntaxe

D_PASS : Le message sera distribué aux destinataires

D_BOUNCE : Le message sera stoppé et une notification AMAVIS sera envoyé à l'expéditeur et au destinataire

D_DISCARD : Le message contenant le virus sera stoppé et aucune notification ne sera envoyé

D_REJECT : Le message contenant le virus sera stoppé et une notification SMTP (non-delivery) sera envoyé à l'expéditeur

Description
Politique de traitement d'un message infecté par un virus.
Remarques
L'envoi réèl d'une notification dépend également des paramètres $warnvirussender et $warnvirusrecip


$final_banned_destiny

Défaut D_BOUNCE
Syntaxe

D_PASS : Le message sera distribué aux destinataires

D_BOUNCE : Le message sera stoppé et une notification AMAVIS sera envoyé à l'expéditeur et au destinataire

D_DISCARD : Le message sera stoppé et aucune notification ne sera envoyé

D_REJECT : Le message sera stoppé et une notification SMTP (non-delivery) sera envoyé à l'expéditeur

Description
Politique de traitement d'un message contenant une des extensions ou types mime interdit par le paramètre $banned_filename_re
Remarques
L'envoi réèl d'une notification dépend également des paramètres $warnbannedsender et $warnbannedrecip


$final_spam_destiny

Défaut D_REJECT
Syntaxe

D_PASS : Le message sera distribué aux destinataires

D_BOUNCE : Le message sera stoppé et une notification AMAVIS sera envoyé à l'expéditeur

D_DISCARD : Le message sera stoppé et aucune notification ne sera envoyé

D_REJECT : Le message sera stoppé et une notification SMTP (non-delivery) sera envoyé à l'expéditeur

Description
Politique de traitement d'un message considéré comme un Spam
Remarques

L'envoi réèl d'une notification dépend également du paramètre $warnspamsender

Pour laisser systématiquement les Spam en marquant les messages pour que votre client de messagerie puisse effectuer un filtrage, utilisez D_PASS et renseignez les paramètres $sa_spam_subject_tag et $sa_spam_modifies_subj

Remarque : Dans tous les cas, aucune notification n'est envoyé au destinataire.



$final_bad_header_destiny

Défaut D_PASS
Syntaxe

D_PASS : Le message sera distribué aux destinataires

D_BOUNCE : Le message sera stoppé et une notification AMAVIS sera envoyé à l'expéditeur

D_DISCARD : Le message sera stoppé et aucune notification ne sera envoyé

D_REJECT : Le message sera stoppé et une notification SMTP (non-delivery) sera envoyé à l'expéditeur

Description
Politique de traitement des entêtes invalides (selon la RFC 2822).
Remarques
L'envoi réèl d'une notification dépend également du paramètre $warnbadhsender


$warnvirussender

Défaut undef
Syntaxe 0, 1, undef
Description
Active ou désactive l'envoi d'une notification à l'expéditeur d'un virus.


$warnspamsender

Défaut undef
Syntaxe 0, 1, undef
Description
Active ou désactive l'envoi d'une notification à l'expéditeur d'un Spam.


$warnbannedsender

Défaut undef
Syntaxe 0, 1, undef
Description
Active ou désactive l'envoi d'une notification à l'expéditeur d'un fichier ou type mime interdit.


$warnbadhsender

Défaut undef
Syntaxe 0, 1, undef
Description
Active ou désactive l'envoi d'une notification à l'expéditeur d'un message contenant des entêtes invalides.


$warnvirusrecip

Défaut undef
Syntaxe
Description
Active ou désactive l'envoi d'une notification au destinataire d'un virus.


$warnbannedrecip

Défaut undef
Syntaxe
Description
Active ou désactive l'envoi d'une notification au destinataire d'un fichier ou type mime interdit.


$warn_offsite

Défaut undef
Syntaxe 0, 1, undef
Description
A VOIR!!!


$viruses_that_fake_sender_re

Défaut
new_RE(
  qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i,
  qr'tanatos|lentin|bridex|mimail|trojan\.dropper|dumaru|parite|gibe|swen'i,
  [qr'^(EICAR\.COM|Joke\.|Junk\.)'i           => 0],
  [qr'^(WM97|OF97|W95/CIH-|JS/Fortnight)'i    => 0],
);
Syntaxe
Description
N'enverra aucune notification à l'expéditeur ou au destinataire quand le nom du virus détecté correspond à une des valeurs de ce paramètre.
Remarques
Le nom du virus dépend de la valeur renvoyé par les anti-virus qui malheureusement ont leur propre politique de nommage. Il faudra peut être ajusté ces valeurs en fonctions de votre anti-virus.


$virus_admin

Défaut "virusalert\@$mydomain"
Syntaxe Adresse email valide ou undef
Description
Adresse email pour notifier les administrateurs de la détection d'un virus.
Remarques

Il est possible de faire varier l'adresse email du destinataire des notifications en fonction de l'email expéditeur du message original

Cette possibilité permet surtout de notifier une adresse d'administration du domaine incriminé.

$virus_admin = {
 '.example.com'       => 'abuse@example.com', 
 '.'                  => 'virusalert@domain.com',
};

# Description : 

# Envoi d'une notification à abuse@example.com pour les virus provenant du domaine example.com
'.example.com'       => 'abuse@example.com'

# Envoi d'une notification à virusalert@domain.com pour tous les autres.
'.'                  => 'virusalert@domain.com'


$spam_admin

Défaut undef
Syntaxe Adresse email valide ou undef
Description
Adresse email pour notifier les administrateurs de la détection d'un Spam.
Remarques

Il est possible de faire varier l'adresse email du destinataire des notifications en fonction de l'email expéditeur du message original

Cette possibilité permet surtout de notifier une adresse d'administration du domaine incriminé.

$spam_admin = {
 '.example.com'       => 'abuse@example.com', 
 '.'                  => 'spamalert@domain.com',
};

# Description : 

# Envoi d'une notification à abuse@example.com pour les spam provenant du domaine example.com
'.example.com'       => 'abuse@example.com'

# Envoi d'une notification à spamalert@domain.com pour tous les autres.
'.'                  => 'spamalert@domain.com'


$mailfrom_notify_admin

Défaut "virusalert\@$mydomain"
Syntaxe Adresse email valide ou undef
Description
Adresse email de l'expéditeur des notifications administrateurs.
Remarques
$mailfrom_notify_admin correspond à l'adresse expéditeur de l'enveloppe du message.


$mailfrom_notify_recip

Défaut "virusalert\@$mydomain"
Syntaxe Adresse email valide ou undef
Description
Adresse email de l'expéditeur des notifications de destinataire.
Remarques
$mailfrom_notify_recip correspond à l'adresse expéditeur de l'enveloppe du message.


$mailfrom_notify_spamadmin

Défaut "spam.police\@$mydomain"
Syntaxe Adresse email valide ou undef
Description
Adresse email de l'expéditeur des notifications administrateurs pour les Spam.
Remarques
$mailfrom_notify_spamadmin correspond à l'adresse expéditeur de l'enveloppe du message.


$hdrfrom_notify_sender

Défaut "amavisd-new <postmaster\@$myhostname>"
Syntaxe Adresse email valide utilisable dans un "reply" comme le précise la rfc1894
Description
Adresse email de l'expéditeur des notifications.
Remarques
$hdrfrom_notify_sender renseignera le champs From du message de notification


$hdrfrom_notify_admin

Défaut $mailfrom_notify_admin
Syntaxe Adresse email valide utilisable dans un "reply" comme le précise la rfc1894
Description
Adresse email de l'expéditeur des notifications d'administrateurs.
Remarques
$hdrfrom_notify_admin renseignera le champs From du message de notification


$hdrfrom_notify_spamadmin

Défaut $mailfrom_notify_spamadmin
Syntaxe Adresse email valide utilisable dans un "reply" comme le précise la rfc1894
Description
Adresse email de l'expéditeur des notifications d'administrateurs pour les Spam.
Remarques
$hdrfrom_notify_spamadmin renseignera le champs From du message de notification


$mailfrom_to_quarantine

Défaut undef
Syntaxe Adresse email valide ou undef (undef, laissera l'expéditeur orginal du message)
Description
Quand des messages sont envoyés en quarantaine, ce paramètre permet de modifier le champs "From" de l'enveloppe afin d'éviter, je pense, que lors d'une manipulation après mise en quarantaine, une notification soit à nouveau envoyé à l'expéditeur d'origine.


$QUARANTINEDIR

Défaut /var/virusmails
Syntaxe

Chemin unix valide avec les droits appropriés pour l'utilisateur executant amavis

undef pour désactiver la mise en quarantaine

Remarque : Il est possible de définir un chemin vers un fichier unique mais je n'ai pas testé cette possibilité.

Description
Répertoire de stockage des messages en quarantaine : Virus et Spam.
Remarques
Ce paramètre n'est utilisé que si xxx_quarantine method à une valeur 'local:xxx'


$virus_quarantine_method

Défaut "local:virus-%i-%n";
Syntaxe

"local:virus-%i-%n";

"bsmtp:$QUARANTINEDIR/virus-%i-%n.bsmtp";

Description
Méthode de stockage et macro de définition du nom de fichier lors de la mise en quarantaine d'un virus
Remarques

La méthode de mise en quarantaine dépend également du paramètre $virus_quarantine_to



$spam_quarantine_method

Défaut "local:spam-%b-%i-%n";
Syntaxe

"local:spam-%b-%i-%n";

"bsmtp:$QUARANTINEDIR/spam-%b-%i-%n.bsmtp";

Description
Méthode de stockage et macro de définition du nom de fichier lors de la mise en quarantaine d'un spam.
Remarques

La méthode de mise en quarantaine dépend également du paramètre $spam_quarantine_to



$virus_quarantine_to

Défaut 'virus-quarantine';
Syntaxe

undef pour désactiver la mise en quarantaine des virus

Adresse email local se terminant par "@" pour utiliser le MTA qui se chargera de la livraison

Adresse email complète pour router le message vers une BAL centralisé sur un autre serveur ou Imap

Multiple destination en fonction du destinataire original du message

Description

Destination des messages infectés par un virus et mis en quarantaine.

Exemple de nom de fichier avec la valeur par défaut : /var/virusmail/virus-20040228-111022-30239-02

Remarques
# Exemple de destination multiple en fonction du destinataire original du message :

$virus_quarantine_to = new_RE(         
  [qr'^user@example\.com$'i => 'infected@'],
  [qr'^(.*)@example\.com$'i => 'virus-${1}@example.com'],
  [qr'^(.*)(@[^@])?$'i      => 'virus-${1}${2}'],
  [qr/.*/                   => 'virus-quarantine'] 
);

# Description : 

# Pour le destinataire user@example.com, envera le message à l'adresse locale infected@
[qr'^user@example\.com$'i => 'infected@']

# Pour tous les destinataires de @example.com, envera le message à l'adresse virus-XXX@example.com
[qr'^(.*)@example\.com$'i => 'virus-${1}@example.com'],

# Pour tous les domaines dont l'adresse est valide, générera une adresse en utilisant 
# l'expéditeur et le domaine d'origine
[qr'^(.*)(@[^@])?$'i      => 'virus-${1}${2}'],

# Pour tous les autres, utilisera le stockage local direct sans passer par le MTA
[qr/.*/                   => 'virus-quarantine'] 

# Remarque : La première occurence trouvé interrompt le traitement


$spam_quarantine_to

Défaut 'spam-quarantine';
Syntaxe

undef pour désactiver la mise en quarantaine des spam

Adresse email local se terminant par "@" pour utiliser le MTA qui se chargera de la livraison

Adresse email complète pour router le message vers une BAL centralisé sur un autre serveur ou Imap

Multiple destination en fonction du destinataire original du message

Description

Destination des messages considérés comme Spam et mis en quarantaine.

Exemple de nom de fichier avec la valeur par défaut : spam-02512982a0be565e6399870cbefd5fc0-20040215-002535-25512-08.gz

Remarques
# Exemple de destination multiple en fonction du destinataire original du message :

$spam_quarantine_to = new_RE(
  [qr'^(.*)@example\.com$'i => 'spam-${1}@example.com'],
  [qr/.*/                   => 'spam-quarantine'] 
);

# Description : 

# Pour tous les destinataires de @example.com, envera le message à l'adresse spam-XXX@example.com
[qr'^(.*)@example\.com$'i => 'spam-${1}@example.com']

# Pour tous les autres, utilisera le stockage local direct sans passer par le MTA
[qr/.*/                   => 'spam-quarantine'] 

# Remarque : La première occurence trouvé interrompt le traitement


$spam_quarantine_bysender_to

Défaut undef
Syntaxe
Description
Variante de $spam_quarantine_to, basé sur l'adresse de l'expéditeur.
Remarques


$X_HEADER_TAG

Défaut X-Virus-Scanned
Syntaxe undef
Description
Ajout d'une entête au message traité.
Remarques


$X_HEADER_LINE

Défaut by amavisd-new at $mydomain
Syntaxe undef
Description
Texte qui sera affiché comme valeur de l'entête paramétré dans $X_HEADER_TAG.
Remarques


$remove_existing_x_scanned_headers

Défaut 0
Syntaxe
Description
Active ou désactive, la suppression d'entêtes Amavis/Virus existantes.
Remarques


$remove_existing_spam_headers

Défaut 1
Syntaxe
Description
Active ou désactive, la suppression d'entêtes Amavis/SPAM existantes.
Remarques


$bypass_decode_parts

Défaut 0
Syntaxe
Description
Active ou désactive le décodage Mime des messages multi-corps.
Remarques
Si ce paramètre est à 1, le décodage est confié à l'anti-virus dont ses capacités traitement peuvent être limité. Il vaut donc mieux laissé faire Amavis.


$keep_decoded_original_re

Défaut undef
Syntaxe $keep_decoded_original_re = new_RE( qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i, );
Description
A VOIR!!!
Remarques


$banned_filename_re

Défaut undef
Syntaxe qr'\.[a-zA-Z][a-zA-Z0-9]{0,3}\.(vbs|pif|scr|bat|com|exe|dll)$'i,);
Description
Extension de fichiers qui seront interdites dans les messages reçus.
Remarques


$virus_lovers

Défaut undef
Syntaxe
Description
Liste d'exclusion de l'analyse anti-virus pour certains destinataires.
Remarques
Pratique pour garder une adresse à laquelle des utilisateurs pourraient poster des virus que vous voulez analyser ou transmettre à un éditeur d'anti-virus.


@virus_lovers_acl

Défaut undef
Syntaxe
Description
Remarques


$bypass_virus_checks

Défaut undef
Syntaxe
Description
Remarques


@bypass_virus_checks_acl

Défaut undef
Syntaxe
Description
Remarques


$virus_lovers_re

Défaut undef
Syntaxe
Description
Remarques


$spam_lovers

Défaut undef
Syntaxe
Description
Remarques


@spam_lovers_acl

Défaut undef
Syntaxe
Description
Remarques


$spam_lovers_re

Défaut undef
Syntaxe
Description
Remarques


@lookup_sql_dsn

Défaut undef
Syntaxe
Description
Remarques


$sql_select_policy

Défaut undef
Syntaxe
Description
Remarques


$sql_select_white_black_list

Défaut 'SELECT wb FROM wblist,mailaddr'
Syntaxe
Description
Remarques


$addr_extension_virus

Défaut undef
Syntaxe
Description
Remarques


$addr_extension_spam

Défaut undef
Syntaxe
Description
Remarques


$addr_extension_banned

Défaut undef
Syntaxe
Description
Remarques


$recipient_delimiter

Défaut +
Syntaxe
Description
Remarques


$replace_existing_extension

Défaut 0
Syntaxe
Description
Remarques


$localpart_is_case_sensitive

Défaut 0
Syntaxe
Description
Remarques


%whitelist_sender

Défaut undef
Syntaxe read_hash(\%whitelist_sender, '/var/amavis/whitelist_sender')
Description
Remarques


@whitelist_sender_acl

Défaut undef
Syntaxe
Description
Remarques


$whitelist_sender_re

Défaut undef
Syntaxe
Description
Remarques


%blacklist_sender

Défaut undef
Syntaxe
Description
Remarques


@blacklist_sender_acl

Défaut undef
Syntaxe
Description
Remarques


$blacklist_sender_re

Défaut undef
Syntaxe
Description
Remarques


map

Défaut undef
Syntaxe map { $whitelist_sender{lc($_)}=1 } (qw( cert-advisory-owner@cert.org owner-alert@iss.net slashdot@slashdot.org bugtraq@securityfocus.com NTBUGTRAQ@LISTSERV.NTBUGTRAQ.COM security-alerts@linuxsecurity.com amavis-user-admin@lists.sourceforge.net notification-return@lists.sophos.com mailman-announce-admin@python.org owner-postfix-users@postfix.org owner-postfix-announce@postfix.org owner-sendmail-announce@Lists.Sendmail.ORG owner-technews@postel.ACM.ORG lvs-users-admin@LinuxVirtualServer.org ietf-123-owner@loki.ietf.org cvs-commits-list-admin@gnome.org rt-users-admin@lists.fsck.com clp-request@comp.nus.edu.sg surveys-errors@lists.nua.ie emailNews@genomeweb.com owner-textbreakingnews@CNNIMAIL12.CNN.COM spamassassin-talk-admin@lists.sourceforge.net yahoo-dev-null@yahoo-inc.com returns.groups.yahoo.com ));
Description
Remarques


$per_recip_blacklist_sender_lookup_tables

Défaut undef
Syntaxe
Description
Remarques


$per_recip_whitelist_sender_lookup_tables

Défaut undef
Syntaxe
Description
Remarques


$smtpd_recipient_limit

Défaut 1000
Syntaxe
Description
Remarques


$MAXLEVELS

Défaut 14
Syntaxe

Valeur numérique => zéro ou undef.

Mettre 0 (zéro) ou undef pour supprimer la limitation (dangereux)

Description

Nombre maximum d'archives imbriqués.

Exemple : un fichier zip, contenant un autre fichier zip qui contient à son tour un fichier zip...

Remarques

Imbriquer de multiples fichiers archives est une forme d'attaque possible en déni de service.

L'objectif est de laisser amavis boucler sur les multiples tâches de décompression pour chaque niveau.



$MAXFILES

Défaut 1500
Syntaxe

Valeur numérique => zéro ou undef.

Mettre 0 (zéro) ou undef pour supprimer la limitation (dangereux)

Description
Nombre maximum de fichiers qui seront extrait d'une archive pour analyse
Remarques


$MIN_EXPANSION_QUOTA

Défaut undef
Syntaxe 100*1024
Description
Remarques


$MAX_EXPANSION_QUOTA

Défaut undef
Syntaxe 300*1024*1024
Description
Remarques


$MIN_EXPANSION_FACTOR

Défaut undef
Syntaxe 5
Description
Remarques


$MAX_EXPANSION_FACTOR

Défaut undef
Syntaxe 500
Description
Remarques


$path

Défaut /usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin
Syntaxe
Description
Remarques


$file

Défaut file
Syntaxe
Description
Remarques


$gzip

Défaut gzip
Syntaxe
Description
Remarques


$bzip2

Défaut bzip2
Syntaxe
Description
Remarques


$lzop

Défaut lzop
Syntaxe
Description
Remarques


$uncompress

Défaut ['uncompress', 'gzip -d', 'zcat']
Syntaxe
Description
Remarques


$unfreeze

Défaut ['unfreeze', 'freeze -d', 'melt', 'fcat']
Syntaxe
Description
Remarques


$arc

Défaut ['nomarch', 'arc']
Syntaxe
Description
Remarques


$unarj

Défaut ['arj', 'unarj']
Syntaxe
Description
Remarques


$unrar

Défaut ['rar', 'unrar']
Syntaxe
Description
Remarques


$zoo

Défaut zoo
Syntaxe
Description
Remarques


$lha

Défaut lha
Syntaxe
Description
Remarques


$cpio

Défaut cpio
Syntaxe
Description
Remarques


$sa_local_tests_only

Défaut 1
Syntaxe 0 (zéro) pour activer les tests utilisant le réseau et 1 pour les désactiver
Description
Outrepasse les paramètres de SpamAssassin pour activer/désactiver les phases d'analyses faisant appel au réseau comme Razor, DCC, DNS, etc..


$sa_auto_whitelist

Défaut 0
Syntaxe 0 (zéro) pour désactiver et 1 pour activer
Description
Active / désactive la fonction de liste blanche automatique (AWL) de SpamAssassin


$sa_mail_body_size_limit

Défaut 150*1024;
Syntaxe Valeur numérique supérieur à zéro ou undef pour désactiver la limitation.
Description
Limitation de la taille du message que SpamAssassin acceptera d'analyser. Par défaut dans Amavis : 150Ko
Remarques

La documentation semble dire que moins de 1% des spam ont une taille supérieur à 64ko

Attention : Attention à bien surveiller les logs pour détecter un éventuel refus d'analyse de SpamAssasin qui voudra surement dire qu'un message dont la taille est supérieur à cette limite vient d'être soumis et refuser pour analyse.



$sa_tag_level_deflt

Défaut 3.0
Syntaxe Valeur numérique positive ou négative
Description
Nombre de point à partir duquel les entêtes "X-Spam-Status" et "X-Spam-Level" seront ajoutés au message par SpamAssassin
Remarques

Ce paramètres est très important pour résoudre les problèmes de faux-négatifs.

Les entêtes seront ajoutés que le message soit un spam ou non à partir du moment que le nombre de point est atteind

Conseil : Mettez la valeur "-999" pour que les entêtes soit ajouté à tous les messages.



$sa_tag2_level_deflt

Défaut 6.3
Syntaxe Valeur numérique en général supérieur à 0 (zéro) et surtout supérieur ou égale à $sa_tag_level_deflt
Description

Nombre de point à partir duquel l'entête "X-Spam-Flag: YES" sera ajouté par SpamAssassin et que le sujet du message sera modifié

Outrepasse le paramètre "required_hits" de SpamAssassin



$sa_kill_level_deflt

Défaut $sa_tag2_level_deflt
Syntaxe Valeur numérique en général supérieur à 0 (zéro) et surtout supérieur ou égale à $sa_tag_level_deflt et $sa_tag2_level_deflt
Description

Nombre de point à partir duquel le traitement réservé au Spam sera appliqué (mise en quarantaine, etc...)

Outrepasse le paramètre "required_hits" de SpamAssassin



$sa_spam_subject_tag

Défaut ***SPAM***
Syntaxe N'importe quel chaine de caractère valide dans une entête "Subject"
Description

Chaine de caractère qui sera ajouté avant le sujet original du message

Outrepasse le paramètre "subject_tag" de SpamAssassin



$sa_spam_modifies_subj

Défaut 1
Syntaxe 0 (zéro) pour ne pas modifier le sujet ou 1 pour le modifier
Description

Active / Désactive la réécriture du sujet original du message

Outrepasse le paramètre "rewrite_subject" de SpamAssassin

Remarques

L'objectif de ce paramètre est de laisser passer les Spam en les marquants pour que le client de messagerie puisse définir un filtre automatique individuel (poubelle ou classement pour analyse manuel)

Ce paramètre ne fonctionnera que dans les conditions suivantes :

Info : Pour utiliser une réécriture conditionné par le destinataire utilisez la syntaxe suivante :

$sa_spam_modifies_subj = [qw( !user@example.com . )];


@av_scanners

Défaut Liste trop longue pour l'inscrire ici
Syntaxe

L'ajout d'un anti-virus suit la syntaxe suivante :

1. Nom de l'anti-virus. Ce nom sera utilisé dans les rapports et dans les logs
2. Nom du programme qui sera appellé par la fonction find_external_programs()
3. Paramètres à passer à la ligne de commande
4. Réponse fournie pas l'anti-virus quand aucun virus n'a été trouvé
5. Réponse fournie pas l'anti-virus quand un virus a été trouvé
6. Récupération du nom du ou des virus trouvés
7. Routine à exécuter avant le scan (optionnel)
8. Routine à exécuter après le scan (optionnel)

Exemple avec clamav en mode daemon : 

['Clam Antivirus-clamd',
  \&ask_daemon, 
  ["CONTSCAN {}\n", '/var/amavis/clamd'],
  qr/\bOK$/, 
  qr/\bFOUND$/,
  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ 
],

En général, il vous suffit de décommenter les lignes des anti-virus que vous utilisez

Description
Liste des anti-virus par défaut qui seront utilisés pour l'analyse virale
Remarques

Les anti-virus sont appellés dans l'ordre ou ils apparaissent. Si un virus est trouvé par l'un d'entre eux, les anti-virus suivant sont tous de même interrogés.

Au chargement, Amavis vérifie la disponibilité de chaque anti-virus (décommenté) mais n'utilise ensuite que ceux qu'il a véritablement trouvé sur la machine



@av_scanners_backup

Défaut Liste trop longue pour l'inscrire ici
Syntaxe
Description
Liste d'anti-virus de secours
Remarques
Ces anti-virus sont appellés quand la liste @av_scanners est vide et dans d'autres conditions que je n'ai pas compris


@debug_sender_acl

Défaut undef
Syntaxe
@debug_sender_acl = ( "test-sender\@$mydomain" );

@debug_sender_acl = qw( debug@example.com );
Description
Debuggage selectif sur des adresses d'expéditeurs spécifiques.
Remarques
A priori, ce paramètre ne fonctionne que lorsqu'amavis est lancé en ligne de commande : amavisd debug


$keep_decoded_original_re

Défaut undef
Syntaxe
$keep_decoded_original_re = new_RE( qr/.*/ );
Description
A priori, empêche le remplacement du message original par sa version décodé (mime, extraction ...)
Remarques


$sa_debug

Défaut 0
Syntaxe
Description
Active le debuggage de SpamAssassin lorsque amavis est lancé avec "amavisd debug"


$enable_ldap

Défaut
Syntaxe
Description
Remarques


$default_ldap

Défaut
Syntaxe $default_ldap = { hostname => 'localhost', tls => 0, base => 'ou=hosting,dc=example,dc=com', scope => 'sub', query_filter => '(&(objectClass=amavisAccount)(mail=%m))' }; hostname : The hostname of the LDAP server we connect to. (Default = 'localhost') port : The port where LDAP sends queries. (Default = 389) timeout : Timeout (in sec) passed when connecting the remote server. (Default = 120) tls : Enable TLS/SSL if true. (Default = 0) base : The DN that is the base object entry relative to which the search is to be performed. (Default = undef) scope : Scope can be 'base', 'one' or 'sub'. (Default = 'sub') query_filter : The filter used to find the amavis account. The string must contain a '%m' token that will be replaced by the actual e-mail address. (Default = '(&(objectClass=amavisAccount)(mail=%m))') res_attr : (Default = undef) res_filter : (Default = %r) bind_dn : If binding is needed, this is where you specify the DN to bind as. (Default = undef) bind_password : Binding password. (Default = undef)
Description
Remarques


Remerciements

Liens