jrd*_*oko 2 smtp configuration authentication exim
我在 Windows 服务器上运行一个软件,通过远程 SMTP 服务器发送电子邮件通知。它有很少的配置选项,并且只支持没有 SSL/TLS 的基本 SMTP 身份验证。我在 Debian 服务器上运行 exim4,该服务器将成为此 Windows 程序的 SMTP 服务器。它使用默认配置进行设置,并允许 AUTH PLAIN 和 AUTH LOGIN 未加密连接。我已经通过 telnet 成功发送了一封电子邮件:
telnet servername 25
ehlo test
250-AUTH PLAIN LOGIN
...
auth plain XXX
235 Authentication succeeded
mail from: ...
...
Run Code Online (Sandbox Code Playgroud)
但是,我要连接到此服务器的程序无法连接。为了了解原因,我在连接期间运行了数据包嗅探器,并查看以下会话:
C: HELO hostname
S: 250 Hello hostname
C: AUTH LOGIN XXX | XXX
S: 503 AUTH command used when not advertised | 500 unrecognized command
C: QUIT
S: 221 closing connection
Run Code Online (Sandbox Code Playgroud)
我对 SMTP 协议不够熟悉,无法理解这里发生了什么。我需要在我的 exim4 SMTP 服务器上更改什么才能建立此连接?
Cod*_*lla 11
在503 AUTH command used when not advertised
本质上解释本身而言,它并没有提供给客户使用的选项AUTH
命令。这很可能是因为客户端使用了HELO
而不是EHLO
(我会注意到您在进行 telnet 测试时使用了它)。
SMTP Authentication 是 Extended SMTP 的一部分,由EHLO
命令启动;“普通” SMTP 不支持身份验证,因此从技术上讲它是非法命令,即使某些 SMTP 服务器可能仍然允许它。
最好的解决方案是告诉您的程序尽可能使用扩展 SMTP ( EHLO
),否则可能会有一个 exim 命令强制它允许对HELO
类型连接进行 AUTH 。
** 更新 **
根据这里的帖子:http : //www.exim.org/lurker/message/20040901.063858.126f66ac.en.html
EHLO(不是 HELO)必须在 AUTH 之前由客户提供。
也就是说,除非广告(通过 EHLO,根据 auth_advertise 等),否则无法使用 AUTH 命令。这种行为在 Exim 4.20 中得到了强化,不是一个选项。
如果您的应用程序无法完成,您似乎需要一个不同的 MTA EHLO
。或者,您是否需要身份验证,是否可以使用基于 IP 的 ACL 来完成相同的事情?
最终解决方案
Exim 确实有解决此问题的方法,使用此处allow_auth_unadvertised
所述,您可以执行以下操作:
hosts = *
control = allow_auth_unadvertised
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40231 次 |
最近记录: |