Why doesn't the routing happen before the recipient existence check? Isn't there is way? When I route emails, I mean "The current Postfix doesn't handle anything and just forwards email to another server which is fully responsible for the config".
Não, não é assim que o postfix vai funcionar. Verificações de existência de destinatário e roteamento de e-mail eram duas atividades diferentes para o postfix. Verificações de existência de destinatário foram realizadas quando aceitando email . O processo que o realiza foi smtpd . O roteamento de e-mail foi realizado quando entrega de e-mail . O processo que o realizou foi reescrita trivial
No comentário, você menciona que usa o agente de entrega virtual do postfix para entregar e-mails. Vou lhe dizer que é possível obter informações não-redundantes na configuração do postfix. MAS você deve alterar a configuração atual do postfix.
Para alcançar seu objetivo, devemos mover todos os domínios em virtual_mailbox_domain
class para relay_domains
class. Em seguida, use dovecot LDA para entregar e-mail na caixa de correio correta. A classe de domínios de retransmissão possui um parâmetro especial chamado relay_recipient_maps para verificar a existência do destinatário.
A boa notícia é que você pode usar relay_recipient_maps
junto com transport_maps
. Por quê? Porque relay_recipient_maps usado apenas para verificar a existência do usuário. A cadeia do valor / lado direito em transport_maps foi ignorada quando a verificação de existência do destinatário. Snippet de man postconf .
Optional lookup tables with all valid addresses in the domains that match $relay_domains. Specify @domain as a wild-card for domains that have no valid recipient list, and become a source of backscatter mail: Postfix accepts spam for non-existent recipients and then floods innocent people with undeliverable mail. Technically, tables listed with $relay_recipient_maps are used as lists: Postfix needs to know only if a lookup string is found or not, but it does not use the result from table lookup.
Para completar, aqui a configuração do postfix para esta configuração. Créditos para sebokopter para a ideia .
#main.cf
# rename virtual_mailbox_domains to relay_domains
relay_domains = mydomain.example.com
# put the parameter value of virtual_mailbox_maps AND transport_maps parameter
relay_recipient_maps = hash:/my/virtual_mailbox_maps, hash:/my/transport_maps
transport_maps = hash:/my/transport_maps
relay_transport = dovecot:
#master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}