通过 telnet 进行 SMTP STARTTLS 证书协商

Posted

技术标签:

【中文标题】通过 telnet 进行 SMTP STARTTLS 证书协商【英文标题】:SMTP STARTTLS certificate negotitiation via telnet 【发布时间】:2015-01-17 18:48:13 【问题描述】:

我正在尝试在 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

我应该何时以及如何使用/提供证书?

【问题讨论】:

【参考方案1】:

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

您可以这样做:

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

OpenSSL 将为您进行 STARTTLS 握手,您将能够从那里接听对话(动态自动解密)。

【讨论】:

也许端口需要是587465 openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof 仅供参考 @ScottStensland 今天在尝试此操作时,我发现该命令似乎挂断了,并且使用纯 telnet smtp.gmail.com 587 表示它尝试使用 IPv6 地址进行通信。将-4 添加到我的openssl 命令行会强制进行IPv4 协商并且它成功了。 openssl s_client -starttls smtp -4 -connect smtp.gmail.com:587 -crlf -ign_eof 如何处理“250-AUTH LOGIN XOAUTH2”,我确定 base64 在这里不起作用?在这个阶段如何发送用户名和密码? 这个答案包含了我测试我的 SMTP 身份验证详细信息所需的一切,除了我需要发送我的 base64 编码的用户名和我的 base64 编码的密码。我在 bash 中得到了 base64 编码的字符串,例如echo 'my_username' | base64 并将它们剪切并粘贴到 openssl 对话中。我发现需要在pepipost.com/tutorials/smtp-connection-from-command-line 进行base64 编码以及如何在linuxhint.com/bash_base64_encode_decode 进行base 64 编码

以上是关于通过 telnet 进行 SMTP STARTTLS 证书协商的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 telnet 连接到 smtp 服务器错误 504

SMTP Telnet 和 PHP 没有从 HELO 得到任何响应

我正在尝试使用 smtp 协议通过 telnet 发送电子邮件,但在“MAIL FROM:”之后遇到错误响应

将 DKIM 与 SMTP TELNET 连接一起使用

php smtp 服务器

SMTP和POP3概念?