【问题标题】:Cannot use secure SMTP connection to Office365 with Delphi 2010 and Indy 10.5.5无法通过 Delphi 2010 和 Indy 10.5.5 使用与 Office365 的安全 SMTP 连接
【发布时间】:2016-12-09 00:25:05
【问题描述】:

谁能诊断出我无法使用 Delphi 2010 和 Indy 10.5.5 连接到 smtp.office365.com?

我已经阅读了 Indy 专家 Remy Lebeau 在这个问题中提供的代码示例:Using INDY 10 SMTP with Office365

我从该问题中提取了两个备用代码示例(一个使用 AuthType satDefault,另一个使用 satSASL),并将它们剪切并粘贴到控制台应用程序中。在每种情况下,运行时都会出现以下错误:

EIdOSSLUnderlyingCryptoError: Error connecting with SSL.
Error connecting with SSL.
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

当我将 UseTLS 更改为 utUseExplicitTLS 时(如其他一些答案中所建议的那样,在尝试 TLS 之前需要纯文本连接),我收到以下错误:

EIdOSSLConnectError: Error connecting with SSL.
Error connecting with SSL.
EOF was observed that violates the protocol

我注意到其他答案中有一些关于设置 SSLOptions.SSLVersions 而不是 SSLOptions.Method(据说已被弃用)的参考,但在我的 Indy 版本中,TIdSSLIOHandlerSocketOpenSSL 上似乎不存在该属性。

我相信我拥有随 D2010 更新一起提供的 Indy 版本,但它有点过时了。如果存在更新版本,我愿意更新,但如果不安装 SVN、学习它、从开发中签出并重新编译,我似乎无论如何都找不到这样做。

最后,我尝试运行我的控制台应用程序的所有四个变体,但可执行目录中不存在 DLL,并且存在来自 OpenSSL v1.0.2h 的 DLL,但没有任何明显影响。

编辑:另一条信息。 客户端提供的 SMTP 凭据(此项目通过一个专用的出站电子邮件地址发送电子邮件)的格式为 project@myclientsdomain.com,而不是 @987654328 @。

【问题讨论】:

  • 您还在使用 SSLv3 吗?尝试切换到 TLS 1.0
  • 是的,我的代码使用 SSLv3,但我如何在不访问 SSLVersions 属性的情况下进行切换?
  • 进一步看,我看到常量 sslvTLSv1 可以分配给 Method 属性。我仍然像以前一样收到错误的版本号消息(指 SSL3_GET_RECORD)。
  • 但是!将 sslvTLSv1 与 utUseExplicitTLS 结合起来似乎可以工作。进一步测试。
  • @LarryLustig:是的,这就是你需要做的。

标签: delphi ssl delphi-2010 indy tls1.2


【解决方案1】:

显然,自从 Remy 在链接的问题中写下答案后,Office365 已经停止支持 SSLv3(大概是为了避免已知的漏洞利用),现在需要 TLS。如果您更改这两行,他在原始问题中的回答中的代码将起作用:

idSMTP1.UseTLS := utUseImplicitTLS;
TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvSSLv3;

到:

idSMTP1.UseTLS := utUseExplicitTLS;
TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvTLSv1;

【讨论】:

  • 并确保您连接到正确的Port。隐式 SSL 和显式 TLS 在不同的端口上运行。
  • 我正在使用 587,这似乎需要显式。
  • 是的,这是显式 TLS 端口。
猜你喜欢
  • 2018-10-26
  • 2022-10-14
  • 2013-07-18
  • 2012-02-23
  • 1970-01-01
  • 2019-11-25
  • 2014-12-06
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多