É muito comum termos que criar regras condicionais em nosso MTA, que serão aplicadas a remetentes, destinatários ou domínios específicos. No Postfix isso pode ser feito através da diretiva smtpd_restriction_classes (http://www.postfix.org/RESTRICTION_CLASS_README.html).
Vamos imaginar o seguinte cenário, uma organização possui dois domínios (vamos assumir que sejam matriz.com.br e filial.com.br) e precisa criar regras para que determinados usuários enviem e-mail somente para os domínio internos ou até mesmo um único domínio interno. Iniciamos a configuração criando essas classes no main.cf:
smtpd_restriction_classes = somente_matriz, somente_filial, somente_interno
somente_matriz = check_recipient_access hash:/etc/postfix/condicionais/somente_matriz, reject
somente_filial = check_recipient_access hash:/etc/postfix/condicionais/somente_filial, reject
somente_interno = check_recipient_access hash:/etc/postfix/condicionais/somente_interno, reject
Portanto, com a diretiva smtpd_restriction_classes criamos as três classes e logo abaixo especificamos cada uma delas, sendo que após a verificação do arquivo, há a rejeição explícita.
Para definir a quem se aplica a regra, precisamos criar um arquivo para efetuar essa consulta, e como estamos criando um controle de destinatário, colocar a consulta em smtpd_recipient_restrictions:
check_sender_access hash:/etc/postfix/condicionais/regras_condicionais
Lembrando que esta regra deve vir em primeiro lugar, pois mesmo se o remetente estiver conectando de um host confiável ou autenticado, o bloqueio deve ser aplicado, por exemplo:
smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/condicionais/regras_condicionais,
permit_mynetworks,
reject_sender_login_mismatch,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unlisted_recipient,
reject_unverified_recipient,
reject
O arquivo regras_condicionais é escrito da desta forma:
fulano@matriz.com.br somente_matriz
beltrano@filial.com.br somente_filial
sicrano@matriz.com.br somente_interno
Neste exemplo, temos três usuários onde estamos aplicando classes diferentes, e outros usuários não estarão em nenhuma.
O arquivo somente_matriz fica da seguinte forma:
matriz.com.br OK
O arquivo somente_filial fica da seguinte forma:
filial.com.br OK
O arquivo somente_interno fica da seguinte forma:
matriz.com.br OK
filial.com.br OK
Portanto, para cada classe definimos o domínio de destino seguindo da diretiva OK, informando ao Postfix que deve ser permitido, e como após a consulta do arquivo definimos um reject o envio para domínios fora da regra será negado.
Um comentário sobre “Postfix: Criando regras condicionais”