我注意到,可以telnet
进入我拥有的邮件服务器并向其他客户端发送伪造的消息。这仅适用于邮件服务器所关联的域;我无法对其他域执行此操作。
例如,假设我拥有example.com
。如果我telnet example.com 25
可以成功地向另一个用户发送消息而无需身份验证:
HELO local
MAIL FROM: [email protected]
RCPT TO: [email protected]
DATA
SUBJECT: Whatever this is spam
Spam spam spam
.
我认为这是一个大问题;我该如何确保这一点?
答案1
如果您通过 telnet 连接到的邮件服务器是您在地址中指定的域的权威服务器RCPT TO:
(上例中为 example.com),则可能无需担心。这仅仅意味着您的邮件服务器正在接受您为其设置的域中的地址的邮件。正如 @joeqwerty 指出的那样,这就是 SMTP 的工作方式。尝试使用不由该邮件服务器管理的域中的电子邮件地址。
但是,如果这是不同的域,则意味着您的服务器正在中继,这可能是一件坏事。我说“可能”是因为还有其他一些事情需要检查。
SMTP 服务器以多种方式决定是否转发电子邮件。通常,它们会接受发往该服务器的所有邮件(如上所述)。此后,它们可能会根据设置方式执行以下操作之一:1. 转发来自指定 IP 地址/范围的所有电子邮件。这对于 ISP 来说很常见,因此它们只转发来自自己客户的电子邮件。有时(至少在日本)它们还会根据客户的发件人地址进行过滤,以验证客户是否只使用 ISP 域内的地址。
先 POP 后 SMTP。基本上,它会监视需要密码的 POP 登录(与 SMTP 不同)。如果登录成功,它会认为该 IP 地址的用户可能也有权发送邮件,并且它会在规定的时间内转发所有 SMTP 消息。先 POP 后 SMTP
ESMTP 的 SMTP-AUTH 机制。这是一个允许您在发送邮件时输入授权凭据的扩展。
还有其他许多不同的反垃圾邮件过滤器,它们可以在发送过程的不同阶段(在 SMTP 对话中、排队前、发送前等)运行,这也会混淆视听。不过我认为这涵盖了主要内容。
就你的情况而言,如果
- 您的服务器不具备您要发送到的域名的权威性,并且
- 您未在 SMTP 之前使用 POP / 未使用 POP 通过您的 IP 地址进行身份验证(例如使用您的邮件客户端检查邮件),并且
- 您尚未将您的 IP 地址设置为允许在服务器上中继的可信 IP 地址
那么你可能遇到了问题,应该研究如何限制邮件服务器的中继。不过这些设置是特定于服务器的,因此无论你使用的是哪个服务器,你都必须查看文档。
答案2
是的,因为 SMTP 就是这样工作的。向 SMTP 服务器拥有其电子邮件域权威的用户发送电子邮件并不是欺骗服务器。这就是 SMTP 服务器向其他 SMTP 服务器发送电子邮件的方式。
从功能上来说,通过 telnet(未经身份验证)向该服务器具有权威性的电子邮件域的用户发送电子邮件与任何其他 SMTP 服务器向同一用户发送消息之间没有区别。
多年来,曾有几个人“向我提出这个问题”,并指出他们不了解 SMTP 的实际工作原理。他们感到困惑的是:
通过 telnet(未经身份验证)向该服务器拥有其电子邮件域权限的用户发送消息。这就是 SMTP 的工作方式。
和
通过 telnet(未经身份验证)向服务器不具有电子邮件域权限的用户发送消息。这是使用 SMTP 服务器作为中继,通常不受欢迎。