Amavis est un logiciel antivirus / antispam pour sécuriser un serveur de mail comme Postfix. Pour ceux qui auraient suivi notre tutoriel sur « créer un relayhost avec Postfix« , sachez qu’il faut installer le filtre antivirus sur le relayeur.
Amavis n’est pas un antitivrus / antispam en tant que tel, il fait le relay entre le serveur de mail et ses acteurs (antivirus / antispam).
Installation d’amavis sous Debian Jessie 8
Nous allons installer Amavis et les paquets nécessaires à son installation via les dépôts.
apt-get install amavisd-new
Si vous obtenez l’erreur suivante :
Setting up amavisd-new (1:2.10.1-1) ...
Creating/updating amavis user account...
Job for amavis.service failed. See 'systemctl status amavis.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript amavis, action "start" failed.
dpkg: error processing package amavisd-new (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
amavisd-new
C’est que votre FQDN n’est pas bien configuré dans la configuration d’amavis.
nano /etc/amavis/conf.d/05-node_id
$myhostname = "debian-mx.fr"
Votre nom de domaine doit être renseigné ici (celui avec lequel on vous atteint depuis d’autres machines).
service amavis restart
Configurer Amavis pour activer l’antispam : SpamAssassin
Pour activer l’antispam, il faut installer spamassassin.
apt-get install spamassassin
Configuration primaire de spamassassin
nano /etc/default/spamassassin
# active le démon de spamassassin
ENABLE=1
# active les mises à jour via tâche Cron
CRON=1
Ajouter de nouvelles règles dans Spamassassin
nano /etc/spamassassin/local.cf
Décommentez les lignes suivantes (CTRL+W pour rechercher sous nano) :
# ajouter le tag *SPAM* dans l'entête des messages tagués en spam
rewrite_header Subject *****SPAM*****
# attache le message de spamassassin dans le corps du message
report_safe 2
# requière un score de spam d'au moins 5 / 10
required_score 5.0
# active Baye et lui demander d'aprprendre des spams identifiés comme tels
use_bayes 1
bayes_auto_learn 1
Ajouter la ligne suivante à la fin du fichier :
# ne pas vérifier la RBL de spamhaus (les FAI le font déjà)
skip_rbl_checks 0
On met à jour la configuration de spamassasin avec la commande suivante :
sa-update -D
Configurer un antivirus avec Amavis : ClamAV
On commence par installer l’antivirus ClamAV, qui est très populaire pour scanner les virus (transmis notamment par Windows) sous Linux.
apt-get install clamav clamav-daemon clamav-freshclam
Immédiatement après, mettez à jour ClamAV :
freshclam
Cette commande est à lancer régulièrement pour tenir l’antivirus à jour, pensez à créer une tâche CRON (une fois par semaine suffit).
Dans le fichier de configuration :
/etc/clamav/clamd.conf
Ajouter la ligne suivante pour éviter les problèmes de permissions avec le groupe amavis.
AllowSupplementaryGroups true
Configuration d’Amavis pour Postfix
Commençons par activer la prise en charge d’Amavis par Postfix.
nano /etc/postfix/main.cf
content_filter=amavis:[127.0.0.1]:10024
Au début du fichier :
nano /etc/postfix/master.cf
Rajoutez les lignes suivante :
amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o smtpd_restriction_classes=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
-o local_header_rewrite_clients=
-o smtpd_milters=
-o local_recipient_maps=
-o relay_recipient_maps=
Cela activera la configuration de Postfix pour Amavis.
Configuration tierce d’Amavis
On ajoute l’utilisateur clamav au groupe amavis.
usermod -a -G amavis clamav
Puis on configure Amavis.
nano /etc/amavis/conf.d/15-content_filter_mode
Décommentez les lignes suivantes :
@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);
On récharge ensuite la configuration et les services
Lancez les commandes suivantes pour mettre le système en route.
service postfix reload
service spamassassin start
service amavis start
service clamav-daemon start
Tester le fonctionnement de l’antivirus et de l’antispam
Spamassassin
Dans l’objet du mail, mettre l’objet suivant.
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Clamav
Créer un fichier texte avec le contenu du fichier EICAR suivant et l’envoyer en tant que pièce jointe.
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Vérification des logs
Nous allons vérifier les logs de Postfix dans /var/log/mail.log
Exemple d’un email clean
Dec 4 16:50:00 debian-mx1 postfix/smtpd[2617]: connect from epsi-VirtualBox[192.168.24.102]
Dec 4 16:50:00 debian-mx1 postfix/smtpd[2617]: 46D715F949: client=epsi-VirtualBox[192.168.24.102]
Dec 4 16:50:00 debian-mx1 postfix/cleanup[2621]: 46D715F949: message-id=<5661BAE3.9070004@debian-messagerie.fr>
Dec 4 16:50:00 debian-mx1 postfix/qmgr[2593]: 46D715F949: from=<valentin@debian-messagerie.fr>, size=2714, nrcpt=1 (queue active)
Dec 4 16:50:00 debian-mx1 postfix/smtpd[2617]: disconnect from epsi-VirtualBox[192.168.24.102]
Dec 4 16:50:15 debian-mx1 postfix/smtpd[2625]: connect from localhost[127.0.0.1]
Dec 4 16:50:15 debian-mx1 postfix/smtpd[2625]: 64F41606CC: client=localhost[127.0.0.1]
Dec 4 16:50:15 debian-mx1 postfix/cleanup[2621]: 64F41606CC: message-id=<5661BAE3.9070004@debian-messagerie.fr>
Dec 4 16:50:15 debian-mx1 postfix/qmgr[2593]: 64F41606CC: from=<valentin@debian-messagerie.fr>, size=3149, nrcpt=1 (queue active)
Dec 4 16:50:15 debian-mx1 amavis[1154]: (01154-06) Passed CLEAN {RelayedInternal}, LOCAL [192.168.24.102]:53116 <valentin@debian-messagerie.fr> -> <valentin@debian-messagerie.fr>, Queue-ID: 46D715F949, Message-ID: <5661BAE3.9070004@debian-messagerie.fr>, mail_id: 1q3m3ELchbKb, Hits: -0.999, size: 2712, queued_as: 64F41606CC, 15111 ms
Dec 4 16:50:15 debian-mx1 postfix/smtpd[2625]: disconnect from localhost[127.0.0.1]
Dec 4 16:50:15 debian-mx1 postfix/smtp[2622]: 46D715F949: to=<valentin@debian-messagerie.fr>, relay=127.0.0.1[127.0.0.1]:10024, delay=15, delays=0.02/0/0/15, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 64F41606CC)
Dec 4 16:50:15 debian-mx1 postfix/qmgr[2593]: 46D715F949: removed
Dec 4 16:50:15 debian-mx1 postfix/smtp[2626]: 64F41606CC: to=<valentin@debian-messagerie.fr>, relay=192.168.24.103[192.168.24.103]:25, delay=0.03, delays=0/0.01/0.01/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 1B4DC16C0)
Dec 4 16:50:15 debian-mx1 postfix/qmgr[2593]: 64F41606CC: removed
Exemple d’un email avec un virus (ClamAV)
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1671]: connect from epsi-VirtualBox[192.168.24.102]
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1671]: 45BF95F949: client=epsi-VirtualBox[192.168.24.102]
Dec 4 16:26:57 debian-mx1 postfix/cleanup[1660]: 45BF95F949: message-id=<5661B57D.6000505@debian-messagerie.fr>
Dec 4 16:26:57 debian-mx1 postfix/qmgr[1473]: 45BF95F949: from=<valentin@debian-messagerie.fr>, size=1268, nrcpt=1 (queue active)
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1671]: disconnect from epsi-VirtualBox[192.168.24.102]
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1665]: connect from localhost[127.0.0.1]
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1665]: warning: Illegal address syntax from localhost[127.0.0.1] in RCPT command: <postmaster@>
Dec 4 16:26:57 debian-mx1 amavis[1155]: (01155-06) Negative SMTP resp. to DATA: 554 5.5.1 Error: no valid recipients
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1665]: disconnect from localhost[127.0.0.1]
Dec 4 16:26:57 debian-mx1 amavis[1155]: (01155-06) (!)8tx3vZ763cyF(rrBtyhd0s3fD) SEND from <postmaster@debian-mx1.fr> -> <postmaster@>, ENVID=AM.8tx3vZ763cyF.20151204T152657Z@debian-mx1.fr 501 5.1.3 from MTA(smtp:[127.0.0.1]:10025): 501 5.1.3 Bad recipient address syntax
Dec 4 16:26:57 debian-mx1 amavis[1155]: (01155-06) (!)FAILED to notify admin: 501 5.1.3 from MTA(smtp:[127.0.0.1]:10025): 501 5.1.3 Bad recipient address syntax
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1665]: connect from localhost[127.0.0.1]
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1665]: 5B27D60ABE: client=localhost[127.0.0.1]
Dec 4 16:26:57 debian-mx1 postfix/cleanup[1660]: 5B27D60ABE: message-id=<VSrrBtyhd0s3fD@debian-mx1.fr>
Dec 4 16:26:57 debian-mx1 postfix/qmgr[1473]: 5B27D60ABE: from=<>, size=4745, nrcpt=1 (queue active)
Dec 4 16:26:57 debian-mx1 postfix/smtpd[1665]: disconnect from localhost[127.0.0.1]
Dec 4 16:26:57 debian-mx1 amavis[1155]: (01155-06) Blocked BANNED (application/x-ms-dos-executable,.asc," X5O!P%@AP[4\\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* ".exe) {BouncedInternal,Quarantined}, LOCAL [192.168.24.102]:53115 <valentin@debian-messagerie.fr> -> <valentin@debian-messagerie.fr>, quarantine: r/banned-rrBtyhd0s3fD, Queue-ID: 45BF95F949, Message-ID: <5661B57D.6000505@debian-messagerie.fr>, mail_id: rrBtyhd0s3fD, Hits: -, size: 1268, 91 ms
Dec 4 16:26:57 debian-mx1 postfix/smtp[1666]: 5B27D60ABE: to=<valentin@debian-messagerie.fr>, relay=192.168.24.103[192.168.24.103]:25, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 0D37B16C0)
Dec 4 16:26:57 debian-mx1 postfix/qmgr[1473]: 5B27D60ABE: removed
Dec 4 16:26:57 debian-mx1 postfix/smtp[1661]: 45BF95F949: to=<valentin@debian-messagerie.fr>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.13, delays=0.03/0/0/0.09, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=01155-06, BOUNCE)
Dec 4 16:26:57 debian-mx1 postfix/qmgr[1473]: 45BF95F949: removed
Exemple d’un email avec un spam (SpamAssassin)
Dec 4 18:02:19 debian-mx1 postfix/smtpd[19882]: connect from epsi-VirtualBox[192.168.24.102]
Dec 4 18:02:19 debian-mx1 postfix/smtpd[19882]: E19A55F945: client=epsi-VirtualBox[192.168.24.102]
Dec 4 18:02:19 debian-mx1 postfix/cleanup[19886]: E19A55F945: message-id=<5661CBD7.5040104@debian-messagerie.fr>
Dec 4 18:02:19 debian-mx1 postfix/qmgr[2828]: E19A55F945: from=<valentin@debian-messagerie.fr>, size=2871, nrcpt=1 (queue active)
Dec 4 18:02:20 debian-mx1 postfix/smtpd[19882]: disconnect from epsi-VirtualBox[192.168.24.102]
Dec 4 18:02:20 debian-mx1 postfix/smtpd[19890]: connect from localhost[127.0.0.1]
Dec 4 18:02:20 debian-mx1 postfix/smtpd[19890]: 6BB1561873: client=localhost[127.0.0.1]
Dec 4 18:02:20 debian-mx1 postfix/cleanup[19886]: 6BB1561873: message-id=<SSm0g59DzT_hzp@debian-mx1.fr>
Dec 4 18:02:20 debian-mx1 postfix/qmgr[2828]: 6BB1561873: from=<>, size=3689, nrcpt=1 (queue active)
Dec 4 18:02:20 debian-mx1 postfix/smtpd[19890]: disconnect from localhost[127.0.0.1]
Dec 4 18:02:20 debian-mx1 amavis[1155]: (01155-07) Blocked SPAM {BouncedInternal,Quarantined}, LOCAL [192.168.24.102]:53123 <valentin@debian-messagerie.fr> -> <valentin@debian-messagerie.fr>, quarantine: m/spam-m0g59DzT_hzp.gz, Queue-ID: E19A55F945, Message-ID: <5661CBD7.5040104@debian-messagerie.fr>, mail_id: m0g59DzT_hzp, Hits: 1001.807, size: 2869, 494 ms
Dec 4 18:02:20 debian-mx1 postfix/smtp[19887]: E19A55F945: to=<valentin@debian-messagerie.fr>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.54, delays=0.03/0.01/0.01/0.49, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=01155-07, BOUNCE)
Dec 4 18:02:20 debian-mx1 postfix/qmgr[2828]: E19A55F945: removed
Dec 4 18:02:20 debian-mx1 postfix/smtp[19891]: 6BB1561873: to=<valentin@debian-messagerie.fr>, relay=192.168.24.103[192.168.24.103]:25, delay=0.04, delays=0.01/0.01/0.01/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 241C216C0)
Dec 4 18:02:20 debian-mx1 postfix/qmgr[2828]: 6BB1561873: removed
Annexes
Voici les différents articles qui nous ont aidés à rédiger ce tutoriel.
https://wiki.apache.org/spamassassin/BasicConfiguration
https://spamassassin.apache.org/full/3.1.x/doc/Mail_SpamAssassin_Conf.html#item_report_safe