Bloquear email para endereços que não existem no postfix

1

Temos a configuração do postfix como um gateway para filtrar e retransmitir mensagens para o nosso servidor Exchange. Sem configurar o LDAP, existe uma maneira de definir uma lista de endereços válidos para que o postfix possa rejeitar tudo o que está em nosso domínio, mas não para um usuário ou alias válido?

, por exemplo, desejo especificar uma lista de e-mails válidos. Se o RCPT TO for para algo diferente desses e-mails, rejeite-o. Eu planejo usar o fail2ban para proteger esses IPs por uma hora como punição para uma tentativa de ataque de coleta de diretório.

    
por DrDamnit 01.12.2016 / 01:07

1 resposta

0

Isso acabou sendo incrivelmente simples.

Em poucas palavras:

  1. Exporte uma lista de seus endereços de e-mail da troca usando o PowerShell.
  2. Limpe essa lista para que possa ser postada no mapa.
  3. Crie uma regra que verifique os destinatários nessa lista.

Especificamente: No Exchange EMS, execute este comando:

Get-Mailbox -Resultsize Unlimited | Ft EmailAddresses

Se a sua lista de e-mail for enorme, talvez você queira ser um pouco menos tolerante com esse comando e obter um arquivo CSV. Isso funcionou para mim porque só tínhamos cerca de 50, e foi fácil reduzir isso usando o Sublime Text e expressões regulares.

Usando essa lista, removi tudo da lista, exceto os endereços SMTP, deixando um por linha.

Em seguida, no Sublime, adicionei "OK" a cada linha depois dos endereços. Exemplo:

[email protected]  OK

Depois copiei isso para o servidor Postfix como / etc / postfix / access-inbound

Em seguida, executei o seguinte comando:

root@gateway:/etc/postfix/# postmap /etc/postfix/access-inbound

Isso cria o acesso-inbound.db no diretório em que é executado. (Observe acima! Eu fiz isso em / etc / postfix).

Agora, tudo o que resta é dizer ao Postfix para verificar os remetentes usando esse arquivo. Eu fiz isso em smtpd_recipient_restrictions. Note que a diretiva abaixo tem muita coisa lá. Eu deixei as outras configurações lá para o contexto. Primeiro, essa configuração compara o remetente a uma whiltelist e, em seguida, executa uma ação de entrega para esse remetente da lista de desbloqueio. Então, faz todas as outras verificações.

Finalmente, na parte inferior, você vê:

check_recipient_access hash:/etc/postfix/access-inbound,

Isto diz ao postfix: "Se o destinatário estiver nesta lista, aceite o email". (Na verdade, diz: "se o destinatário estiver nessa lista, faça o que a lista diz. Mas, nesse caso, todos os nossos emails válidos têm uma resposta" OK ", então é mais fácil pensar no primeiro para os pesquisadores do n00b) .

Por fim, na parte inferior, você vê rejeitar . Isso significa: "Se você chegou ao fundo de todas essas verificações, e NENHUMA das verificações acima lhe deu um" OK "para aceitar o e-mail, rejeite-o.

smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/whitelist.cf,
    check_sender_access mysql:/etc/postfix/shortcircuit.cf,
    reject_unverified_recipient,
    reject_invalid_hostname,
    reject_unauth_pipelining,
    reject_unknown_recipient_domain,
    reject_unauth_destination,
    permit_mynetworks,
    permit_sasl_authenticated,
    check_recipient_access hash:/etc/postfix/access-inbound,
    reject
    
por 01.12.2016 / 17:56

Tags