[Debian Wheezy] Spamassassin prend son temps! avec un DNSBL qui ne répond plus…

Après une installation classique d’un serveur SMTP (sur une Wheezy avec les paquets actuels) avec (donc) Postfix 2.9.6-2, Amavis-new 1:2.7.1-2, Clamav 0.97.8+dfsg-1 et Spamassassin 3.3.2 (+pyzor/razo2/DCC), je me rends compte que les messages mettent plus de 4 secondes avant d’être délivrés (de façon asynchrone tout de même)..

En mode Debug on peut voir les pourcentages du temps passé pour les traitements antispam et antivirus :

Feb 13 15:29:28 mailhost postfix/smtp[4184]: 2CA41A075B:
to=<arnaud.lenorcy@mydomain.com>, relay=127.0.0.1[127.0.0.1]:10024,
delay=4.6, delays=0.31/0.01/0.01/4.3, 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 88F7AA0A72)
Feb 13 15:29:28 mailhost amavis[4167]: (04167-01) size: 1244, TIMING [total 4270
ms] - SMTP greeting: 11 (0%)0, SMTP EHLO: 2 (0%)0, SMTP pre-MAIL: 2 (0%)0,
mkdir tempdir: 2 (0%)0, create email.txt: 0 (0%)0, SMTP pre-DATA-flush: 5
(0%)0, SMTP DATA: 33 (1%)1, check_init: 1 (0%)1, digest_hdr: 1 (0%)1,
digest_body: 1 (0%)1, mkdir parts: 4 (0%)1, mime_decode: 12 (0%)2,
get-file-type1: 17 (0%)2, parts_decode: 0 (0%)2, check_header: 1 (0%)2,
AV-scan-1: 11 (0%)2, spam-wb-list: 2 (0%)2, SA parse: 7 (0%)3, SA check:
4010 (94%)97, decide_mail_destiny: 13 (0%)97, notif-quar: 1 (0%)97,
fwd-connect: 19 (0%)97, fwd-mail-pip: 34 (1%)98, fwd-rcpt-pip: 1 (0%)98,
fwd-data-chkpnt: 0 (0%)98, write-header: 1 (0%)98, fwd-data-contents: 0
(0%)98, fwd-end-chkpnt: 43 (1%)99, prepare-dsn: 1 (0%)99, main_log_entry: 29
(1%)100, update_snmp: 3 (0%)100, SMTP pre-response: 1 (0%)100, SMTP
response: 1 (0%)100, unlink-1-files: 0 (0%)100, rundown: 1 (0%)100

Ce qui prend du temps c’est le SA check !

En lançant amavis en mode debug :

amavisd-new debug

.. on se rend compte qu’il s’agit d’une tentative d’accès à un DNSBL qui n’aboutit pas! Il s’agit de dnsbl.njabl.org qui est OFFLINE depuis Mars 2013. Au bout d’environ 4 secondes un timeout arrêtait tout de même la recherche..

Le fichier /usr/share/spamassassin/20_dnsbl_tests.cf contient les références à ce DNSBL :

# See the Mail::SpamAssassin::Conf manual page for details of how to use
# check_rbl().

# ---------------------------------------------------------------------------
# Multizone / Multi meaning BLs first.
#
# Note that currently TXT queries cannot be used for these, since the
# DNSBLs do not return the A type (127.0.0.x) as part of the TXT reply.
# Well, at least NJABL doesn't, it seems, as of Apr 7 2003.

# ---------------------------------------------------------------------------
# NJABL
# URL: http://www.dnsbl.njabl.org/

header __RCVD_IN_NJABL          eval:check_rbl('njabl', 'combined.njabl.org.')
describe __RCVD_IN_NJABL        Received via a relay in combined.njabl.org
tflags __RCVD_IN_NJABL          net
reuse  __RCVD_IN_NJABL

header RCVD_IN_NJABL_RELAY      eval:check_rbl_sub('njabl', '127.0.0.2')
describe RCVD_IN_NJABL_RELAY    NJABL: sender is confirmed open relay
tflags RCVD_IN_NJABL_RELAY      net
reuse  RCVD_IN_NJABL_RELAY

# NJABL DUL: obsoleted by PBL (bug 5187)

header RCVD_IN_NJABL_SPAM       eval:check_rbl_sub('njabl', '127.0.0.4')
describe RCVD_IN_NJABL_SPAM     NJABL: sender is confirmed spam source
tflags RCVD_IN_NJABL_SPAM       net
reuse  RCVD_IN_NJABL_SPAM

header RCVD_IN_NJABL_MULTI      eval:check_rbl_sub('njabl', '127.0.0.5')
describe RCVD_IN_NJABL_MULTI    NJABL: sent through multi-stage open relay
tflags RCVD_IN_NJABL_MULTI      net
reuse  RCVD_IN_NJABL_MULTI

header RCVD_IN_NJABL_CGI        eval:check_rbl_sub('njabl', '127.0.0.8')
describe RCVD_IN_NJABL_CGI      NJABL: sender is an open formmail
tflags RCVD_IN_NJABL_CGI        net
reuse  RCVD_IN_NJABL_CGI

header RCVD_IN_NJABL_PROXY      eval:check_rbl_sub('njabl', '127.0.0.9')
describe RCVD_IN_NJABL_PROXY    NJABL: sender is an open proxy
tflags RCVD_IN_NJABL_PROXY      net
reuse  RCVD_IN_NJABL_PROXY

Pour éviter ce DNSBL j’ai rajouté de ces quelques lignes dans /etc/spamassassin/local.cf :

score   __RCVD_IN_NJABL 0
score   RCVD_IN_NJABL_RELAY 0
score   RCVD_IN_NJABL_SPAM 0
score   RCVD_IN_NJABL_MULTI 0
score   RCVD_IN_NJABL_CGI 0
score   RCVD_IN_NJABL_PROXY 0

voilà il n’y a plus cette latence de 4 secondes par message!

Le lien suivant décrit comment mieux paramétrer ces DNSBL :
http://wiki.apache.org/spamassassin/DnsBlocklists

Pour éviter tous les DNSBL, on pourrait mettre ça dans /etc/spamassassin/local.cf :

skip_rbl_checks  1

Avec une version >= 3.4 de Spamassassin, pour éviter simplement le DNSBL njabl.org, on pourrait mettre ceci dans /etc/spamassassin/local.cf :

dns_query_restriction deny njabl.org

A priori, pour qu’il y ait encore moins de latence, il vaudrait mieux avoir un cache dns en local sur le serveur SMTP :
http://wiki.apache.org/spamassassin/CachingNameserver

Pour ça, sur la Debian Wheezy, il suffit simplement d’installer BIND9 :

apt-get update
apt-get install bind9

.. et la configuration par défaut suffit!

Laisser un commentaire

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