doc:appunti:linux:sa:policyd-rate-limit
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:linux:sa:policyd-rate-limit [2021/02/09 10:27] – niccolo | doc:appunti:linux:sa:policyd-rate-limit [2021/02/09 12:43] – [Debug] niccolo | ||
---|---|---|---|
Line 4: | Line 4: | ||
* Viene creato un utente **policyd-rate-limit**. | * Viene creato un utente **policyd-rate-limit**. | ||
+ | * Il file di configurazione è **/ | ||
* Risulta in esecuzione il processo **/ | * Risulta in esecuzione il processo **/ | ||
* Viene creato il servizio systemd **policyd-rate-limit.service**. | * Viene creato il servizio systemd **policyd-rate-limit.service**. | ||
* Viene creato il socket **/ | * Viene creato il socket **/ | ||
+ | * Viene creato un database SQLite in **/ | ||
+ | |||
+ | ==== Configurazione ==== | ||
+ | |||
+ | Nel file di configurazione **/ | ||
+ | |||
+ | < | ||
+ | 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' | ||
+ | |||
+ | È 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**: | Per aggiungerlo ai filtri utilizzati da Postfix è sufficiente ad esempio aggiungerlo alla catena dei filtri **smtpd_relay_restrictions**: | ||
Line 13: | Line 31: | ||
check_policy_service { unix: | check_policy_service { unix: | ||
</ | </ | ||
+ | |||
+ | ==== 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' | ||
+ | |||
+ | < | ||
+ | sqlite3 / | ||
+ | sqlite> SELECT * FROM mail_count; | ||
+ | username@example.org|1612865208 | ||
+ | username@example.org|1612865556 | ||
+ | </ | ||
+ | |||
+ | Il database può (deve) essere svuotato regolarmente eseguendo **%%policyd-rate-limit --clean%%** ad esempio con un cronjob: | ||
+ | |||
+ | < | ||
+ | 0 0 * * * policyd-rate-limit / | ||
+ | </ | ||
+ | |||
+ | Vengono automaticamente rimossi tutti i record che hanno un **timestamp più vecchio del doppio del limite temporale maggiore**. | ||
+ | |||
+ | Se nella configurazione sono abilitati i **report**, nel database viene creata anche la tabella **limit_report**, | ||
+ | |||
+ | |||
+ | ==== Debug ==== | ||
+ | |||
+ | Il processo logga in **/ | ||
+ | |||
+ | ==== Limite raggiunto con destinatari multipli ==== | ||
+ | |||
+ | Il limite viene giustamente applicato al **numero dei destinatari**, | ||
+ | |||
+ | < | ||
+ | postfix/ | ||
+ | 450 4.7.1 < | ||
+ | Recipient address rejected: Rate limit reach, retry later; | ||
+ | from=< | ||
+ | to=< | ||
+ | </ | ||
+ | |||
+ | Cioè l' | ||
+ | |||
+ | Un client di posta dovrebbe segnalare l' | ||
+ | |||
+ | < | ||
+ | An error occurred while sending mail. The mail server responded: | ||
+ | 4.7.1 < | ||
+ | Please check the message recipient " | ||
+ | </ | ||
+ | |||
+ |
doc/appunti/linux/sa/policyd-rate-limit.txt · Last modified: 2024/04/15 15:22 by niccolo