Newsgroup: it.comp.os.linux.sys
Titolo: postfix + qsf: alcune mail non filtrate

Mi sto perdendo qualcosa. Ho una esigua percentuale di mail che
sembrano non essere filtrate dal mio bayesan spam filter, qsf, dato
che al loro interno non compaiono i marcatori X-Spam:, che altrimenti
dovrebbero ed effettivamente poi non vengono filtrate come spam, pur
essendolo. Nonostante cio`, seguendone una nel giro del fumo, risulta
passare attraverso il "pezzo" di postfix pipe e spamfilter.
Alla fine del 
master.cf
, ho:
# qsf bayesian spam filter
#
spamfilter unix  -      n       n       -       10      pipe flags=Rq
  user=filter argv=/usr/bin/qsf-postfix -f ${sender} -- ${recipient}
e in /usr/bin/qsf-postfix
# cat  /usr/bin/qsf-postfix
#!/bin/sh
# Simple shell-based filter. It is meant to be invoked as follows:
#       /path/to/script -f sender recipients...
# Localize these.
INSPECT_DIR=/var/spool/filter
SENDMAIL="/usr/sbin/sendmail -i"
#QSF="/usr/bin/qsf -sra"
QSF="/usr/local/bin/qsf -sra"
# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Clean up when done or when aborting.
trap "rm -f in.$$; rm -f out.$$" 0 1 2 3 15
# Start processing.
cd $INSPECT_DIR || {
    echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
cat >in.$$ || {
    echo Cannot save mail to file; exit $EX_TEMPFAIL; }
# Specify your content filter here.
$QSF <in.$$ >out.$$|| {
    echo Message content rejected; exit $EX_UNAVAILABLE; }
$SENDMAIL "$@" <out.$$
exit $?
La cosa che ho notato e` che indicativamente sembra non vengono
classificati i messaggi provenienti da mittenti interni al dominio (e
questo andrebbe anche bene), destinati invece che a specifici utenti
interni a degli alias poi espansi in specifici utenti interni,
contenuti in /etc/aliases e infine i messaggi destinati a unknown
recipient, quindi a BCC e forse ancora al destinatario in CC.
Ora pero` non riesco assolutamente a capire come e perche' cio`
avvenga (qualche eventuale interazione con qualche altro pezzo di
postfix e/o filtro?).
Qualche idea?
Ringraziamenti ai rispondenti, saluti a tutti,
Andrea

 Qualche idea?
Non vedo cosa ci azzecchi postfix con quel filtro antispam che non 
conosco.
A prescindere che i filtri bayesiani sono a mio avviso più deleteri che 
utili, ad ogni buon conto con quel sistema la mail ESCE da postfix via 
pipe, entra nel filtro che poi la re-inietta in postfix con sendmail.
Sarà che forse quel filtro non filtra e che quindi la mail rientra in 
postfix senza alterazioni ?
Prenditi il payload della mail dalla mailbox, dallo in pasto a quel coso 
e vedi il risultato.

 e vedi il risultato.
Fatto. Funziona. Ovvero prendo lo stesso messaggio dalla maildir,
senza i marcatori di spam di qsf (che dovrebbe avere), lo do in pasto
a qsf con le opzioni che usa in qsf-postfix e me lo sputa come
dovrebbe essere, coi due marcatori
X-Spam: e X-Spam-Rating: negli header.
Mo', come proseguo?
Nel senso che mi sembra che non proseguo.

 > Prenditi il payload della mail dalla mailbox, dallo in pasto a quel coso> Inoltre guarda qui:
http://slipperyskip.com/page23.html
Solo per errata corrige: mi e` venuto fuori questo pezzo sopra (http://
slipperyskip.com/page23.html
) di copia/incolla che non c'entra niente.
Sorry

 Nel senso che mi sembra che non proseguo.
Vuol dire che quando c'è passato inizialmente i filtri non lo hanno 
riconosciuto.
La scienza bayesiana mica è deterministica.


No, alt.
qsf -sra deterministicamente ficca in un messaggio quei 2 header e li
valorizza anche con logica bayesiana.
In un momento successivo (del delivery, con procmail) vado a leggerli
e dirigo appropriatamente le mail nelle maildir apposite degli utenti.
Quindi cio` che non mi spiego e` perche' nella prima consegna quegli
header (X-Spam: e X-Spam-Rating:) non siano stati messi, anche perche'
non mi risulta che ci sia nulla che li possa eventualmente togliere.

 li possa eventualmente togliere.
ah tu stai dicendo che quel coso ce li dovrebbe mettere sempre, anche se 
il risultato è negativo ?
In tal caso mancano i pezzi del 
main.cf
 dove vai a richiamare il filtro.
Che ci hai messo nel 
main.cf
 ?

 Che ci hai messo nel 
main.cf
 ?
Guarda, proprio perche' sei tu, sono disposto a metterti un altro
pezzo del 
master.cf
, questa volta quello iniziale, dove compare una
misteriosa invocazione di spamfilter:
 smtp      inet  n       -       -       -       -       smtpd
 -o content_filter=spamfilter:
poi c'e` quello finale (mostrato nel primo messaggio) che parla
effettivamente del postfix tubo e del mio filtro qsf-postfix, ma di
main.cf
, nemmeno per te, posso metterci nulla, perche' nulla c'e` a
parte altri filtri antispam con controlli su fqdn del sender e/o
visite a spamhaus, ma niente che riguardi qsf; eppero` ti posso
assicurare che in + del 99% dei casi pur cosi` com'e` funziona.
Aspetto illuminazioni, ma, piu` realisticamente, di non riuscire a
venirne a capo.
Comunque grazie,
Andrea

 venirne a capo.
Beh tutto quello che arriva sulla porta 25 dovrebbe passare da li.
Aggiungi una riga allo script in bash per loggarti tutto quello che ci 
passa. In caso di dubbio, puoi controllare se c'è passato.
Le uniche mail che non ci passano sono quelle locali, ragionevolmente 
quelle iniettate con sendmail ... non è che hai qualcosa tipo fetchmail o 
simili che bypassano quel filtro ?


Si`, mi sembra sensato. Ne ho seguita nei log di postfix una che ci
sarebbe dovuta passare, ma che non recava traccia degli header di qsf,
ed effettivamente arrivava alla pipe, ma per tagliare la testa al toro
la cosa migliore e` proprio andare a far loggare lo  script qsf
(grazie).
E che io sappia no, non ho nulla che bypassa quel filtro, anche se il
comportamento rilevato me lo farebbe pensare.
Andrea