User Tools

Site Tools


doc:appunti:linux:sa:postfix-policyd

This is an old revision of the document!


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 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>

doc/appunti/linux/sa/postfix-policyd.1382363465.txt.gz · Last modified: 2013/10/21 15:51 by niccolo