Authentication SMTP身份验证与非身份验证

Authentication SMTP身份验证与非身份验证,authentication,login,smtp,send,Authentication,Login,Smtp,Send,我正在编写一个SMTP服务器的代码,想知道一个我不知道如何处理的问题 您知道,当您使用Outlook、ThunderBird或任何电子邮件客户端发送电子邮件时,我们(大多数情况下)需要用户名和密码才能通过SMTP服务器的身份验证。在这种情况下,SMTP服务器在执行其他命令(如邮件、数据等)之前需要“身份验证登录” 我在我的项目中完成了这个存根。但我想知道一个例子,当另一个SMTP客户端直接发送到我的SMTP服务器。我的意思是我们的服务器是电子邮件的最终目的地。在这种情况下,不需要使用AUTH登录

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

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

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

如何组织上述两种情况的代码。专业MTA(如Postfix、PowerMTA、Exim)如何组织这些


我希望您能帮助我

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

1) 需要SMTP身份验证

2) 仅从特定IP范围内的客户端进行无SMTP身份验证的Alllow中继

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


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

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