Postfix: Criando regras condicionais

É 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.

 

Anúncios

Um comentário sobre “Postfix: Criando regras condicionais

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s