我正在 NAT 后面设置 SMTP 服务器。我对 DNS 要求有点困惑,因为我认为我只需设置 SMTP 服务器并允许来自机器上的内部 IP 地址的连接,它就可以正常发送电子邮件。
现在,我可以让它向 Gmail 帐户发送电子邮件,但在其他电子邮件帐户上它似乎无法连接到他们的邮件服务器。
我读过一些关于反向 DNS 查找的文章 - 我是否需要为某个域设置一些 DNS 记录,以便其他邮件服务器可以进行反向查找并检查我是否合法?目前,电子邮件仅来自服务器的外部 IP 地址。
更新
已确认电子邮件发送问题是由于纯文本电子邮件中的行尾不标准。请确保在文本电子邮件中使用"\r\n"
而不是"\n"
,否则某些邮件服务器会拒绝您的邮件!
答案1
我赞同 DrStalker 的说法,很多 ISP 都会阻止 :25 以阻止人们做与你正在做的事情“出于安全目的”,但如果你要求的话,大多数 ISP 也会解除它。
您需要查看的另一件事是 DNS 中的 MX 记录。MX(或 Mail eXchanger)记录会告诉邮件服务器将邮件投递到何处,因为大多数邮件服务器并不在 Web 服务器上。
例如,您的网络服务器已开启x.x.x.1
,而您的邮件服务器已开启x.x.x.2
。您的 A 记录www.example.com
指向x.x.x.1
- 这对于网络浏览器来说很棒,但对于发送邮件来说却不是那么好。为了解决这个问题,您可以为 www.example.com 创建指向 的 MX 记录x.x.x.2
。
关于 MX 记录,有几点需要注意:
- 它必须指向完全限定域名的 A 记录
- 它不能指向 CNAME
- 它无法指向 IP 地址
因此,您可以设置一个 A 记录并将mail.example.com
其指向 ,x.x.x.2
并将您的 MXexample.com
指向mail.example.com
。
你的头已经爆炸了吗?
值得注意的是,仅当您的邮件服务器和 Web 服务器位于不同的公共 IP 地址时才需要此方法。如果它们位于同一个公共 IP 上,并且您只是根据路由器上的端口转发邮件,那么您就不需要需要做到这一点。然而,非常好的做法为您希望接收邮件的每个域都设置一个 MX,即使您只是将其指向您所在区域的 A 记录。
您关于反向 DNS 的疑问仅适用于发送邮件的情况。如果您能够发送邮件至 gmail.com,则表示一切正常(大多数商业或住宅 IP 地址都配置了反向 DNS,它只是指向 ISP DNS 上的 PTR 记录),与接收邮件无关。
答案2
您不需要做太多事情。我不确定为什么它对 Gmail 有效,而对其他地方无效;您到底尝试过发送到多少个不同的域名?
1) 检查您的 SMTP 日志。如果未启用日志记录,请启用它(使用 IIS 管理员)。
2)确保您可以在本地解析无法发送的邮件域。
3) 尝试在无法连接的服务器上运行 telnet 到端口 25。使用此方法手动发送电子邮件非常简单。
注意:检查日志通常可以消除 2 和 3 的需要。
4) 启用反向 DNS 需要您联系您的 ISP 并让他们为您配置。这绝对是邮件服务器/垃圾邮件过滤器拒绝电子邮件的标准,尽管它并不通用。
5)如果您有任何过滤 SMTP 的防火墙,请禁用它们(甚至检查您的互联网路由器,尤其是思科路由器)。
6)确保您已正确设置 SMTP:http://www.itsolutionskb.com/2008/11/installing-and-configuring-windows-server-2008-smtp-server/
答案3
您的 ISP 是否允许您发送 SMTP 流量?许多 ISP 都阻止了此功能;要检查,请尝试手动连接到端口 25 上的远程服务器。如果这不起作用,您需要让 ISP 打开出站 SMTP 流量,或者配置您的 SMTP 服务器以通过 ISP 的 SMTP 服务器中继邮件。