Postfix: Endereço do destinatário rejeitado: Usuário desconhecido na tabela de destinatários locais, mesmo que o domínio do destinatário seja um domínio externo

9

Na infraestrutura da minha empresa, eu tenho um servidor de correio interno com postfix cujo nome é, por exemplo, srv-internal.central.mydomain.tld com IP interno 10.10.128.200.

Para trocar e-mails com a Internet , ele usa um servidor de retransmissão de mensagens (um servidor em um ambiente DMZ com todos os buracos necessários, por exemplo ..), mesmo com o postfix, cujo nome é mailgw.central.mydomain.tld com interface interna IP 10.10. 133.105

O nome de domínio público de nossa infraestrutura é (digamos) " central.meudominio.tld ", mas " pec.central.meudominio.tld " NÃO É nosso subdomínio . Ele é fornecido por outro provedor de serviços de Internet fora da nossa rede (portanto, os e-mails para esse domínio precisam sair).

Se eu enviar um email de [email protected] (da máquina srv-internal.central.mydomain.tld) ​​para [email protected] , recebo do servidor de retransmissão o seguinte erro:

Sep  4 08:03:16 mailgw postfix/smtpd[26678]: NOQUEUE: reject: RCPT from unknown[10.10.128.200]: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in relay recipient table; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<srv-internal.central.mydomain.tld>
Sep  4 08:03:16 mailgw postfix/smtpd[26678]: disconnect from unknown[10.10.128.200]

Meu servidor de retransmissão está no Linux CentOS, versão 5.7, o postfix é o postfix-2.3.3-2.1.el5_2 dos repositórios padrão do CentOS.

Digamos que meu domínio seja:

 mydomain = central.mydomain.tld

E minha configuração do postfix no servidor de retransmissão, atualmente é a seguinte:

(postconf -d; postconf -d; postconf -n;) | classificar | uniq -u

alias_maps = hash:/etc/aliases
biff = no
body_checks = regexp:/etc/postfix/body_checks
content_filter = filter:127.0.0.1:10025
default_process_limit = 10
disable_vrfy_command = yes
header_checks = pcre:/etc/postfix/header_checks
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 12582912
mime_header_checks = regexp:/etc/postfix/mime_header_checks
mydestination = $myhostname, localhost.$mydomain
myhostname = mailgw.$mydomain
mynetworks = 127.0.0.0/8, 10.10.24.0/24, 10.10.128.200/32, 10.10.128.201/32
newaliases_path = /usr/bin/newaliases.postfix
readme_directory = /etc/postfix/README_FILES
receive_override_options = no_address_mappings
relay_domains = $mydomain, riminiventure.it
relay_recipient_maps = hash:/etc/postfix/relay_recipients
sample_directory = /etc/postfix/samples
sendmail_path = /usr/sbin/sendmail.postfix
smtpd_error_sleep_time = 5s
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks,    permit_sasl_authenticated,    check_client_access hash:/etc/postfix/access_client,    check_helo_access hash:/etc/postfix/access_helo,    check_sender_access hash:/etc/postfix/access_sender, pcre:/etc/postfix/access_sender_pcre,    check_recipient_access hash:/etc/postfix/access_recipient,    reject_unauth_destination,    reject_invalid_hostname,    reject_unauth_pipelining,    reject_non_fqdn_sender,    reject_unknown_sender_domain,    reject_non_fqdn_recipient,    reject_unknown_recipient_domain,    reject_rbl_client bl.spamcop.net,    reject_rbl_client sbl.spamhaus.org,  check_policy_service inet:127.0.0.1:2501,    permit
smtpd_soft_error_limit = 3
strict_rfc821_envelopes = yes
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 450
virtual_alias_domains = riminifar.it
virtual_alias_maps = hash:/etc/postfix/virtual

E este é o meu / etc / postfix / transport:

central.mydomain.tld        smtp:[srv-internal.central.mydomain.tld]
someotherdomain.org         smtp:[srv-internal.central.mydomain.tld]
yadomain.it                  smtp:[srv-internal.central.mydomain.tld]
xad.central.mydomain.tld        smtp:[srv-internal.central.mydomain.tld]
test.central.mydomain.tld        smtp:[10.10.15.101]

Agora, o endereço do destinatário foi rejeitado: o usuário desconhecido na tabela de destinatários de retransmissão parece que o servidor de retransmissão (mailgw) "pensa" que "pec.central.mydomain.tld" é um de seu subdomínio; portanto, ele procura pelo usuário destinatário em seus relay_recipient_maps, enquanto não deveria IMHO.

Eu esperava esse comportamento se eu colocasse ".central.mydomain.tld" (com ponto inicial!) Na minha tabela de transporte, mas eu realmente tenho "central.mydomain.tld", portanto, lendo os manuais, ele deve considerar apenas o nome de domínio , e não também subdomínios.

Eu aprecio muito se alguém pudesse me sugerir o que estou fazendo de errado.

gabolander
fonte

Respostas:

6

O parâmetro que você deve conhecer é parent_domain_matches_subdomains .

Uma lista de recursos do Postfix em que o padrão "example.com" também corresponde aos subdomínios de example.com, em vez de exigir um padrão explícito ".example.com". Isso é planejado para compatibilidade retroativa: eventualmente, todos os recursos do Postfix exigem padrões de estilo explícitos ".example.com" quando você realmente deseja corresponder aos subdomínios.

Portanto, parent_domain_matches_subdomains mantém a lista de domínios em que o postfix deve corresponder ao seu subdomínio também, mesmo sem (ponto) à sua frente .

Infelizmente, o relay_domainsparâmetro cai nessa lista.

# postconf parent_domain_matches_subdomains
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps

E porque você relay_domainscontém $mydomainou central.mydomain.tld , o postfix corresponde a todos os subdomínios de central.mydomain.tld como relay_domainsnão externos.


A solução está definida parent_domain_matches_subdomainse não inclui relay_domains nesses parâmetros.

masegaloeh
fonte
Muito obrigado, @masegaloeh. Funcionou como um encanto! :) Sua explicação foi muito clara também no Tnx novamente.
Gabolander
@gabolander Se isso funcionar, por favor considere a aceitar esta resposta, então a questão não está flutuando na piscina respondeu-un
masegaloeh
Eu já fiz isso, obrigado. (Eu não pode denunciá-lo como útil, porque eu preciso de 15 como reputação e eu não tenho ainda)
gabolander
0

No meu caso, encontrei a lista de permissões para o usuário de email em: / etc / postfix / relay_recipients Se o usuário não estiver nessa lista, ele nunca receberá um email.

Kurt Kranz
fonte