Table des matières

Antispam/Antivirus

Configuration de l'antispam/antivirus

Les services postgrey et amavis sont indépendants (les mails arrivant de l'extérieur font deux aller-retours sur la machine spam).

Postgrey

Pour des raisons de lenteur, ce service n'est plus utilisé à MiNET.

Pour chaque message, postgrey analysait les trois informations suivantes :

Quand un message (triplet [IP relais, @émetteur, @destinataire]) arrivait sur le serveur spam, s'il s'agissait d'un nouveau triplet (absent de la base de données locale), le message était rejeté temporairement pour une durée limitée.

Une whitelist de clients était présente dans /etc/postgrey/whitelist_clients et permettait d'éviter un délai d'attente pour des serveurs supposés sûrs (par exemple ceux de l'école).

Amavis (ClamAV et Spamassassin)

amavis-new est un démon qui filtre les mails (en les faisant passer par ClamAV et Spamassassin). La configuration se fait dans /etc/amavis/conf.d :

15-content_filter_mode pour activer/désactiver antivirus et antispam

50-user pour la configuration (y compris de spamassassin, en fait le démon ne tourne pas, et amavis utilise l'API Perl directement). Le fichier est très bien commenté (mais fait quand même plus de 2300 lignes…). Quelques extraits intéressants :

# Net::Server pre-forking settings
# The $max_servers should match the width of your MTA pipe
# feeding amavisd, e.g. with Postfix the 'Max procs' field in the
# master.cf file, like the '2' in the:  smtp-amavis unix - - n - 2 smtp
#
$max_servers  =  6;   # number of pre-forked children          (default 2), -m
$max_requests = 10;   # retire a child after that many accepts (default 10)
 
$child_timeout=8*60;  # abort child if it does not complete its processing in
                      # approximately n seconds (default: 8*60 seconds)
 
$smtpd_timeout = 120; # disconnect session if client is idle for too long
                      # (default: 8*60 seconds); should be higher than a
                      # Postfix setting max_idle (default 100s)

À tenir à jour vis-à-vis de la conf postfix des MX (maxproc dans les master.cf).

$final_virus_destiny      = D_BOUNCE; # (defaults to D_DISCARD)
$final_banned_destiny     = D_BOUNCE;  # (defaults to D_BOUNCE)
$final_spam_destiny       = D_BOUNCE;  # (defaults to D_BOUNCE)
$final_bad_header_destiny = D_PASS;    # (defaults to D_PASS)

Permet de décider ce qu'on fait des messages selon leur statut.

$sa_tag_level_deflt  = 0.0; # add spam info headers if at, or above that level;
                            # undef is interpreted as lower than any spam level
$sa_tag2_level_deflt = 3.0; # add 'spam detected' headers at that level to
                            # passed mail, adding address extensions;
$sa_kill_level_deflt = 5.0; # triggers spam evasive actions
                            # at or above that level: bounce/reject/drop,
                            # quarantine
$sa_dsn_cutoff_level = 9.0; # spam level beyond which a DSN is not sent,
                            # effectively turning D_BOUNCE into D_DISCARD;
                            # undef disables this feature and is a default;

Définit les seuils de score Spamassassin.

$sa_spam_subject_tag = '***Spam*** ';

Permet de choisir ce qu'on insère en objet des mails détectés comme Spam.

Mise à jour de l'antivirus

freshclam maintient ClamAV à jour.

Mise à jour des filtres antispam

export http_proxy='http://192.168.102.62:82'
sa-update -D
sa-compile
/etc/init.d/amavis restart

(-D affiche plus d'informations en cas de problème).

Une tâche cron met à jour les filtres tous les matins.

Sortie de quarantaine

Les mails placés en quarantaine sont écrits dans /var/lib/amavis/virusmails, dans les dissiers banned, spam et virus. Quand un mail est placé en quarantaine, une notification est envoyée sur la mailing-list root. Pour sortir un mail de quarantaine à partir de son identifiant (par exemple récupéré dans le mail de notification) :

The message has been quarantined as: spam/h/h9sz1GydIRvO.gz

On effectue (en root) :

amavisd-release spam/h/h9sz1GydIRvO.gz