Estou tentando implementar uma lista de bloqueio para remetentes e domínios na minha configuração do postfix (Debian 12). Isto é o que tenho até agora:
smtpd_sender_restrictions =
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unknown_client_hostname,
reject_unknown_reverse_client_hostname,
check_sender_access hash:/etc/postfix/access
E:
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_unauth_destination,
reject_unauth_pipelining,
check_sender_access hash:/etc/postfix/access,
check_policy_service unix:private/policy, # SPF Checks
check_policy_service inet:127.0.0.1:10023 # Postgrey
Até onde consegui os documentos do Postfix, o primeiro se aplica ao dalog "MAIL FROM:", enquanto o segundo afeta a caixa de diálogo "RCPT TO:" na comunicação.
Portanto, meu arquivo de acesso tem o seguinte (postmap concluído):
.toobena.or.mg DISCARD Spam domain
Mas ainda posso enviar e-mails para minhas contas locais usando um endereço de envelope com o domínio a ser bloqueado para acesso. Veja a caixa de diálogo via telnet:
root@host:~# telnet mail.dom.com 25
Trying 18.16.42.16...
Connected to mail.dom.com.
Escape character is '^]'.
220 mail.dom.com ESMTP Postfix
ehlo mail.toobena.or.mg
250-mail.dom.com
[...]
mail from: [email protected]
250 2.1.0 Ok
Li em algum lugar que as restrições se aplicam posteriormente, em vez de imediatamente. No entanto, esperava que a tentativa de entrega de correspondência já estivesse bloqueada aqui. Mas se não, posso facilmente inserir mensagens para uma conta local que será entregue. Este é o log de uma entrega bem-sucedida (que deveria ter sido bloqueada):
Jun 12 20:51:41 nc postfix/smtpd[100170]: connect from mail.toobena.or.mg[5.104.111.28]
Jun 12 20:51:43 nc postfix/policy-spf[100175]: Policy action=PREPEND Received-SPF: pass (toobena.or.mg: 5.104.111.28 is authorized to use '[email protected]' in 'mfrom' identity (mechanism 'mx' matched)) receiver=mail.dom.com; identity=mailfrom; envelope-from="[email protected]"; helo=mail.toobena.or.mg; client-ip=5.104.111.28
Jun 12 20:51:43 nc postfix/smtpd[100170]: 07D1EDF910: client=mail.toobena.or.mg[5.104.111.28]
Jun 12 20:51:43 nc postfix/qmgr[99783]: 07D1EDF910: from=<[email protected]>, size=28861, nrcpt=1 (queue active)
Jun 12 20:51:43 nc postfix/smtpd[100170]: disconnect from mail.toobena.or.mg[5.104.111.28] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Assim, a correspondência é aceita e colocada na fila para entrega local.
Eu simplesmente não entendo por que isso está sendo aceito. Sim, o remetente possui um registro SPF válido. Mas isso substitui os outros cheques? Achei que eles foram verificados em ordem - e a política SPF é a mais recente...
Alguém tem ideia do que estou fazendo de errado aqui?
Pode ser necessário alterar
/etc/postfix/access
para conter uma correspondência mais flexível. Então, em vez de:.toobena.or.mg DISCARD Spam domain
O que eu acho (no formato "hash" do BerkleyDB) corresponde apenas
.toobena.or.mg
faça com que corresponda ao domínio:
toobena.or.mg DISCARD Spam domain
ou talvez:
*@toobena.or.mg DISCARD Spam domain