to=<x.y@example.com>, relay=none, delay=21311, delays=21301/0.04/10/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=localdomain type=MX: Host not found


When I run the following command on my postfix client, it does resolve. mail.p.example.com hosts our postfix server, which then relays emails to gmail smtp.

host -t MX p.example.com
p.example.com mail is handled by 10 host.p.example.com.

I compare my postfix config with a working config on another host and they're the same.

inet_protocols = ipv4
mynetworks_style = host
inet_interfaces = loopback-only
relayhost = $mydomain

There's more to the config than what I pasted above but nothing related to dns. smtp_host_lookup hasn't been set (default value = dns).

I do not have any resolv.conf files under /var/spool/postfix. Would appreciate any directions on how postfix resolves DNS records.

  • The domain you looked up with host -t MX is not the domain you sent mail to. – Michael Hampton Jan 18 '19 at 0:54
  • So the email was sent to the domain example.com, which has been whitelisted in transport db. The domain I looked up is an environment in example.com. I do not understand how the receiver domain matters here in terms of DNS resolution. I updated the ticket with more details "When I run the following command on my postfix client, it does resolve. mail.p.example.com hosts our postfix server, which then relays emails to gmail smtp." Also updated the receiver address in log. – pdna Jan 18 '19 at 3:38

Aha, now the problem is obvious:

relayhost = $mydomain

You have configured Postfix to deliver all mail to $mydomain, which is set to localdomain.

Your narrative indicates you meant to be relaying mail to Gmail, so your relayhost should be set to the appropriate Google hostname for that purpose, e.g.:

 relayhost = [smtp-relay.gmail.com]:25


 relayhost = [smtp-relay.gmail.com]:587

and your smtp_sasl_password_maps should point to a file containing your Gmail credentials, if you are using SMTP authentication.

| improve this answer | |
  • Let me clarify my statement again. All postfix clients in the environment forward emails to the mail server, which then forwards them to [smtp-relay.gmail.com]:587. The log here is from a postfix client. Its not even hitting the internal mail server – pdna Jan 18 '19 at 3:53
  • But I can check what $mydomain is set to. I have been thinking it resolves via dns or something. – pdna Jan 18 '19 at 3:54
  • So this is not the postfix server that relays to Gmail, but to another postfix server? Definitely check relayhost and set it to the correct value. $mydomain will never be it. – Michael Hampton Jan 18 '19 at 3:54
  • Yes. There is only server in the environment that can relay to smtp-gmail. The config is working on other hosts. I did an md5 comparison on configs – pdna Jan 18 '19 at 3:56
  • Set relayhost to point to that server, then. I have no idea how $mydomain would work on any other server, since that is not likely to be the name of the server, and even if it was, it would probably be semantically wrong. – Michael Hampton Jan 18 '19 at 3:56

hostname -f wasn't resolving to FQDN on the host thats causing issues. its only resolving to shortname. On the hosts where postfix clients are working, its resolving to FQDN

hostname was already set under /etc/rc.conf.d/hostname. I just had to restart hostname service. guess someone manually set the hostname/domainname by running commands instead of using configuration management tools.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.