Mise en place de DSPAM comme agent de livraison pour Postfix
DSPAM est un logiciel anti-spam pouvant aisément être utilisé comme agent
de livraison Postfix. Cela évite d'utiliser certains hacks, comme la
réinjection SMTP. Dans ce mode, DSPAM agit comme un relais qui accepte un mail
sur son entrée standard, le traite en fonction de votre configuration (ajout
d'en-têtes, préfixage de [SPAM] au sujet, etc), et le délivre à un agent de
livraison final (directiveTrustedDeliveryAgentdansdspam.conf).Pour cela il suffit d'ajouter une ligne de ce type à votre
master.cf:dspam unix - n n - 1 pipe flags=DORqhu user=dspam:mail argv=/usr/local/bin/dspam-wrapper --user ${recipient} --deliver=innocent,spamEt de positionner ensuite une directive
virtual_transport = dspam, dans le
cas de l'utilisation de comptes virtuels. Il est aussi possible de l'activer
seulement pour certains utilisateurs à l'aide de la tabletransport(5).Toutefois, pour que cela reste fiable, il est nécessaire que DSPAM retourne un
code d'erreur 75 (tempfail) en cas de soucis, afin que Postfix conserve
celui-ci en file d'attente. Sur ce point, la version courante de DSPAM (3.8.0)
souffre d'un bug génant : si l'agent de livraison final retourne un code
d'erreur, DSPAM ne retournera pas ce même code (contrairement à ce qui est
indiqué dans la sectionEXIT VALUEde la page de man), mais 255. Ce qui
entraîne une perte pure et simple du mail !En attendant, pour contourner ce problème, il est possible de mettre en place
un wrapper qui retournera le code 75 dans toutes les situations d'erreur.Exemple d'un fichier
dspam-wrapper:#!/bin/sh cat | /usr/local/bin/dspam $* || return 75