Policyd

Policyd est un dameon (add-on) permettant de faire du Whitelisting, Blacklisting, Greylisting, de l'Antispam, de la gestion de Quotas avec Postfix. Dans mon cas je l'utilise pour brider le nombre de mails que peut envoyer un utilisateur via mon webmail (roundcube) qui est le seul à pouvoir utiliser mon smtp. En gros je veux qu'un utilisateur utilisant mon webmail pour envoyer un mail ne puisse pas le faire plus de 20 fois dans l'heure et que ce mail ne puisse pas être adressé à plus de 20 personnes en même temps. Au bout d'une heure, le compteur est remis à zéro. En espérant en avoir découragé plus d'un …

Installation

On commence par l'installation de policyd avec un simple :

apt-get install postfix-policyd

Configuration de la partie Postfix (main.cf):

Attention de check_policy_service doit-être placé avant la clause permit_mynetworks par prévention afin de ne pas créer d'open relay en cas d'activation du whitelisting.

smtpd_data_restrictions = reject_unauth_pipelining,permit
check_policy_service inet:127.0.0.1:10031

Configuration de policyd

Fichier /etc/postfix-policyd.conf :

Il est important de bien lire le fichier de conf qui est très bien détaillé et très clair afin de ne pas activer d'options que l'on ne souhaitent pas.

//je n'ai activé que le module SENDER THROTTLE avec les options suivantes (50 mails par heures avec 20 destinataires maximum par mail) :
SENDERTHROTTLE=1 
SENDER_THROTTLE_SASL=0
SENDER_THROTTLE_HOST=0
QUOTA_EXCEEDED_TEMP_REJECT=0
SENDER_QUOTA_REJECTION="Quota Exceeded."
SENDER_SIZE_REJECTION="Message size too big."
SENDERMSGLIMIT=50
SENDERRCPTLIMIT=20
SENDERQUOTALIMIT=250000000
SENDERTIMELIMIT=1h
SENDERMSGSIZE=10240000
SENDERMSGSIZE_WARN=50
SENDERMSGSIZE_PANIC=90
SENDER_INACTIVE_EXPIRE=31d

Configuration de Rouncdube

Fichier config/main.inc.php :

$rcmail_config['smtp_server'] = '127.0.0.1';

On redémarre Postfix et Postfix-Policyd :

/etc/init.d/postfix restart
/etc/init.d/postfix-policyd restart

Des lignes de ce type doivent être visibles dans le mail.log :

Jan 28 17:29:46 gaston postfix-policyd: connection from: 127.0.0.1 port: 50283 slots: 1 of 4096 used 
Jan 28 17:29:46 gaston postfix-policyd: rcpt=7, throttle=new(a), host=127.0.0.1, from=nicolas@mailoo.org, to=nicolas@lineis.fr, size=0/10240000, quota=0/250000000, count=1/50(1), rcpt=1/20(1), threshold=0%|0%|0% 

Nettoyage de la BDD toutes les heures pour raz du compteur :

#Vidage de la BDD de postfix-policyd
*/59 * * * * /usr/sbin/postfix-policyd-cleanup