通过telnet进行SMTP STARTTLS证书协商

通过telnet进行SMTP STARTTLS证书协商,smtp,telnet,starttls,Smtp,Telnet,Starttls,我正在尝试在sendmail中启动tls,但我不知道如何使用证书。请给我指路 > telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 <machinename> ESMTP Sendmail <version>; <date>;localhost(OK)-localhost [127.0.0.1] EHLO localh

我正在尝试在sendmail中启动tls,但我不知道如何使用证书。请给我指路

> telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 <machinename> ESMTP Sendmail <version>; <date>;localhost(OK)-localhost [127.0.0.1]
EHLO localhost
250-<mahinename> Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-STARTTLS
250-DELIVERBY
250 HELP
STARTTLS
220 2.0.0 Ready to start TLS
telnet localhost 25 正在尝试127.0.0.1。。。 已连接到本地主机。 转义字符为“^]”。 220 ESMTP Sendmail;localhost(确定)-localhost[127.0.0.1] EHLO本地主机 250-你好,localhost[127.0.0.1],很高兴认识您 250-增强状态码 250-流水线 250-EXPN 250-动词 250-8比特 250码 250-DSN 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 250-STARTTLS 250-Deliveerby 250帮助 STARTTLS 220 2.0.0准备启动TLS
何时以及如何使用/提供证书?

您不能,因为一旦开始使用TLS,对话就会被加密,您可能不会说那种语言;)

以下是您可以做的:

openssl s_client -debug -starttls smtp -crlf -connect localhost:25

OpenSSL将为您执行STARTTLS握手,您将能够从那里获取对话(动态自动解密).

可能端口需要是
587
465
?openssl s_client-starttls smtp-connect smtp.gmail.com:587-crlf-ign_eofFYI@ScottStensland在今天的尝试中,我发现命令似乎挂断了,使用纯
telnet smtp.gmail.com 587
表示它试图使用IPv6地址进行通信。将
-4
添加到我的openssl命令行迫使IPv4协商成功
openssl s_客户端-starttls smtp-4-connect smtp.gmail.com:587-crlf-ign_eof
如何处理“250-AUTH登录XOAUTH2”,我确定base64在这里不起作用?在此阶段如何发送用户名和密码?此答案包含测试SMTP身份验证详细信息所需的所有内容,但我需要发送base64编码的用户名和base64编码的密码。我通过例如
echo'my_username'| base64
在bash中获得base64编码字符串,并将它们剪切并粘贴到openssl对话中。我发现需要在处进行base64编码,以及如何在处进行base64编码