互联网上两个邮件服务器之间的 SMTP 会话:无需身份验证?

互联网上两个邮件服务器之间的 SMTP 会话:无需身份验证?

我有一些关于 SMTP 的基本问题(尽量不要笑太多)。

当我尝试通过 telnet 使用 SMTP 在 Google 上发送电子邮件时,它需要身份验证。邮件服务器使用 SMTP 在它们之间中继消息,对吗?那么它们如何在不相互验证的情况下使用 SMTP 进行中继?我查询了 Google 邮件服务器的 MX,并尝试通过 telnet 启动 SMTP 会话,但似乎不起作用,我只看到黑屏,没有 HELO,没有 EHLO,什么都没有。

答案1

一种常见的配置是,发往组织“内部”地址的电子邮件不需要身份验证,而“出站”电子邮件则需要身份验证。这样,组织就可以接收入站电子邮件,而不会成为互联网上不道德的随机人员发送的垃圾邮件的来源。

这通常是通过完全独立的两组服务器来实现的,它们分别负责接收和发送邮件。接收服务器配置为在所有情况下都需要身份验证,而接收服务器则不需要身份验证,但只接受在组织内部发送的邮件。

我查询了 google 邮件服务器的 MX,并尝试通过 telnet 启动 SMTP 会话,但似乎不起作用,只是屏幕变黑,没有 HELO,没有 EHLO,什么都没有。

这似乎按预期工作。

$ host -t mx google.com
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.

$ telnet aspmx.l.google.com. 25
Trying 74.125.131.27...
Connected to aspmx.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP db10si2487268vdc.138

答案2

您对电子邮件的工作方式有一点误解。

当您通过电子邮件提供商从电子邮件帐户/客户端(使用 SMTP)向由其他电子邮件提供商处理的收件人发送电子邮件时,您的电子邮件提供商会要求您进行身份验证,因为您要求您的电子邮件提供商通过它将您的电子邮件转发给由其他电子邮件提供商处理的收件人。您正在向您的电子邮件提供商没有权限的域发送电子邮件,因此需要进行身份验证,因为您正在要求您的电子邮件提供商将电子邮件转发到另一台服务器。

您的电子邮件提供商会与收件人的电子邮件服务器建立 SMTP 连接,将电子邮件发送到收件人的 SMTP 服务器,而不是通过收件人的电子邮件服务器。收件人的电子邮件服务器是收件人域的电子邮件的权威服务器,因此您的服务器会将电子邮件发送到服务器,而不是通过服务器。这就是 SMTP 服务器相互发送电子邮件的方式。这不是中继。

答案3

我可能误解了你的问题,但它似乎更倾向于电子邮件中继/传递在没有密码的情况下如何工作的一般性质。我会回答这个问题。

当邮件服务器考虑是否中继电子邮件时,它通常会寻找几个关键特征:

  • 源 IP 地址上游连接服务器/客户端 - 换句话说,消息从哪里发送(例如 60.60.60.60)

  • 目标电子邮件地址收件人——换句话说,消息是发给谁的。

(它还可以考虑很多其他事情,但为了简单起见,我将把它们排除在外)。

如果电子邮件收件人的域不属于邮件服务器本身,则服务器将(理所当然地)怀疑该邮件,并要求提供某种“证据”来验证发件人是可信来源,而不是垃圾邮件发送者或试图滥用系统的恶意用户。这时源 IP(以及其他信息)可以提供帮助。

一个简单的设置是提前添加受信任的上游服务器的 IP 地址。例如,我可以告诉我的电子邮件服务器,它可以从[电子邮件保护]当且仅当消息来自可信 IP 时,才能发送到任何地方。

相关内容