我最近买了一台 Raspberry Pi,并决定使用 Citadel 软件制作一个小型电子邮件服务器。我可以收到我尝试发送的两个地址的电子邮件,但我无法向它们发送。这两个电子邮件是 live.com 和 gmail.com 地址,放置一夜后我收到以下错误:
居住:
1) 连接失败:与 mx4.hotmail.com 通信时,SMTP 对话期间连接中断;
2)AAAA 查找 mx4.hotmail.com-DNS 服务器返回没有数据的答案;
Gmail:
1) 连接失败:与 gmail-smtp-in.l.google.com 通信时,SMTP 对话期间连接中断;
2)连接失败:与 gmail-smtp-in.l.google.com 通信时,SMTP 对话期间连接中断;
3) 连接失败:与 alt1.gmail-smtp-in.l.google.com 通话时,SMTP 对话期间连接中断;
4) 连接失败:与 alt1.gmail-smtp-in.l.google.com 通话时,SMTP 对话期间连接中断;
我的防火墙上的所有端口(对应于邮件服务器)都是打开的,并且我可以 ping 上面列出的所有地址,但是,它们仍然坚持不发送。
我可以尝试其他方法来解决这个问题吗?
谢谢!
答案1
要了解连接失败的原因,请使用远程登录实用程序来调试连接。您可以建立到端口 25 的连接,知名港口为了邮件传输协议连接然后使用 telnet 发出电子邮件客户端和其他 SMTP 服务器使用的命令将电子邮件发送到 SMTP 服务器。例如,一旦与 SMTP 服务器建立连接,要发送电子邮件消息,您可以先使用helo
或ehlo
命令向服务器说“你好”。然后发出mail from: sending_address
命令,将您要用作“发件人”地址的电子邮件地址替换为发送地址.然后发出rcpt to: recipient_address
命令收件人地址是您要用作“收件人”地址的电子邮件地址。输入这些命令后,您应该会看到“发件人 ok”和“收件人 ok”响应。然后输入命令data
并按回车键。然后,您可以输入任何您想要的内容作为邮件正文。您之前输入的电子邮件地址不一定是收件人会看到的电子邮件地址。收件人将看到的“发件人”和“收件人”地址可以通过在下From: from_address
一行输入然后来提供To: to_address
,您将在下一行提供您希望收件人看到的“发件人”和“收件人”地址。通常它们与您之前使用的电子邮件地址相同,但不必如此。然后,您可以Subject: your_subject
在该行之后输入您希望在邮件正文中显示的任何内容。例如,A test.
然后按回车键并在下一行输入一个句点。这将终止该消息。然后您可以输入quit
以断开与电子邮件服务器的连接。我在下面列出了您可能会看到的内容:
$ telnet mx4.hotmail.com 25
Trying 207.46.8.199...
Connected to mx4.hotmail.com.
Escape character is '^]'.
220 BAY004-MC6F10.hotmail.com Sending unsolicited commercial or bulk e-mail to Microsoft's computer network is prohibited. Other restrictions are found at http://privacy.microsoft.com/en-us/anti-spam.mspx. Fri, 24 Mar 2017 14:26:41 -0700
helo example.com
250 BAY004-MC6F10.hotmail.com (3.22.0.29) Hello [192.168.55.167]
mail from: [email protected]
550 DY-001 (BAY004-MC6F10) Unfortunately, messages from 192.168.55.167 weren't sent. Please contact your Internet service provider. You can tell them that Hotmail does not relay dynamically-assigned IP ranges. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.
Connection closed by foreign host.
$
我在helo
上面的命令中使用了 example.com。向 SMTP 服务器发送邮件的电子邮件服务器通常会提供其完全限定域名 (FQDN)此处没有名称,但您可以使用任何您喜欢的名称,例如 example.com 或与您的系统关联的 FQDN。我还将连接到 SMTP 服务器的系统的实际 IP 地址替换为私有 IP 地址;您将看到运行 telnet 命令的系统的公共 IP 地址。
我说过上面显示的内容可能就是您将看到的内容,因为我怀疑问题可能出在处理 live.com 地址的电子邮件的 Microsoft 服务器的输出中。也就是说,因为很多垃圾邮件都来自DHCP- 分配的 IP 地址,通常是因为家庭用户的系统受到恶意软件的攻击,这些恶意软件试图使用这些系统分发垃圾邮件,大多数大型电子邮件服务提供商都会让他们的电子邮件服务器检查互联网服务提供商 (ISP) 使用的地址块列表,以便为其客户动态分配地址,并自动拒绝任何已知动态分配的 IP 地址的电子邮件。
如果您希望使用自己的电子邮件服务器发送电子邮件,并且您的服务器具有动态分配的地址而不是静态地址,则您有几个选择。您可以从 ISP 获取静态 IP 地址;通常,如果 ISP 提供此类地址,则需要额外付费。或者,如果您有家庭服务,则可能需要以更高的价格切换到商业服务。或者,您可以将运行在 Rasberrry Pi 上的电子邮件服务器配置为使用智能主机即,您将电子邮件服务器配置为将外发电子邮件路由到另一个 SMTP 服务器,该服务器将把电子邮件转发到收件人的电子邮件服务器。
您可以将电子邮件服务器软件配置为使用 ISP 指定的 SMTP 服务器作为智能主机,也可以使用电子邮件服务提供商提供的智能主机。一些提供邮件列表服务的公司会允许您为每月只需要发送几千封电子邮件的用户创建免费帐户,以便通过他们的电子邮件服务器发送电子邮件;希望这些公司将来的需求增长时会从该公司购买服务。我使用过 SparkPost,但使用的是 Sendmail 而不是 Citadel,所以如果您遇到的问题是由于您的系统具有动态分配的地址,那么我无法为您提供有关 Citadel 的具体说明。