User Tools

Site Tools


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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:linux:sa:policyd-rate-limit [2021/02/09 11:21] niccolodoc:appunti:linux:sa:policyd-rate-limit [2024/04/15 15:14] – [policyd-rate-limit] niccolo
Line 1: Line 1:
 ====== policyd-rate-limit ====== ====== policyd-rate-limit ======
 +
 +:!: **ATTENZIONE**: Su Debian 9 Stretch è probabile che venga installato il pacchetto **[[postfix-policyd]]** invece del più nuovo **policyd-rate-limit**.
  
 Si installa il pacchetto **policyd-rate-limit**: Si installa il pacchetto **policyd-rate-limit**:
Line 9: Line 11:
   * Viene creato il socket **/var/spool/postfix/ratelimit/policy** per collegare Postfix al processo.   * 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**.   * 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**:
 +
 +<file>
 +limits:
 +    - [10, 60] # limit to 10 mails by minutes
 +    - [150, 86400] # limits to 150 mails by days
 +</file>
 +
 +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**: Per aggiungerlo ai filtri utilizzati da Postfix è sufficiente ad esempio aggiungerlo alla catena dei filtri **smtpd_relay_restrictions**:
Line 15: Line 33:
 check_policy_service { unix:ratelimit/policy, default_action=DUNNO } check_policy_service { unix:ratelimit/policy, default_action=DUNNO }
 </file> </file>
 +
 +==== 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: 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:
Line 25: Line 45:
 </code> </code>
  
-Nel database dovrebbe esistere anche la tabella **limit_report** che dovrebbe essere svuotata regolarmente eseguendo **%%policyd-rate-limit --clean%%** ad esempio con un cronjob:+Il database può (deve) essere svuotato regolarmente eseguendo **%%policyd-rate-limit --clean%%** ad esempio con un cronjob:
  
 <file> <file>
 0 0 * * * policyd-rate-limit /usr/local/bin/policyd-rate-limit --clean >/dev/null 0 0 * * * policyd-rate-limit /usr/local/bin/policyd-rate-limit --clean >/dev/null
 </file> </file>
 +
 +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**, anch'essa viene svuotata regolarmente dall'opzione **%%--clean%%**.
 +
 +
 +==== Debug ====
 +
 +Il processo logga in **/var/log/syslog** con il tag **policyd-rate-limit**. Nel file di configurazione c'è l'opzione predefinita **debug: True**, sembra che non ci sia la possibilità di modificare la quantità di informazioni registrate (tante!).
 +
 +
 +==== Limite raggiunto con destinatari multipli ====
 +
 +Il limite viene giustamente applicato al **numero dei destinatari**, se una mail contiene **destinatari multipli** e il totale eccede il limite disponibile, **alcuni destinatari vengono scartati**. Nei log di Postfix si trova segnalato il rifiuto:
 +
 +<code>
 +postfix/smtpd[23150]: 5DBFB7DA5B: reject: RCPT from unknown[10.11.12.13]:
 +    450 4.7.1 <recipient@example2.org>:
 +    Recipient address rejected: Rate limit reach, retry later;
 +    from=<sender@example.org>
 +    to=<recipient@example2.org> proto=ESMTP helo=<mail.example.org>
 +</code>
 +
 +Cioè l'azione predefinita è **DEFER_IF_PERMIT** (vedere [[http://www.postfix.org/access.5.html|Postfix Access]]) con relativo messaggio **SMTP 4.7.1**.
 +
 +Un client di posta dovrebbe segnalare l'errore e considerare il **messaggio non inviato**, ma in generale **non è possibile capire quali destinatari sono stati accettati e quali rifiutati**. Ad esempio Thunderbird mostra un pop-up con il seguente messaggio:
 +
 +<code>
 +An error occurred while sending mail. The mail server responded:
 +4.7.1 <recipient@example2.org>: Recipient address rejected: Rate limit reach, retry later.
 +Please check the message recipient "recipient@example2.org" and try again.
 +</code>
 +
  
doc/appunti/linux/sa/policyd-rate-limit.txt · Last modified: 2024/04/15 15:22 by niccolo