22
0
Fork 0

relecture

This commit is contained in:
Gregory Colpart 2017-10-22 19:31:54 +02:00
parent 5303fcc4fd
commit 222b87b983
3 changed files with 335 additions and 129 deletions

View File

@ -6,7 +6,7 @@ title: Howto Amavis
* Documentation : <https://www.ijs.si/software/amavisd/#doc> * Documentation : <https://www.ijs.si/software/amavisd/#doc>
[Amavis](https://www.ijs.si/software/amavisd/) est ... [Amavis](https://www.ijs.si/software/amavisd/) est logiciel qui permet de filtrer les emails pour détecter des virus, spams ou pièces jointes. Il s'interface avec un serveur [SMTP](HowtoSMTP) comme [Postfix](HowtoPostfix) et permet d'utiliser des logiciels externes comme ClamAV ou SpamAssassin.
## Installation ## Installation
@ -50,11 +50,10 @@ Fichiers de configuration :
└── README.l10n └── README.l10n
~~~ ~~~
La configuration se trouve dans _/etc/amavis/conf.d/_ et se modifie/surcharge (autant que possible) dans le fichier _50-user_. La configuration se trouve dans les fichiers du répertoire `/etc/amavis/conf.d/` et nous utilisons le fichier /etc/dovecot/conf.d/49-evolinux-defaults.conf` pour notre configuration de base :
Voici les directives que l'on pourra modifier :
~~~ ~~~
# Correction d'un bug sous Lenny # expediteur des notifications
$mailfrom_notify_admin = "postmaster\@$mydomain"; $mailfrom_notify_admin = "postmaster\@$mydomain";
$mailfrom_notify_recip = "postmaster\@$mydomain"; $mailfrom_notify_recip = "postmaster\@$mydomain";
$mailfrom_notify_spamadmin = "postmaster\@$mydomain"; $mailfrom_notify_spamadmin = "postmaster\@$mydomain";
@ -69,6 +68,12 @@ $X_HEADER_LINE = "by Amavis at $mydomain";
# Notifications de fichiers bannis / virus # Notifications de fichiers bannis / virus
$virus_admin = "postmaster\@$mydomain"; $virus_admin = "postmaster\@$mydomain";
# Que faire avec les messages détectés
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_BOUNCE;
$final_bad_header_destiny = D_PASS;
# Pour recevoir des bounces (mails originals) des fichiers bloqués / virus # Pour recevoir des bounces (mails originals) des fichiers bloqués / virus
#$banned_quarantine_to = "banned\@$mydomain"; #$banned_quarantine_to = "banned\@$mydomain";
#$virus_quarantine_to = "virus\@$mydomain"; #$virus_quarantine_to = "virus\@$mydomain";
@ -79,41 +84,18 @@ $sa_tag2_level_deflt = 6.31;
$sa_tag_level_deflt = -1999; $sa_tag_level_deflt = -1999;
$sa_kill_level_deflt = 1999; $sa_kill_level_deflt = 1999;
$sa_dsn_cutoff_level = -99; $sa_dsn_cutoff_level = -99;
$sa_spam_subject_tag = '[SPAM]'; $sa_spam_subject_tag = '[SPAM] ';
# log # log
$log_level = 2; $log_level = 2;
# En fonction besoin/ressources, on ajuste le nbre de process # En fonction besoin/ressources, on ajuste le nbre de process
$max_servers = 10; $max_servers = 5;
~~~ ~~~
Le comportement des notifications par défaut est de : ### Configuration avec Postfix
* notifier l'expéditeur (?) et $virus_admin lors de la présence d'un fichier banni, mail non délivré Pour activer Amavis avec [Postfix](HowtoPostfix), on ajoutera dans le fichier `/etc/postfix/master.cf` :
* notifier $virus_admin lors de la présence d'un virus, mail non délivré
* Évidemment pour les spams, personne n'est notifié
Note : Si le domaine de l'expéditeur est dans @local_domains_acl, alors l'expéditeur est toujours notifié !
Pour activer l'antivirus et/ou l'antispam, on décommentera les lignes adéquats dans le fichier _15-content_filter_mode_...
Avant d'activer l'antivirus ClamAV, on ajoutera l'utilisateur _clamav_ dans le groupe _amavis_ pour autoriser clamd à lire dans /var/lib/amavis
et l'inverse pour autoriser amavisd à lancer clamscan (et lire dans /var/lib/clamav) :
~~~
# adduser clamav amavis
# adduser amavis clamav
~~~
Il faut aussi modifier ce paramètre dans /etc/clamav/clamd.conf :
~~~
AllowSupplementaryGroups true
~~~
Pour activer Amavis avec Postfix, on ajoutera dans le fichier _master.cf_ :
~~~ ~~~
smtp-amavis unix - - y - 2 lmtp smtp-amavis unix - - y - 2 lmtp
@ -152,15 +134,78 @@ pre-cleanup unix n - n - 0 cleanup
-o recipient_bcc_maps= -o recipient_bcc_maps=
~~~ ~~~
Pour éviter les doublons, il est conseillé d'ajouter l'option _-o cleanup_service_name=pre-cleanup_ Pour éviter les doublons, il est conseillé d'ajouter l'option `-o cleanup_service_name=pre-cleanup`
aux services _smtp_, _cleanup_, _submission_ et _smtps_. aux services _smtp_, _cleanup_, _submission_ et _smtps_.
Et dans _main.cf_ : Et enfin dans `/etc/postfix/main.cf` :
~~~ ~~~
content_filter = smtp-amavis:[127.0.0.1]:10024 content_filter = smtp-amavis:[127.0.0.1]:10024
~~~ ~~~
## Filtres externes
### ClamAV
L'usage principal d'Amavis est de lancer un antivirus, notamment [ClamAV](https://www.clamav.net/) qui est libre et gratuit.
~~~
# apt install clamav-daemon
# adduser clamav amavis
# adduser amavis clamav
~~~
Il faut aussi modifier ce paramètre via `/etc/clamav/clamd.conf` :
~~~
AllowSupplementaryGroups true
~~~
Et enfin on active l'antivirus dans la configuration Amavis via la ligne :
~~~
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
~~~
### SpamAssassin
On peut aussi lancer [SpamAssassin](HowtoSpamAssassin) avec Amavis.
~~~
# apt install spamassassin spamc
~~~
Puis on active SpamAssassin dans la configuration Amavis via la ligne :
~~~
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
~~~
## Administration
### Notifications
Le comportement des notifications par défaut est de :
* notifier l'expéditeur (?) et $virus_admin lors de la présence d'un fichier banni, mail non délivré
* notifier $virus_admin lors de la présence d'un virus, mail non délivré
* évidemment pour les spams, personne n'est notifié
> *Note* : Si le domaine de l'expéditeur est dans `@local_domains_acl`, alors l'expéditeur est toujours notifié !
On peut modifier ce comportement avec les directives :
~~~
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_BOUNCE;
$final_bad_header_destiny = D_PASS;
~~~
### Ressortir un mail de quarantaine ### Ressortir un mail de quarantaine
Lorsqu'un mail est mis en quarantaine, amavisd logue un message du style : Lorsqu'un mail est mis en quarantaine, amavisd logue un message du style :
@ -175,22 +220,18 @@ Pour le ressortir de la quarantaine et le renvoyer au destinataire :
# amavisd-release 5/banned-5VspXCi2iNIn # amavisd-release 5/banned-5VspXCi2iNIn
~~~ ~~~
#### Erreur "Can't connect to UNIX socket" ### Renvoyer les emails bloqués vers une adresse email
Il est possible que la chaussette d'Amavis soit située dans /var/run à la place de /var/lib, dans ce cas il suffit de modifier la socket dans /etc/amavis/conf.d/25-amavis_helpers : Tous les emails bloqués (virus, fichiers bannis, etc.) peuvent être renvoyés sur une adresse.
Pour cela, on configure le paramètre suivant :
~~~ ~~~
$unix_socketname = "/var/lib/amavis/amavisd.sock"; $banned_quarantine_to = "quarantaine\@example.com";
~~~ ~~~
### Bouncer tout les mails bloqués vers une adresse mail ### Whitelister une adresse email
Rajouter ceci dans le fichier _/etc/amavis/conf.d/50-user_ : On peut mettre en liste blanche des adresses email via la directive :
$banned_quarantine_to = "nom\@domain.com";
### Whitelister une adresse mail
Rajouter ceci dans le fichier _/etc/amavis/conf.d/50-user_ :
~~~ ~~~
@whitelist_sender_maps = ( new_RE( @whitelist_sender_maps = ( new_RE(
@ -198,69 +239,49 @@ Rajouter ceci dans le fichier _/etc/amavis/conf.d/50-user_ :
)); ));
~~~ ~~~
## Intégration LDAP
Rajouter le schéma de `https://amavis.org/LDAP.schema.txt` en le convertissant en LDIF. ## Intégration avec LDAP
``` Amavis a besoin d'avoir son propre schéma LDAP : <https://amavis.org/LDAP.schema.txt>
$ cd /tmp
$ wget https://amavis.org/LDAP.schema.txt
$ mkdir /tmp/ldif
$ echo 'include /tmp/LDAP.schema.txt' >> /tmp/slap.conf
# slaptest -f /tmp/slap.conf -F /tmp/ldif/
```
Changer les attributs : Il faut intégrer ce schéma à votre annuaire LDAP puis configurer Amavis :
``` ~~~
dn: cn={0}ldap
objectClass: olcSchemaConfig
cn: {0}ldap
```
Par (avec le bon numéro `ls /etc/ldap/slapd.d/cn\=config/cn\=schema/cn\=\{*`) :
```
dn: cn={5}amavis
objectClass: olcSchemaConfig
cn: {5}amavis
```
Supprimer à la fin :
```
entryUUID: 4437d7ae-914f-1036-9cdf-cd9cc71d539a
creatorsName: cn=config
createTimestamp: 20170227154345Z
entryCSN: 20170227154345.031267Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20170227154345Z
```
Supprimer la ligne cr32 :
```
# CRC32 32ff7a5a
```
Le copier dans le dossier des schémas :
```
# install -v -o openldap -g openldap -m 640 /tmp/ldif/cn\=config/cn\=schema/cn\=\{0\}ldap.ldif /etc/ldap/slapd.d/cn\=config/cn\=schema/cn\=\{5\}amavis.ldif
```
Puis redémarrer slapd.
On pourra ensuite ajouter ceci dans la configuration amavis :
```
$enable_ldap = 1; $enable_ldap = 1;
$default_ldap = { $default_ldap = {
hostname => '127.0.0.1', tls => 0, hostname => '127.0.0.1', tls => 0,
base => 'cn=%d,dc=mail,dc=domain,dc=tld', scope => 'sub', base => 'cn=%d,ou=people,dc=example,dc=com', scope => 'sub',
query_filter => '(&(mailacceptinggeneralid=%m)(accountActive=TRUE))' query_filter => '(&(mailacceptinggeneralid=%m)(accountActive=TRUE))'
}; };
~~~
Évidemment, vous devez adapter la configuration à votre annuaire LDAP, notamment `query_filter`.
Vous pouvez ensuite ajouter la classe `amavisAccount` à vos objets et utiliser les différents attributs (`amavisBypassVirusChecks`, `amavisBypassSpamChecks`, `amavisSpamTagLevel`, etc.).
## Monitoring
### Nagios
Nous utilisons ce petit script Perl [check_amavis.pl](https://github.com/glensc/monitoring-plugin-check_amavis) :
~~~
$ /usr/local/lib/nagios/plugins/check_amavis --server 127.0.0.1 --from monitoring@example.com --to postmaster@localhost --port 10024
~~~
## FAQ
### Erreur "Can't connect to UNIX socket"
Si vous obtenez cette erreur, il est possible que la socket d'Amavis soit
située dans `/var/run/` à la place de `/var/lib/`. Dans ce cas il suffit de
modifier la socket dans la configuration d'Amavis :
~~~
$unix_socketname = "/var/lib/amavis/amavisd.sock";
~~~
```
> **Note**: La `query_filter` est propre au schéma Evolix.

View File

@ -42,36 +42,36 @@ Fichiers de configuration :
~~~ ~~~
/etc/dovecot/ /etc/dovecot/
── dovecot.conf dovecot.conf
── conf.d/ conf.d/
   ├── 10-auth.conf ├── 10-auth.conf
   ├── 10-director.conf ├── 10-director.conf
   ├── 10-logging.conf ├── 10-logging.conf
   ├── 10-mail.conf ├── 10-mail.conf
   ├── 10-master.conf ├── 10-master.conf
   ├── 10-ssl.conf ├── 10-ssl.conf
   ├── 10-tcpwrapper.conf ├── 10-tcpwrapper.conf
   ├── 15-lda.conf ├── 15-lda.conf
   ├── 15-mailboxes.conf ├── 15-mailboxes.conf
   ├── 20-imap.conf ├── 20-imap.conf
   ├── 20-managesieve.conf ├── 20-managesieve.conf
   ├── 20-pop3.conf ├── 20-pop3.conf
   ├── 90-acl.conf ├── 90-acl.conf
   ├── 90-plugin.conf ├── 90-plugin.conf
   ├── 90-quota.conf ├── 90-quota.conf
   ├── 90-sieve.conf ├── 90-sieve.conf
   ├── 90-sieve-extprograms.conf ├── 90-sieve-extprograms.conf
   ├── auth-checkpassword.conf.ext ├── auth-checkpassword.conf.ext
   ├── auth-deny.conf.ext ├── auth-deny.conf.ext
   ├── auth-dict.conf.ext ├── auth-dict.conf.ext
   ├── auth-ldap.conf.ext ├── auth-ldap.conf.ext
   ├── auth-master.conf.ext ├── auth-master.conf.ext
   ├── auth-passwdfile.conf.ext ├── auth-passwdfile.conf.ext
   ├── auth-sql.conf.ext ├── auth-sql.conf.ext
   ├── auth-static.conf.ext ├── auth-static.conf.ext
   ├── auth-system.conf.ext ├── auth-system.conf.ext
   ├── auth-vpopmail.conf.ext ├── auth-vpopmail.conf.ext
   └── z-evolinux-defaults.conf └── z-evolinux-defaults.conf
├── dovecot-dict-auth.conf.ext ├── dovecot-dict-auth.conf.ext
├── dovecot-dict-sql.conf.ext ├── dovecot-dict-sql.conf.ext
├── dovecot-ldap.conf.ext ├── dovecot-ldap.conf.ext
@ -564,4 +564,4 @@ Si vous constatez une lenteur à chaque requête avec votre client POP/IMAP (Rou
~~~ ~~~
#!include auth-system.conf.ext #!include auth-system.conf.ext
~~~ ~~~

185
HowtoSpamAssassin.md Normal file
View File

@ -0,0 +1,185 @@
---
categories: mail
title: Howto SpamAssassin
...
* Documentation : <http://spamassassin.apache.org/doc.html>
[SpamAssassin](http://spamassassin.apache.org/) est un filtre pour évaluer si des emails sont des spams.
## Installation
Nous utilisons la version [Apache-ITK](http://mpm-itk.sesse.net/) depuis des années en production sur de nombreux serveurs critiques. Apache-ITK permet de préciser pour chaque VirtualHost un utilisateur, un groupe et une option *MaxClients* spécifiques, ce qui est utile pour la sécurité d'un serveur multi-sites.
~~~
# apt install spamassassin spamc
~~~
## Configuration
~~~
required_score 5
report_safe 0
rewrite_header Subject [SPAM]
add_header all Report _REPORT_
# filtre bayesien
# mkdir -p /var/spool/spam
use_bayes 1
bayes_auto_learn 1
bayes_path /var/spool/spam/bayes
bayes_file_mode 0777
# AWL : AutoWhitelist
# mkdir -p /var/spool/spam
loadplugin Mail::SpamAssassin::Plugin::AWL
use_auto_whitelist 1
auto_whitelist_path /var/spool/spam/auto_whitelist
auto_whitelist_file_mode 0666
# LANG TESTS
Mail::SpamAssassin::Plugin::TextCat
ok_languages en fr es it
ok_locales en fr es it
score BODY_8BITS 1.500
score CHARSET_FARAWAY 3.200
score CHARSET_FARAWAY_HEADER 3.200
score HTML_CHARSET_FARAWAY 0.500
score MIME_CHARSET_FARAWAY 2.450
score UNWANTED_LANGUAGE_BODY 2.800
# DCC
# use_dcc 1 => un plugin maintenant...
score DCC_CHECK 2.9
# RAZOR : <http://razor.sourceforge.net>
use_razor2 1
razor_timeout 10
score RAZOR2_CHECK 2.9
score RAZOR2_CF_RANGE_51_100 1.3
# pyzor : <http://pyzor.sourceforge.net/>
use_pyzor 0
# RBL (Realtime Blackhole List)
skip_rbl_checks 0
score RCVD_IN_BL_SPAMCOP_NET 3
# misc
score HELO_DYNAMIC_IPADDR 0.3
score BIZ_TLD 0.1
score PRIORITY_NO_NAME 0.2
# disable HTML tests
score HTML_MESSAGE 0
score HTML_00_10 0
score HTML_10_20 0
score HTML_20_30 0
score HTML_30_40 0
score HTML_40_50 0
score HTML_50_60 0
score HTML_60_70 0
score HTML_70_80 0
score HTML_80_90 0
score HTML_90_100 0
#score HTML_COMMENT_8BITS 0
score UPPERCASE_25_50 0
score UPPERCASE_50_75 0
score UPPERCASE_75_100 0
score MIME_HTML_ONLY 0.1
# From <http://maxime.ritter.eu.org/Spam/user_prefs>
# Trop de faux negatifs avec BAYES_(0|1|2|3|4)*
score BAYES_00 0 0 -0.01 -0.01
score BAYES_01 0 0 -0.01 -0.01
score BAYES_10 0 0 -0.01 -0.01
score BAYES_20 0 0 -0.01 -0.01
score BAYES_30 0 0 -0.01 -0.01
score BAYES_40 0 0 -0.01 -0.01
score BAYES_44 0 0 -0.01 -0.01
score BAYES_50 0 0 0.1 0.1
score BAYES_56 0 0 0.5 0.5
score BAYES_60 0 0 1.0 1.0
score BAYES_70 0 0 2.5 2.5
score BAYES_80 0 0 3.5 3.5
score BAYES_90 0 0 4.5 4.5
score BAYES_99 0 0 8.0 8.0
score RCVD_IN_SORBS_DUL 0.3
score SUBJ_ILLEGAL_CHARS 0
score RCVD_IN_NJABL_DUL 0.3
score ADDRESS_IN_SUBJECT 0.1
score HELO_LH_HOME 1.0
#internal_networks 192.168.XXX/24
trusted_networks 31.170.8.33 31.170.8.15 62.212.111.216 88.179.18.233 85.118.59.50
#score ALL_TRUSTED 0.3
score HELO_DYNAMIC_IPADDR 0.3
score FORGED_MUA_OUTLOOK 0.5
# Eudora sucks
score EXTRA_MPART_TYPE 0.1
score MIME_BOUND_EQ_REL 0.1
score MIME_QP_LONG_LINE 0.1
# SMTP senders *have* dynamic IP addresses
# A.B.C.D.dnsbl.sorbs.net -> 127.0.0.10
score RCVD_IN_DYNABLOCK 0
score HELO_DYNAMIC_IPADDR 0.3
score RCVD_IN_SORBS 0.1
score RCVD_IN_PBL 0.1
score RCVD_IN_SORBS_DUL 0
# old bug...
score FH_DATE_PAST_20XX 0.0
~~~
### AWL : AutoWhiteList
SpamAssassin a un puissant outil dAWL si lon définit bien une liste demails / expéditeurs avant de linitialiser.
Néanmoins, il faut le maintenir.
Pour lister sa whitelist (couple email / 2 1er octets de lIP)
~~~
# sa-awl /var/spool/spam/auto_whitelist
AVG (TOTSCORE/COUNT) -- EMAIL|ip=IPBASE
AVG est le score moyen
TOTSCORE est le score total des mails
COUNT est le nombre de mails
~~~
Pour supprimer les entrées “vues” moins de 2 fois :
~~~
# sa-awl --clean --min 2 /var/spool/spam/auto_whitelist
~~~
Pour supprimer des entrées particulières :
~~~
# spamassassin --remove-addr-from-whitelist=foo@bar
SpamAssassin auto-whitelist: removing address: foo@bar
~~~
## Administration
### Whitelist / blacklist
Par utilisateur (`~/.spamassassin/user_prefs`) ou global :
~~~
whitelist_from jdoe@example.org
whitelist_from *@example.com
blacklist_from bad@example.net
~~~