Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522114
  • 博文数量: 81
  • 博客积分: 8020
  • 博客等级: 中将
  • 技术积分: 1085
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-08 10:36
文章分类

全部博文(81)

文章存档

2010年(3)

2009年(25)

2008年(53)

我的朋友

分类:

2008-04-23 22:00:52

寄出邮件时,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配置文件。
阅读(1556) | 评论(0) | 转发(0) |
0

上一篇:postfix队列管理

下一篇:postfix虚拟网域

给主人留下些什么吧!~~