Como configuro os parâmetros de configuração do Postfix * _restrictions com segurança com listas brancas e negras?

5

Aprendendo e tentando entender

Passei a última semana aprendendo sobre o que o Postfix pode fazer para ajudar a reduzir o spam. Se eu entendi corretamente os diferentes parâmetros de configuração *_restrictions controlam quando as verificações são feitas e então a lista de restrições como permit_mynetworks e check_client_access control o que é verificada . Isso está correto?

Se bem entendi, as verificações são realizadas na seguinte ordem:

  • smtpd_client_restrictions
  • smtpd_helo_restrictions
  • smtpd_sender_restrictions
  • smtpd_relay_restrictions
  • smtpd_recipient_restrictions

Isso está correto? E se eu entendi corretamente, smtpd_delay_reject não afeta a ordem das verificações, mas só afeta quando a rejeição é enviada . Certo?

Minha configuração de servidor

O parâmetro de configuração smtpd_relay_restrictions não parece estar configurado no meu servidor Plesk 11. Minha versão do Postfix é 2.8.4.

Também notei que algumas das verificações são listadas várias vezes em diferentes parâmetros de configuração. Eles precisam ser listados várias vezes?

Aqui está minha configuração atual:

smtpd_sender_restrictions =
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re

smtpd_client_restrictions =
    permit_mynetworks

smtpd_recipient_restrictions =
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

Se bem entendi, seria o mesmo:

smtpd_sender_restrictions =

smtpd_client_restrictions =

smtpd_recipient_restrictions =
    permit_mynetworks
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

O arquivo de listas negras está vazio. Os arquivos no_auth têm isto:

/^/ PREPEND X-No-Auth: unauthenticated sender

e o arquivo no_relay tem isto:

/^/ PREPEND X-No-Relay: not in my network

Se bem entendi, os dois últimos adicionam os cabeçalhos a todos os e-mails que ainda não são permitidos.

Preocupações

  • Verificações repetidas
    O Postfix executa a verificação novamente quando é listado várias vezes? Ou o Postfix sabe que já fez essa verificação? Se as verificações são realizadas várias vezes, isso parece um desperdício. Se eles não forem executados várias vezes, os cabeçalhos no_auh / no_relay serão adicionados adequadamente em todos os casos?

  • Missing smtpd_relay_restrictions
    Excerto do Retransmissão SMTP do Postfix e controle de acesso

    NOTE: Postfix versions before 2.10 did not have smtpd_relay_restrictions. They combined the mail relay and spam blocking policies, under smtpd_recipient_restrictions. This could lead to unexpected results. For example, a permissive spam blocking policy could unexpectedly result in a permissive mail relay policy.

    Outro trecho:

    Some people recommend placing ALL the access restrictions in the smtpd_recipient_restrictions list. Unfortunately, this can result in too permissive access.

    Portanto, não quero listar todas as restrições em smtpd_recipient_restrictions , mas ter várias restrições e as mesmas verificações sob diferentes restrições é confuso. É seguro usar apenas smtpd_recipient_restrictions e smtpd_relay_restrictions e ignorar o cliente, helo, remetente?

  • Lista negra
    Essa lista negra não está no começo da lista? Se o remetente fizer parte da minha rede e puder autenticar, devo realmente bloquear com base no email do remetente? No momento, a tabela está vazia, mas não tenho certeza de qual componente do Plesk pode adicionar endereços de e-mail a essa tabela. Também seria contra o RFC que exige 100% de entrega para os endereços postmaster @ e abuse @.

Aqui está o que eu quero realizar

  • mantenha bastante simples
  • garantir que não crie um retransmissor aberto ou outro furo de segurança
  • certifique-se de não bloquear e-mails válidos
  • endereços de postmaster @ na lista de permissões e abuso @ que existem na tabela de alias virtuais
  • bloqueios de endereços IP na lista negra de spammers da China / Coréia
  • rejeitar, com expressão regular, todos os endereços de destinatários, exceto alguns, em um domínio que use um pega-tudo. Eu estou usando um pega-tudo em um domínio para que eu possa usar endereços de retorno VERP-y mesmo que o Plesk não suporte VERP.

Veja o que eu estava pensando

Em /etc/postfix/main.cf

#smtpd_client_restrictions =
#smtpd_helo_restrictions =
#smtpd_sender_restrictions =

smtpd_relay_restrictions =
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re
    reject_unauth_destination

