我正在尝试发送电子邮件至例如:[电子邮件保护]和[电子邮件保护]。这两种情况都是 Outlook 邮箱。
Postfix 回复:
(当启用 IPv6 时):
06F908112E 606 Thu Jun 19 10:20:40 [email protected]
(Host or domain name not found. Name service error for name=grassvalley-com.mail.protection.outlook.com type=AAAA: Host not found, try again)
[email protected]
(仅限 IPv4):
6946720087D 3117 Tue Jun 17 21:41:07 [email protected]
(delivery temporarily suspended: Host or domain name not found. Name service error for name=grassvalley-com.mail.protection.outlook.com type=A: Host not found, try again)
[email protected]
当检查 DNS 时,我确实收到了回复(我尝试过 Google DNS、仅 IPv6 DNS、Leaseweb DNS、OpenDNS,但结果总是一样的):
grassvalley-com.mail.protection.outlook.com. 7 IN A 207.46.163.138
grassvalley-com.mail.protection.outlook.com. 7 IN A 207.46.163.170
grassvalley-com.mail.protection.outlook.com. 7 IN A 207.46.163.247
因此有一个正确的 A 答复。
现在,导致问题的原因似乎是 TTL 太低(7 秒),并且对这些 Outlook 域的每个 DNS 回复都需要 > 2 秒:Query time: 2039 msec.
这会导致 Postfix 超时并且无法发送电子邮件。
如果我运行此命令,dig grassvalley-com.mail.protection.outlook.com && postfix flush
电子邮件实际上会被发送,因为它发生在 7 秒的时间范围内(DNS 仍在缓存中)。
我可以告诉 Postfix 超时不那么快吗?我可以告诉 bind 忽略 Outlook 中的 TTL < 7 秒并将其缓存 2 小时吗?
答案1
我有options timeout:1 attempts:1
。resolv.conf
将超时时间更改为 3 秒而不是 1 秒解决了问题:
options timeout:3 attempts:1
并且确保不是在你的配置中添加这一行main.cf
:
smtp_host_lookup = dns, native