我使用我的postfix服务器作为中继到另一个提供者。 我挖掘一点,找出为什么发送简单的邮件需要这么多的时间。 我知道,后缀做每个单一的邮件完成DNS查询(30秒丢失):
Apr 30 11:26:50 dev1 postfix/smtp[20917]: connecting to in.mailjet.com port 25 Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_query: in.mailjet.com (MX): OK Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com Apr 30 11:26:55 dev1 postfix/smtp[20917]: dns_get_answer: type MX for in.mailjet.com Apr 30 11:26:55 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr11.mailjet.com Apr 30 11:26:55 dev1 postfix/smtp[20917]: lookup smtp-ovhfr11.mailjet.com type A flags 0 Apr 30 11:27:00 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr11.mailjet.com (A): OK Apr 30 11:27:00 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr11.mailjet.com Apr 30 11:27:00 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr7.mailjet.com Apr 30 11:27:00 dev1 postfix/smtp[20917]: lookup smtp-ovhfr7.mailjet.com type A flags 0 Apr 30 11:27:05 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr7.mailjet.com (A): OK Apr 30 11:27:05 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr7.mailjet.com Apr 30 11:27:05 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr8.mailjet.com Apr 30 11:27:05 dev1 postfix/smtp[20917]: lookup smtp-ovhfr8.mailjet.com type A flags 0 Apr 30 11:27:10 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr8.mailjet.com (A): OK Apr 30 11:27:10 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr8.mailjet.com Apr 30 11:27:10 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr9.mailjet.com Apr 30 11:27:10 dev1 postfix/smtp[20917]: lookup smtp-ovhfr9.mailjet.com type A flags 0 Apr 30 11:27:15 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr9.mailjet.com (A): OK Apr 30 11:27:15 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr9.mailjet.com Apr 30 11:27:15 dev1 postfix/smtp[20917]: smtp_addr_one: host smtp-ovhfr10.mailjet.com Apr 30 11:27:15 dev1 postfix/smtp[20917]: lookup smtp-ovhfr10.mailjet.com type A flags 0 Apr 30 11:27:20 dev1 postfix/smtp[20917]: dns_query: smtp-ovhfr10.mailjet.com (A): OK Apr 30 11:27:20 dev1 postfix/smtp[20917]: dns_get_answer: type A for smtp-ovhfr10.mailjet.com Apr 30 11:27:20 dev1 postfix/smtp[20917]: begin in.mailjet.com address list Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref 10 host smtp-ovhfr11.mailjet.com/5.196.43.135 Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref 10 host smtp-ovhfr7.mailjet.com/178.32.115.14 Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref 10 host smtp-ovhfr8.mailjet.com/46.105.54.204 Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref 10 host smtp-ovhfr9.mailjet.com/37.59.74.234 Apr 30 11:27:20 dev1 postfix/smtp[20917]: pref 10 host smtp-ovhfr10.mailjet.com/5.196.43.129 Apr 30 11:27:20 dev1 postfix/smtp[20917]: end in.mailjet.com address list
默认情况下,参数smtp_host_lookup的值是dns 。 正因为如此,postfix 总是会尝试parsingMXlogging收件人域来确定下一跳目标。 Postfix依靠libcparsing器来执行查找,所以预期的行为将取决于库。 例如,postfix将通过/etc/resolv.conf定义的NS服务器进行查询。
根据你上面的日志,看起来像你的NS服务器有问题。 单个DNS查询最多需要5秒才能返回结果,这是exception情况。 这里的postfix查找in.mailjet.com MXlogging时也是相同的日志。 它只在2秒内完成了查找。
May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: in.mailjet.com (MX): OK May 1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type MX for in.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: message repeated 4 times: [ dns_get_answer: type MX for in.mailjet.com] May 1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr9.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr9.mailjet.com type A flags 0 May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr9.mailjet.com (A): OK May 1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr9.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr9.mailjet.com type AAAA flags 0 May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr9.mailjet.com (AAAA): Host found but no data record of requested type May 1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr10.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr10.mailjet.com type A flags 0 May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr10.mailjet.com (A): OK May 1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr10.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr10.mailjet.com type AAAA flags 0 May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr10.mailjet.com (AAAA): Host found but no data record of requested type May 1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr11.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr11.mailjet.com type A flags 0 May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr11.mailjet.com (A): OK May 1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr11.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr11.mailjet.com type AAAA flags 0 May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr11.mailjet.com (AAAA): Host found but no data record of requested type May 1 00:20:37 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr7.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr7.mailjet.com type A flags 0 May 1 00:20:37 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr7.mailjet.com (A): OK May 1 00:20:37 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr7.mailjet.com May 1 00:20:37 dewa postfix/smtp[4002]: lookup smtp-ovhfr7.mailjet.com type AAAA flags 0 May 1 00:20:38 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr7.mailjet.com (AAAA): Host found but no data record of requested type May 1 00:20:38 dewa postfix/smtp[4002]: smtp_addr_one: host smtp-ovhfr8.mailjet.com May 1 00:20:38 dewa postfix/smtp[4002]: lookup smtp-ovhfr8.mailjet.com type A flags 0 May 1 00:20:38 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr8.mailjet.com (A): OK May 1 00:20:38 dewa postfix/smtp[4002]: dns_get_answer: type A for smtp-ovhfr8.mailjet.com May 1 00:20:38 dewa postfix/smtp[4002]: lookup smtp-ovhfr8.mailjet.com type AAAA flags 0 May 1 00:20:38 dewa postfix/smtp[4002]: dns_query: smtp-ovhfr8.mailjet.com (AAAA): Host found but no data record of requested type May 1 00:20:38 dewa postfix/smtp[4002]: begin in.mailjet.com address list May 1 00:20:38 dewa postfix/smtp[4002]: pref 10 host smtp-ovhfr9.mailjet.com/37.59.74.234 May 1 00:20:38 dewa postfix/smtp[4002]: pref 10 host smtp-ovhfr10.mailjet.com/5.196.43.129 May 1 00:20:38 dewa postfix/smtp[4002]: pref 10 host smtp-ovhfr11.mailjet.com/5.196.43.135 May 1 00:20:38 dewa postfix/smtp[4002]: pref 10 host smtp-ovhfr7.mailjet.com/178.32.115.14 May 1 00:20:38 dewa postfix/smtp[4002]: pref 10 host smtp-ovhfr8.mailjet.com/46.105.54.204
所以,从根源上解决问题的最好办法是找出为什么你的NS服务器需要5秒来查找DNS条目。
您只能使用MXlogging的单一结果的解决方法不会在后缀中起作用。 Postfix将尝试parsing从最佳首选MXlogging返回的所有域的Alogging。 in.mailjet.com MXloggingin.mailjet.com返回5个具有相同首选项的主机。 所以后缀将从五个主机查找Alogging。
为了帮助加速DNS查询,您可以使用NSCD并将smtp_host_lookup设置smtp_host_lookup native (如Andy所build议的)。 另一种方法是运行本地DNScaching,如powerdns或unbound 。