This is an old revision of the document!
−Table of Contents
postfix-policyd
Problema: limitare il numero di mail inviate da un singolo utente (identificato da SASL) in un determinato periodo di tempo. Questo per bloccare lo spam che tramite botnet sfrutta account rubati.
Il programma policyd avrebbe tale funzione, più molte altre ({black|grey|white}listing, ecc.), peccato che non esista per Debian Wheezy. Il pacchetto postfix-policyd è stato rimosso da Debian, questa la pagina del pacchetto sorgente.
Porting to Wheezy
I sorgenti per Squeeze si riescono a compilare su Wheezy:
mkdir -p /usr/local/src/postfix-policyd cd /usr/local/src/postfix-policyd wget http://ftp.de.debian.org/debian/pool/main/p/postfix-policyd/postfix-policyd_1.82-2.dsc wget http://ftp.de.debian.org/debian/pool/main/p/postfix-policyd/postfix-policyd_1.82.orig.tar.gz wget http://ftp.de.debian.org/debian/pool/main/p/postfix-policyd/postfix-policyd_1.82-2.diff.gz dpkg-source -x postfix-policyd_1.82-2.dsc cd postfix-policyd-1.82/ dpkg-buildpackage -rfakeroot
Patch per l'installazione
File da modificare:
/usr/share/dbconfig-common/data/postfix-policyd/install/mysql
/etc/postfix-policyd.conf
/etc/init.d/postfix-policyd
Il programma richiede un database MySQL, purtroppo lo script per crearlo (/usr/share/dbconfig-common/data/postfix-policyd/install/mysql
) non è compatibile con la versione 5.5.24 e quindi durante l'installazione bisogna correggerlo sostituendo tutte le occorrenze di TYPE=MyISAM
con ENGINE=MyISAM
.
Anche il file di configurazione (/etc/postfix-policyd.conf
) va corretto, togliendo gli spazi dalla stringa SYSLOG_FACILITY
(vedere questo bug report):
SYSLOG_FACILITY="LOG_MAIL|LOG_INFO"
altrimenti si incappa nell'errore (syslog):
postfix-policyd: fatal: didn't find priority 'LOG_IFOO', exiting
Altro grave problema riguarda lo script /etc/init.d/postfix-policyd
, il parametro reload
non è supportato dal demone, va tolto dallo script perché altrimenti il demone muore.
Configurazione
Questi sono i parametri modificati per disabilitare il greylisting e per attivare il throttling: sono consentiti al massimo 50 messaggi in 15 minuti:
DEBUG=1 GREYLISTING=0 SENDERTHROTTLE=1 SENDER_THROTTLE_SASL=1 SENDER_THROTTLE_HOST=0 SENDERMSGLIMIT=50 SENDERTIMELIMIT=15m
Dopo aver avviato il demone s si deve dire a Postfix di fare un check sul servizio postfix-policyd
per ogni messaggio:
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10031, permit_sasl_authenticated, reject
Verifica del funzionamento
In /var/log/mail.log
si legge:
postfix-policyd: rcpt=230, throttle=update(a), host=62.48.51.8, from=niccolo@example.com, to=niccolo@example.org, size=0/1024000000, quota=0/250000000, count=11/50(2), rcpt=2/3600(2), threshold=0%|20%|0%, sasl_username=niccolo
Collegandosi a MySQL è possibile vedere lo stato del throttling:
SELECT _from, _count_cur FROM throttle ORDER BY _count_cur ASC;
Cleanup cronjob
Le operazioni di expire e cleanup sul database vanno eseguite da un cronjob:
/usr/lib/postfix-policyd/cleanup -c /etc/postfix-policyd.conf
<php>echo '<a rel=“me” href=“https://profiles.google.com/100662196154811835450”>Profilo Google+</a>' . “\n”;</php>