Configurando classes de restrição no postfix para bloquear o recebimento e envio de correio para domínios externos.

1

Olá a todos no serverfault,

Eu rodei um servidor de e-mail do Debian Wheezy com postfix e vários domínios nele.

Para um domínio, preciso que algumas contas não consigam receber e enviar e-mails para o mundo externo, apenas para o mesmo domínio. As outras contas e domínios permanecem normais.

Pesquisando na Web, descobri que posso fazer isso com as classes de restrição postfix. Por isso, encontrei um guia na documentação do postfix: link

Seguindo a documentação do postfix, não posso aplicar minha restrição, isso me dá um erro de parâmetro não utilizado quando eu reinicio o postfix, o erro é o seguinte:

/usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: local_only=check_recipient_access hash:/etc/postfix/local_domains, reject

Veja aqui uma parte do meu main.cf onde as classes de restrição estão localizadas:

smtpd_client_restrictions =

permit_mynetworks,

check_client_access hash:/etc/postfix/custom_check_client_access,

permit_sasl_authenticated,

reject_sender_login_mismatch,

reject_unknown_client,

reject_unauth_pipelining,

reject_rbl_client sbl.spamhaus.org,

smtpd_recipient_restrictions =

check_sender_access hash:/etc/postfix/restricted_senders,

permit_mynetworks,

permit_sasl_authenticated,

reject_unauth_destination,

reject_invalid_hostname,

reject_unauth_pipelining,

reject_non_fqdn_sender,

reject_unknown_sender_domain,

reject_non_fqdn_recipient,

reject_unknown_recipient_domain,

check_recipient_access hash:/etc/postfix/protected_destinations,

check_policy_service inet:127.0.0.1:10023,

permit

smtpd_restriction_classes = local_only

local_only = check_recipient_access hash:/etc/postfix/local_domains, reject

smtpd_restriction_classes = insiders_only

insiders_only = check_sender_access hash:/etc/postfix/local_domains, reject

Veja meu arquivo / etc / postfix / protected_destinations:

[email protected] insiders_only

Veja meu arquivo / etc / postfix / restricted_senders:

[email protected] local_only

Este é o meu arquivo / etc / postfix / local_domains:

mydomain.com OK

Eu não consigo descobrir o que fiz de errado! Eu não consegui ver em nenhum lugar na internet como fazer duas classes de restrição juntas, então a sintaxe de smtpd_restriction_classes pode estar errada. A outra coisa que eu suspeito estar errada é a ordem de smtpd_recipient_restrictions, eu não consigo descobrir onde colocar o check_sender_access e o check_recipient_access.

Se vocês pudessem me ajudar a montar essa classe de restrição, eu ficaria grato.

Obrigado Giovanni

    
por gtbono 10.01.2014 / 04:10

1 resposta

1

Ao definir uma nova classe de restrição, o que você basicamente faz é dizer ao Postfix sobre uma nova restrição genérica que pode ser usada como as verificações incorporadas, por exemplo, "permit_mynetworks".

Isso exigirá que você especifique todas classes de restrição de uma só vez, ou seja,

smtpd_restriction_classes = local_only, insiders_only
insiders_only = ...
local_only = ...

Fazer isso desta maneira deve silenciar o aviso do postconf sobre um parâmetro não utilizado.

Quanto a onde colocar as restrições: Por padrão, o parâmetro "smtpd_delay_reject" é definido como "yes", o que significa que mesmo smtpd_ (client | sender) _restrictions só será avaliado após "rctp para: < ... >" palco. Por esta razão, tem sido um conselho de longa data simplesmente recolher todas as restrições dentro de smtpd_recipient_restrictions. No seu caso, onde o remetente "restrict01 @ ..." só deveria poder enviar para destinos internos, você provavelmente poderia usar algo assim como um bom ponto de partida:

smtpd_recipient_restrictions =
  reject_non_fqdn_sender
  reject_non_fqdn_recipient
  reject_unlisted_sender
  reject_unlisted_recipient
  reject_unknown_sender_domain
  reject_unknown_recipient_domain
  check_sender_access hash:/etc/postfix/restricted_senders
  permit_mynetworks
  allow_sasl_authenticated
  reject_unauth_destination
  check_policy_service inet:127.0.0.1:10023
  reject_rbl_client zen.spamhaus.org
  permit_auth_destination
  reject
smtpd_restriction_classes = local_only
local_only = check_recipient_access hash:/etc/postfix/local_domains, reject

Outra coisa a notar é que (provavelmente) é uma má ideia retornar um "OK" de um mapa de acesso antes de verificar as credenciais do cliente. Portanto, o arquivo "/ etc / postfix / local_domains" deve conter uma linha como

example.com DUNNO

Isso forçará o remetente restrito a autenticar com SASL ou estar dentro de $ mynetworks. Como você pode ver, você pode se safar com uma classe de restrição e se livrar das restrições de smtpd_ (sender | client).

    
por 10.01.2014 / 08:17