Postfix smtpd restriction classes HowTo

From ImoLUGPedia

Jump to: navigation, search

Le smtpd_restriction_classes sono direttive di postfix molto potenti per gestire capillari restrizioni a utenti e gruppi di utenti.

L'obiettivo che si intende raggiungere è autorizzare un determinato envelope sender (in questo esempio icansend@bar.org) a inviare mail ad uno determinato envelope recipient (in questo esempio fax@foo.org); ogni altro invio al recipient definito deve essere negato.

Contents

Definizione recipient

Adattare il file main.cf:

#/etc/postfix/main.cf
...
smtpd_recipient_restrictions =
        ...
        check_recipient_access hash:/etc/postfix/recipients
        ...
...

forzando un controllo sull'ind utilizzato nel campo RCPT TO (http://www.postfix.org/postconf.5.html#check_recipient_access) sul file /etc/postfix/recipients così strutturato:

#/etc/postfix/recipients
fax@foo.org          fax_restrictions

In questo modo, il controllo si attiva quando in RCPT TO viene intercettato l'indirizzo fax@foo.org; in questa occasione, postfix considera e verifica la restriction_class definita fax_restrictions, necessariamente dichiarata in main.cf:

#/etc/postfix/main.cf
...
smtpd_restriction_classes =
        fax_restrictions
...

Definizione sender

Fino ad ora sono stati definiti con controlli lato destinatario (recipient); successivamente occorre definire le policy per il mittente (sender, quindi http://www.postfix.org/postconf.5.html#check_sender_access) grazie alla restriction_class fax_restrictions precedentemente dichiarata.

#/etc/postfix/main.cf
...
fax_restrictions =
        check_sender_access hash:/etc/postfix/fax_permit
        reject
...

La restriction_class in oggetto prevede la verifica di un sender valido all'interno di /etc/postfix/fax_permit, diversamente procede al reject del messaggio stesso.

#/etc/postfix/fax_permit
icansend@bar.org         OK

Test!

Una sessione SMTP di test con sender e recipient corretti andrà a buon fine:

# telnet mail.foo.org 25
Trying xxx.xxx.xxx.xxx...
Connected to mail.foo.org (xxx.xxx.xxx.xxx).
Escape character is '^]'.
220 mail.foo.org ESMTP
ehlo franz.bar.org
250-mail.foo.org
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: <icansend@bar.org>
250 2.1.0 Ok
rcpt to: <fax@foo.org>
250 2.1.5 Ok
...

diversamente ogni altro tentativo di invio verso fax@foo.org sarà negato:

# telnet mail.foo.org 25
Trying xxx.xxx.xxx.xxx...
Connected to mail.foo.org (xxx.xxx.xxx.xxx).
Escape character is '^]'.
220 mail.foo.org ESMTP
ehlo franz.bar.org
250-mail.foo.org
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from: <icannotsend@bar.org>
250 2.1.0 Ok
rcpt to: <fax@foo.org>
554 5.7.1 <fax@foo.org>: Recipient address rejected: Access denied
...

Riferimenti

Postfix smtpd_restriction_classes for Dummies di Ralf Hildebrandt (thank you Ralf! ;-) )

Personal tools
Navigation