Postfix: adresse du destinataire rejetée: utilisateur inconnu dans la table des destinataires locaux, même si le domaine du destinataire est un domaine externe

9

Dans mon infrastructure d'entreprise, j'ai un serveur de messagerie interne avec postfix dont le nom est, par exemple, srv-internal.central.mydomain.tld avec IP interne 10.10.128.200.

Pour l'échange de mails avec le Net, il utilise un serveur de messagerie relais (un serveur sur un environnement DMZ avec tous les trous d'épingle nécessaires par exemple ..), même avec postfix, dont le nom est mailgw.central.mydomain.tld avec l'interface interne IP 10.10. 133.105

Le nom de domaine public de notre infrastructure est (disons) " central.mydomain.tld ", mais " pec.central.mydomain.tld " N'EST PAS notre sous-domaine . Il est fourni par un autre FAI en dehors de notre réseau (donc, les mails vers ce domaine, doivent sortir).

Si j'envoie un courrier de [email protected] (de la machine srv-internal.central.mydomain.tld) ​​à [email protected] , j'obtiens du serveur de relais l'erreur suivante:

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]

Mon serveur de relais est sous Linux CentOS version 5.7, la version postfix est postfix-2.3.3-2.1.el5_2 des référentiels CentOS standard.

Disons que mon domaine est:

 mydomain = central.mydomain.tld

Et ma configuration postfix sur le serveur relais, est actuellement la suivante:

(postconf -d; postconf -d; postconf -n;) | trier | 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

Et voici mon / 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]

L' adresse du destinataire a été rejetée: l'utilisateur inconnu dans la table des destinataires de relais semble que le serveur de relais (mailgw) "pense" que "pec.central.mydomain.tld" est l'un de ses sous-domaines, il recherche donc l'utilisateur destinataire dans ses cartes relay_recipient_maps, alors qu'il ne devrait pas à mon humble avis.

Je m'attendais à ce comportement si je mettais ".central.mydomain.tld" (avec le point initial!) Dans ma table de transport, mais j'ai vraiment "central.mydomain.tld", donc, en lisant les manuels, il ne devrait considérer que le nom de domaine , et pas aussi les sous-domaines.

J'apprécie grandement que quelqu'un puisse me suggérer ce que je fais mal.

gabolander
la source

Réponses:

6

Le paramètre que vous devez connaître est parent_domain_matches_subdomains .

Une liste des fonctionnalités de Postfix où le modèle "example.com" correspond également aux sous-domaines de example.com, au lieu d'exiger un modèle ".example.com" explicite. Il s'agit d'une compatibilité descendante prévue: à terme, toutes les fonctionnalités de Postfix devraient exiger des modèles de style ".example.com" explicites lorsque vous voulez vraiment faire correspondre des sous-domaines.

Ainsi, parent_domain_matches_subdomains contient la liste des domaines que postfix devrait également correspondre à son sous-domaine même sans (point) devant lui .

Malheureusement, le relay_domainsparamètre tombe dans cette liste.

# 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

Et parce que votre relay_domainscontient $mydomainou central.mydomain.tld , postfix correspond à tous les sous-domaines de central.mydomain.tld comme relay_domainsnon externes.


La solution est définie parent_domain_matches_subdomainset n'inclut pas relay_domains sur ces paramètres.

masegaloeh
la source
Merci beaucoup, @masegaloeh. Cela a fonctionné comme un charme! :) Votre explication était très claire aussi à nouveau Tnx.
gabolander
@gabolander Si cela fonctionne, veuillez envisager d' accepter cette réponse, de sorte que la question ne flotte pas dans le pool sans réponse
masegaloeh
Je l'ai déjà fait, merci. (Je ne peux pas le signaler comme utile, car j'ai besoin de 15
points de
0

Dans mon cas, j'ai trouvé la liste blanche pour les utilisateurs de messagerie sous: / etc / postfix / relay_recipients Si votre utilisateur n'est pas dans cette liste, il ne recevra jamais de courrier électronique.

Kurt Kranz
la source