【问题标题】:SMTP authentication vs non-authenticationSMTP 身份验证与非身份验证
【发布时间】:2015-04-29 00:27:13
【问题描述】:

我正在编写一个 SMTP 服务器,并且想知道一个我不知道如何处理的问题。

您知道,当您使用 Outlook、ThunderBird 或任何电子邮件客户端发送电子邮件时,我们需要(大多数情况下)用户名和密码来通过 SMTP 服务器进行身份验证。在这种情况下,SMTP 服务器在其他命令(如 MAIL、DATA...)之前需要“AUTH LOGIN”。

我在我的项目中完成了这个存根。但我想知道一个案例,当另一个 SMTP 客户端直接发送到我的 SMTP 服务器时。我的意思是我们的服务器是电子邮件的最终目的地。在这种情况下,不需要使用 AUTH LOGIN 进行身份验证。

我如何为上述 2 种情况组织我的代码。 Postfix、PowerMTA、Exim等专业的MTA是如何组织这些的。

希望你能帮助我

【问题讨论】:

  • 那么“只需要对非本地邮件进行身份验证”选项?
  • 这篇维基百科文章可能很有趣:SMTP Authentication
  • 我想我只有一种方法,正如 Alex K 上面所说的那样。但是我遇到了一个问题:在大多数情况下,AUTH LOGIN 在 RCPT TO 命令之前执行,我们可以确定它是本地地址还是外部地址。这意味着我仍然对此感到困惑。

标签: authentication login smtp send


【解决方案1】:

大多数传出 SMTP 服务器执行以下操作之一:

1) 需要 SMTP 身份验证

2) 只允许来自特定 IP 范围内的客户端的无 SMTP 身份验证的中继

如果您没有执行上述任何一项操作,那么这意味着您的 SMTP 服务器基本上是作为“开放中继”运行的,这意味着垃圾邮件发送者可以滥用您的服务器来发送外发垃圾邮件。

许多 ISP 托管的 SMTP 服务器执行上述第 2 条,以允许其客户端(并且仅它们的客户端)通过其 SMTP 服务器发送邮件 - 只要客户端在其网络上。

【讨论】:

    猜你喜欢
    • 2010-10-27
    • 2011-11-17
    • 1970-01-01
    • 2012-03-15
    • 2019-01-03
    • 2018-06-23
    • 1970-01-01
    • 2016-04-12
    • 2020-09-19
    相关资源
    最近更新 更多