User Tools

Site Tools


doc:appunti:linux:sa:policyd-rate-limit

This is an old revision of the document!


policyd-rate-limit

Si installa il pacchetto policyd-rate-limit:

  • Viene creato un utente policyd-rate-limit.
  • Il file di configurazione è /etc/policyd-rate-limit.yaml.
  • Risulta in esecuzione il processo /usr/bin/python3 /usr/bin/policyd-rate-limit a nome dell'utente creato.
  • Viene creato il servizio systemd policyd-rate-limit.service.
  • Viene creato il socket /var/spool/postfix/ratelimit/policy per collegare Postfix al processo.
  • Viene creato un database SQLite in /var/lib/policyd-rate-limit/db.sqlite3.

Configurazione

Nel file di configurazione /etc/policyd-rate-limit.yaml il parametro più importante è limits:

limits:
    - [10, 60] # limit to 10 mails by minutes
    - [150, 86400] # limits to 150 mails by days

Oltre all login sasl, è possibile tenere traccia e limitare anche il sender e l'indirizzo IP. Queste opzioni sono disabilitate per impostazione predefinita.

È possibile specificare delle eccezioni (in eccesso o in difetto) per un particolare identificativo.

Collegamento con Postfix

Per aggiungerlo ai filtri utilizzati da Postfix è sufficiente ad esempio aggiungerlo alla catena dei filtri smtpd_relay_restrictions:

check_policy_service { unix:ratelimit/policy, default_action=DUNNO }

Database

Nel database esiste una tabella mail_count con un record per ogni mail inviata, nella riga compare il nome di login e il timestamp dell'invio:

sqlite3 /var/lib/policyd-rate-limit/db.sqlite3
sqlite> SELECT * FROM mail_count;
username@example.org|1612865208
username@example.org|1612865556

Il database può (dovrebbe) essere svuotato regolarmente eseguendo policyd-rate-limit --clean ad esempio con un cronjob:

0 0 * * * policyd-rate-limit /usr/local/bin/policyd-rate-limit --clean >/dev/null

Se nella configurazione sono abilitati i report, nel database viene creata anche la tabella limit_report, anch'essa viene svuotata regolarmente dall'opzione --clean.

Debug

Il processo logga in /var/log/syslog con il tag policyd-rate-limit.

Il limite viene giustamente applicato al numero dei destinatari, se una mail contiene destinatari multipli e il totale accede il limite FIXME cosa succede?

doc/appunti/linux/sa/policyd-rate-limit.1612867578.txt.gz · Last modified: 2021/02/09 11:46 by niccolo