使用时STARTTLS
,服务器的监听端口在连接时最初是未加密的。当客户端连接时,它可以发送一个可选的STARTTLS
如果服务器支持,则向服务器发送命令以动态执行 SSL/TLS 握手。这允许旧的非 SSL/TLS 客户端继续连接到同一端口,同时允许较新的启用 SSL/TLS 的客户端使用 SSL/TLS(如果服务器上可用)。这对应于UseTLS=utUseExplicitTLS
在印地。你需要设置UseEHLO
为 True 才能使用UseTLS=utUseExplicitTLS
,作为EHLO
命令是如何TIdSMTP
发现服务器是否支持STARTTLS
命令与否。
使用时SSL/TLS
代替STARTTLS
,服务器的侦听端口始终使用加密,并且客户端必须在连接后立即启动 SSL/TLS 握手,然后才能交换任何其他数据。这对应于UseTLS=utUseImplicitTLS
在印地。没有STARTTLS
使用的命令。
对于身份验证,TIdSMTP
有两个选项 - 旧的(且不安全)AUTH LOGIN
由原始 SMTP 规范定义的命令,以及基于 SASL 的哈希/加密算法的 SMTP 扩展(Kerberos、GSSAPI、NTLM 等作为 SASL 算法实现)。
要使用 SASL,请设置TIdSMTP.AuthType
to satSASL
然后填写TIdSMTP.SASLMechanisms
集合指向单独的TIdSASL
-您希望在应用程序中支持的算法的派生组件。 Indy 拥有原生 SASL 组件DIGEST-MD5
, CRAM-MD5
, CRAM-SHA1
, NTLM
(实验),ANONYMOUS
, EXTERNAL
, OTP
, PLAIN
, SKEY
, and LOGIN
(SASL 包装器AUTH LOGIN
)。如果您需要其他算法(例如 Kerberos 或 GSSAPI),则必须编写自己的算法TIdSASL
-派生组件。对于使用用户名/密码的算法,必须将这些值分配给单独的TIdUserPassProvider
然后分配给 SASL 组件(TIdSMTP.UserName
and TIdSMTP.Password
属性不与 SASL 一起使用)。您支持的 SASL 算法越多,您能够支持的服务器数量就越多。
对于仍然支持的服务器AUTH LOGIN
,可以通过设置来使用TIdSMTP.AuthType
to satDefault
(并可选择设置TIdSMTP.ValidateAuthLoginCapability
如果服务器支持则为 FalseAUTH LOGIN
但没有报告此事以回应EHLO
命令),然后填写TIdSMTP.UserName
and TIdSMTP.Password
属性,或者通过包括TIdSASLLogin
组件中的TIdSMTP.SASLMechanisms
收藏。
UseVerp
and UseNagle
与安全无关。VERP
是一个 SMTP 扩展,用于检测由于无法送达错误而退回的电子邮件。 Nagle 是一种用于优化网络数据包的网络算法。