Faça o Postfix rejeitar To:mydestination da web, mas aceite se enviado localmente e ainda aceite To:virtual_mailbox_domains da web

Faça o Postfix rejeitar To:mydestination da web, mas aceite se enviado localmente e ainda aceite To:virtual_mailbox_domains da web

Quase tenho minha configuração perfeita do Postfix (v3.3.1) no CentOS8. Meus objetivos são:

  • Permitir que os serviços enviem e-mails para usuários Linux. (crontab para root)
  • Não aceite e-mail público para usuários Linux. ([e-mail protegido])
  • Defina quais usuários receberão emails públicos sem torná-los usuários Linux.

Consegui fazer o que foi dito acima, mas com um efeito colateral não consigo descobrir como prevenir. Um pouco do que fiz até agora:

myhostname = server.foobar.com
mydomain = foobar.com
myorigin = $myhostname
mydestination = $myhostname, localhost
mail_spool_directory = /var/spool/mail

virtual_transport = virtual
virtual_mailbox_domains = foobar.com
virtual_mailbox_base = /var/spool/email/

Este bit informa ao Postfix que qualquer e-mail enviado por um serviço a um usuário recebe $myhostname adicionado ([e-mail protegido]) e é entregue no e-mail padrão do sistema no formato /var/spool/mail.

Qualquer email enviado para um usuário Linux no domínio como[e-mail protegido]é tratado como um domínio virtual, procura um usuário virtual e se não houver rejeita o email.

Se eu adicionar um usuário virtual (como webmaster), qualquer email enviado para esse usuário ([e-mail protegido]) é aceito e entregue para /var/spool/email/...manter o email público separado do email do sistema.


O problema...

Se alguém for sábio o suficiente para enviar um e-mail para o nome do host ([e-mail protegido]) da Internet, ele é aceito e entregue em /var/spool/mail. Não consigo descobrir como bloquear isso.


Eu tentei configurar default_transport = error:Domain doesn't accept email., mas isso não mudou o comportamento. Os documentos não suportam esse recurso, mas vi isso mencionado em um fórum, então tentei.

Não é importante para mim manter os usuários do Linux como user@$myhostname, essa foi apenas a única maneira de descobrir como manter os usuários do Linux separados dos usuários virtuais no mesmo nome de domínio para evitar que spammers atinjam[e-mail protegido],[e-mail protegido], etc.

Outras configurações, se importantes:

html_directory = no
local_recipient_maps =
luser_relay = postmaster
mail_spool_directory = /var/spool/mail
meta_directory = /etc/postfix
mydestination = $myhostname, localhost
mydomain = foobar.com
myhostname = server.foobar.com
mynetworks_style = host
myorigin = $myhostname
relay_domains =
relayhost =
virtual_mailbox_base = /var/spool/email/
virtual_mailbox_domains = foobar.com
virtual_transport = virtual

Alguma idéia ou outra maneira de fazer isso?

Responder1

Eu encontrei uma solução.

Mantendo a myorigin = $myhostnameforma de separar usuários locais de usuários virtuais no mesmo domínio conforme indicado na minha pergunta.

Na smtpd_recipient_restrictionsseção de main.cf, depois de permit_mynetworksadicionar check_recipient_accessapontando para uma lista. Eu usei hash:, parecia algo como:

# Don't include the "...", its just to show this is among other settings

smtpd_recipient_restrictions =
   ...
   permit_mynetworks
   check_recipient_access hash:/etc/postfix/block_mydomain
   ...

Em seguida, crie o arquivo de lista/hash/etc/postfix/block_mydomain

hostname.domain.com     513 Invalid domain.

Salve o arquivo e execute postmap block_mydomainpara criar a versão *.db.

Em seguida, reinicie o postfix systemctl restart postfixe pronto.

Eu testei e posso enviar e-mails usando o comando sendmail localmente para qualquer usuário Linux. O Crontab pode enviar e-mail para usuários locais do Linux. Mas se você enviar um e-mail da Internet, [email protected]ele será devolvido. E caso você esteja se perguntando o[e-mail protegido]ainda é aceito e descartado.

informação relacionada