Sécuriser Postfix avec l’antispam Amavis

Configurer Amavis sous Debian Jessie avec un antivirus clamav et l'antispam spamassassin
  • Administration système

Logo OpenSource Amavis

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.

http://www.lecoindesdocs.fr/2015/01/11/serveur-mail-debian-76-56-installation-et-configuration-de-spamassassin-clamav-amavis/

https://wiki.apache.org/spamassassin/BasicConfiguration

https://spamassassin.apache.org/full/3.1.x/doc/Mail_SpamAssassin_Conf.html#item_report_safe

http://www.postfix.org/FILTER_README.html

https://wiki.archlinux.org/index.php/Amavis

Article publié le

Dernière modification le

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.