我正尝试从远程电子邮件帐户向本地网络上的 postfix smtp 邮件服务发送邮件。本地网络上一切正常,用户可以自由地在彼此的本地帐户之间交换邮件。但是,我无法向外部发送电子邮件,也无法从外部接收电子邮件。当我向远程服务器发送电子邮件时,我的日志显示“没有到主机的路由”。当我从远程服务器发送电子邮件时,我收到一条退回消息,上面写着“未找到 MX 或 A 记录”。我确信这是 DNS 问题,而不是 Postfix 问题,所以我将用 DNS 来重新表述这个问题。以下是令人困惑的地方:
我为我的域创建了一个区域文件,该文件只能由我的本地主机 DNS 服务器识别。当我查询我的 ISP 的 DNS 服务器时,我收到 NXdomain 错误。假设只有我的环回 DNS 可以识别区域文件,那么公共网络如何知道这个文件?这与我在公共注册商处注册的域有何关系?我的远程电子邮件帐户如何确定我确实有该域的 MX 和 A 记录,尽管仅在我的本地 DNS 上?
顺便说一下,我的网络位于 NAT 后面,并且我已经通过两个防火墙转发了 53,并且它目前处于打开状态。
以下是当前的区域文件:
db.admitonetwowire.com
$TTL 1天 @ IN SOA ns1.admitonetwowire.com.root.admitonetwowire.com.( 3 604800 86400 2419200 604800) @ IN NS ns1.admitonetwowire.com。 根目录 65.13.145.203 ns1 在 65.13.145.203 服务器在 65.13.145.203 @ 在 65.13.145.203 @ IN MX 0 server.admitonetwowire.com。
数据库.203.145.13.65
$TTL 1天 @ IN SOA ns1.admitonetwowire.com.root.admitonetwowire.com.( 3 604800 86400 2419200 604800 ) @ IN PTR ns1.admitonetwowire.com @ IN PTR 服务器.admitonetwowire.com @ IN PTR root.admitonetwowire.com @ IN PTR admitonetwowire.com。 @ IN NS ns1.admitonetwowire.com。
顺便说一下,65.13.145.203 是我的公共 IP。
答案1
让我们先从 DNS 问题开始。您应该已经与域名注册商一起为您的域名指定了名称服务器。(一些注册商也提供 DNS 服务并提供设置基本 DNS 记录的工具 - 但我假设这里不是这种情况。)名称服务器不必是您域名的 SOA(授权起始点);它只需知道 SOA 记录的位置。除非您使用的是具有静态 IP 的企业帐户,否则 ISP 通常不会为帐户提供 DNS 服务,即使这样,他们通常也只为您的服务器的 IP/主机名配置了 PTR 记录(让您自行管理 DNS 记录)。因此,查询您的 ISP DNS 以获取有关您的域的信息将一无所获。
如果您使用的是有线或 DSL 住宅帐户,则需要考虑使用动态 DNS 服务(如 dyn.com)来管理 DNS。有线/DSL 在其网络上使用动态寻址,您的公共 IP 会随时间而变化。该服务相对便宜,成为您域 DNS 记录的 SOA,允许您创建所需的所有 DNS 记录(包括 MX 记录),并将您的域请求定向到您的服务器。然后,您将与域名注册商一起指定动态 DNS 服务名称服务器。
解决该问题后,您可能会遇到大多数 ISP 阻止端口 25 的问题,该端口用于 SMTP 连接,Postfix 依靠该端口进行传入和传出连接。在某些情况下,您可以让 ISP 取消对您帐户的阻止 - 但并非总是如此。
一旦 DNS 指向您的服务器并且外界可以访问它,您就可以开始解决 Postfix 问题。
答案2
如果我查找你的域名的 NS 服务器,我会得到以下信息:
admitonetwowire.com. 3434 IN NS ns1.admitonetwowire.com.
admitonetwowire.com. 3434 IN NS ns09.domaincontrol.com.
admitonetwowire.com. 3434 IN NS ns10.domaincontrol.com.
比如,你的是第一个,其他两个是 GoDaddy 的。我相信你已经将 GoDaddy 的配置为辅助了?
如果以上情况属实,那么问题在于您的服务器没有监听 UDP 53 端口,但它应该监听。我无法从您的服务器获取任何记录,这意味着 GoDaddy 也无法获取。
你可以检查/etc/bind/named.conf.options
一下应该有:
listen-on {
65.13.145.203;
};
您可以通过运行以下命令检查监听端口:
netstat -tupanl | grep ":53 "
还要检查防火墙是否没有阻止 UDP 53。注意:应该阻止 TCP 53,只允许 UDP 连接。