Postfix DNS相濡以沫

运维 系统运维
Postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组成的。那他们有什么关系呢,请看下文。

  寄出邮件时,postfix使用系统的resolver(即DNS client,能向DNS server查询网域信息的函数库)来取得DNS信息。收信时,你的网域的DNS必须能提供递送信息(MX或A记录)给外界查询,让其他MTA能够找到你的postfix server。

  DNS对于寄信程序的影响

  postfix的smtp MDA必须要能够取得MX与A记录,才能决定收信主机的名称与ip地址。也就是说,在寄信程序中,postfix至少要进行两次DNS查询,第一次是为了取得MX主机名称,另一次是取得该主机名称的ip地址。由于postfix使用操作系统的resolver来访问DNS server,因此,运行postfix的系统至少要能够访问一台DNS server。虽然大部分运行postfix的系统通常也会运行DNS server,但是这并非必要条件。

  如果你怀疑自己的系统不能够正确的查询DNS信息,有三个命令行工具可以帮你找出问题:nslookup、dig以及host。绝大部分unix系统都应该安装这三个工具。你可以利用这些工具查出特定网域的所有类型的资料记录,包括让postfix能将邮件送到正确主机的MX记录。

  DNS问题可能源自于postfix所在系统本身的设定错误,也可能是目标网域的DNS server没有设定好。当你寻找问题原因时,有非常重要的一点必须谨记在心:postfix总是先查mx记录,然后再查A记录。即使你可以顺利查出网域名称的ip地址,但是如果该网域没有提供mx信息,postfix不一定能够在第一次就顺利寄出邮件。

  配置文件选项

  投递邮件时,postfix从DNS系统查出目标网域的所有MX资源记录,然后依据优先值来排序。在postfix顺利连接到收信方的smtp server之后,对方会以状态码来回答smtp MDA的要求。介于2xx范围之间的状态码代表答应要求;若是返回4xx范围内的状态码,表示对方遇到呢暂时性的错误;如果是状态码在5xx范围内,表示发生永久性问题。

  PTR记录

  为了防治垃圾邮件,现在有许多SMTP server要求客户端的ip地址必须要能够查出有效的PTR资源记录。因此,你的postfix系统的ip地址必须在DNS系统里有一个指向postfix主机规范名称的PTR记录,这样才能确保所有SMTP SERVER都原意收下你寄出的邮件

  DNS对于收信程序的影响

  要让postfix收下特定网域的邮件,运行postfix的主机本身名称必须被列在该网域的MX记录里,而且postfix也必须被设定成可以收下该网域的邮件。postfix能收下三种网域的邮件:系统本身所处的本地网域(local domain)、转发网域(relay domains)、虚拟网域(virtual domains)。其中虚拟网域可能是使用虚拟别名(virtual aliases)或虚拟邮箱(virtual mailboxes)。每一种网域都必须被列在特定的postfix参数才有效。

  网域类型 参数

  本地 mydestination

  转发 relay_domains

  虚拟邮箱 virtual_mailbox_domains

  虚拟别名 virtual_alias_domains

  同一个网域不可同时列于不同参数中。如果postfix在两个参数找到同一个网域,它会发出警告。如果你在日志文件看到“mail for example.com loops back to myself“这样的错误信息,通常是因为你的postfix server被列在某网域的MX列表里,但是postfix却没被设定成可以收下该网域的邮件。

  常见问题

  DNS设定不当所造成的问题,通常没有立刻可见的效果,只能从日志文件里的错误信息来分析。

  ”mail for domain loops back to myself“ (某网域的邮件绕回我自己)

  所有关于DNS的错误中,这可能是最常见的。问题原因是你的postfix server被列在某网域的MX列表里,但是你没让postfix知道,它自己就是该网域的邮件终点站。所以,解法就是将该网域列在mydestination参数,或是设定为虚拟网域或转发网域。倘若你的postfix server是列在porxy或NAT设备之后,它可能无法察觉自己是某网域的MX主机,在这种情况下,你得将proxy系统得ip地址加到proxy_interfaces参数

  “host found but no data record of requested type“(能找到主机,但是没有指定数据类型得记录)

  网域得DNS数据库里找不到MX记录,而且网域名称自己也没有A记录。你得要联络该网域得DNS管理员才能解决这问题。如果你自己就是DNS域名数据库得管理员,请确定你的邮件服务器的主机名称确实列在该网域的MX记录里。

  ”no mx host for domain has a valid A record“

  网域的DNS数据库有MX记录,但是查不出mx主机名称所对应的ip地址。你得要联络该网域DNS管理员才能解决这问题。对于你自己得网域,请确定mx记录所列得每一个主机名称,都有一个有效而且正确得A记录。

  ”host not found, try again“

  从DNS系统中查询不出任何有意义得结果。有可能是DNS serer断线或拒绝服务,甚至故障。如果能确定该网域得DNS SERVER正常运作无误,问题可能是网络,或是postfix server系统本身得resolver没有设定妥当。对于最后一种可能,你应该检查系统的/etc/nsswitch.conf与/etc/resolv.conf配置文件。

通过上文介绍,我们知道了DNS对Postfix的寄信和收信程序的影响。希望对大家有所帮助!

【编辑推荐】

 

 

 

责任编辑:赵鹏 来源: 互联网
相关推荐

2012-02-28 09:19:44

云计算信息化

2023-12-15 19:29:20

2011-01-18 18:52:14

Postfix结构

2010-06-02 17:36:31

postfix概述

2011-01-18 15:00:17

Postfix安装

2011-02-21 12:54:47

postfix命令

2011-01-18 14:47:22

Postfix

2011-01-19 09:16:48

Postfix配置

2011-02-21 13:08:37

postfix配置

2010-06-02 18:17:09

Postfix邮件

2012-02-23 23:08:50

mailpostfix开源

2011-01-19 14:00:21

2011-02-21 11:14:47

Postfix配置

2011-01-19 13:39:38

Postfix邮件监控

2011-01-19 09:57:48

Postfix控制

2011-01-18 17:00:31

Postfix入门

2010-06-07 11:22:28

2011-02-21 10:13:38

Postfix

2011-01-19 09:55:27

postfix

2011-02-21 09:45:15

点赞
收藏

51CTO技术栈公众号