Postfix smtpd restriction classes HowTo
From ImoLUGPedia
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! ;-) )