smtpd_recipient_restrictions =
    check_recipient_access pcre:/etc/postfix/custom/recipient_checks.pcre
    check_client_access cidr:/etc/postfix/custom/sinokorea.cidr
    check_sender_access hash:/var/spool/postfix/plesk/blacklists

Em /etc/postfix/custom/recipient_checks.pcre

# Always accept mail to postmaster@ and abuse@
/^postmaster@/ OK
/^abuse@/ OK

# Reject all mail sent to mailapp.ourdomain.com
# except for certain specific recipients
# and bounce messages which may use VERP
if /@mailapp\.ourdomain\.com$/
!/^(?:validuser|anothervalid|bounces(?:\+.+)?)@/ REJECT
endif

Eu encontrei exemplos que têm o @ que escapou nas expressões regulares. Não é um personagem especial, é?

Minha configuração proposta iria realizar se eu quisesse?

(Nota para si e para qualquer outro usuário do Plesk lendo isto - Uma tarefa cron pode ser necessária para restaurar regularmente as alterações no arquivo main.cf, pois algumas ações do Plesk parecem sobrescrever este arquivo.)

    
por toxalot 16.07.2013 / 05:30

2 respostas

1

Faça o que fizer, não saia de casa sem:

smtpd_client_restrictions = reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net

Eles estão pegando a maioria para mim sozinhos.

    
por 20.07.2013 / 06:11
1

OK, esta é uma longa pergunta. Vou tentar responder uma parte da pergunta acima. E talvez desenhe um resumo baseado neles.

Disclaimer: Eu não usei o plesk, mas eu usei o postfix. Essa questão era mais de um ano, então talvez o plesk tenha atualizado sua configuração para o postfix. Mas eu acho que essa pergunta seria útil para alguém que projete e implemente a restrição de postfix

Q1: estas duas configurações são equivalentes?

smtpd_sender_restrictions =
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re

smtpd_client_restrictions =
    permit_mynetworks

smtpd_recipient_restrictions =
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

AND

smtpd_sender_restrictions =

smtpd_client_restrictions =

smtpd_recipient_restrictions =
    permit_mynetworks
    check_sender_access hash:/var/spool/postfix/plesk/blacklists
    permit_sasl_authenticated
    check_client_access pcre:/var/spool/postfix/plesk/non_auth.re
    permit_mynetworks
    check_client_access pcre:/var/spool/postfix/plesk/no_relay.re
    permit_sasl_authenticated
    reject_unauth_destination

Se um email vier da mynetworks, ele não será verificado por /var/spool/postfix/plesk/no_relay.re e /var/spool/postfix/plesk/no_relay.re . Isso significa que o e-mail será aceito e não será alterado . Em termos de ação pós-fixada (REJECT, ACCEPT), não será diferente, mas para o plesk talvez esses dois cabeçalhos sejam importantes .

Q2: O Postfix executa a verificação novamente quando é listado várias vezes? Ou o Postfix sabe que já fez essa verificação? Se as verificações são realizadas várias vezes, isso parece um desperdício. Se eles não forem executados várias vezes, os cabeçalhos no_auh / no_relay serão adicionados adequadamente em todos os casos?

Sim, talvez pareça um desperdício quando dois cheques são repetidos. Mas essas verificações repetidas serão colocadas em lugares / restrições diferentes. E em todas as verificações, há alguma lógica ou algoritmo como postfix tratou um email. Você pode se preocupar com a verificação repetida se a verificação foi pesada como check_policy_service ou DNSBL. Para cheques leves como permit_mynetwork , você pode ignorá-lo.

Q3: É seguro usar apenas smtpd_recipient_restrictions e smtpd_relay_restrictions e ignorar o cliente, helo, remetente?

Bem, com duas smtpd_recipient_restrictions e smtpd_relay_restrictions deve ser suficiente para alguma restrição avançada. Mas é para postfix > = 2.10. Para usuário com postfix < 2.10, você pode colocar cheques em várias diretivas para que o postfix não seja muito permissivo.

Q4: Minha configuração proposta poderia ser desejada?

Sim, bom trabalho para simplificar sua restrição atual de postfix. Mas cuidado com o fato de o postfix fazer parte do plesk. O engenheiro do plesk pode organizar essas restrições por alguns motivos, como modularidade ou manutenção simples.

Resumo:

  • Não é recomendável colocar todas as restrições na restrição smtpd _ * _.
  • Por esse motivo, você pode usar smtpd_relay_restriction para postfix > = 2.10 ou outra verificação de restrição para postfix < 2,10
por 22.09.2014 / 03:48