Cerca nel blog

lunedì 21 febbraio 2022

Postfix e policyd Quote per dominio

Postfix nella sua versione attuale: ]]>

Non prevede delle regole che possano applicare delle limitazioni in modo flessibile.
Per questo ci viene in aiuto un plugin chiamato policyd che attraverso l'utilizzo di un database storicizza e analizza il traffico effettuato da e verso il nostro MTA.
Per mia comodità ho utilizzato Mysql (a dire il vero MariaDB) ma si può utilizzare anche un file sqlite.
La configurazione è abbastanza semplice e per questo rimando a questo link.

Una volta installato sarà possibile esegure il demone eseguendo il comando: Nel file di configurazione si può abilitare il log decomentando la riga abbastanza riconoscibile.

Il mio obiettivo è creare delle regole affinchè uno o più domini abbiano un limite giornaliero sull'invio dei messaggi.
Per fare ciò ho sfruttatto l'interfaccia di configurazione fornita con il pacchetto policyd ver 2.1.0.
Si tratta di una serie di script in PHP che gestiscono l'inserimento dei parametri di configurzione nel database.
Indicherò in maniera molto schematica i passaggi.

  1. Creazione della policy: Sezione: Policies > Main > Action > Add*
    Si tratta di una configurazione prettamente descrittiva che indica il significato attributio a questa policy
  2. Creazione del gruppo di domini: Sezione: Policies > Groups > Action > Add* (es: GW500_GROUP)
  3. Selezionare il gruppo creato al punto precedente: Sezione: Policies > Groups > Action > Members*
  4. Aggiungere i membri del gruppo: nel mio caso voglio che la regola sia applicata a tutti gli indirizzi appartenenti a dominio.it e quindi imposto Member con @dominio.it*
  5. Modificare i membri della policy selezionando quella inserita al punto 1: Sezione: Policies > Main > Action > Members* nel campo Source imposto il nome del gruppo creato al punto 2 prefissanto con il simbolo percentuale (es %GW500_GROUP) e nel campo Destination any
  6. Alla sezione Quotas > Configure *: I dati importanti sono
    - Period: indica in secondi l'arco temporale di analisi 86400 = 1gg
    - Verdict: indica l'azione da eseguire nel mio caso REJECT
    - Data: Sarà il messaggio testuale che verrà restituito all'utente quando supererà il limite imposto
  7. Una volta salvate le impostazioni definite al punto precedente selezionare la quota creata e dal menù a tendina Action selezionare Limits *. Nel mio caso ho impostato MessageCount a 500.
*NB tutte le configurazioni su questa interfaccia nascono come disabilitate quindi una volta inserite bisogna editarle e modificare l'attributo Disabled con il valore no

Per inserire in avvio automatico cbpolicyd creare il file /etc/systemd/system/cbpolicyd.service con il seguente contenuto adattando eventualmente i path: Eseguire i seguenti comandi: