如何logintlsencryption的smtpstream量?

我想知道我的本地postfix在STARTTLS之后对Amazon SES smtpd所说的话。 用纯文本,所以我可以理解它。 Amazon SES需要TLS,所以我暂时不能closures它。

我现在用这个技巧logging了交通的两条腿:

mkfifo proxypipe cat proxypipe | nc -l 11111 | tee -a inflow | nc email-smtp.us-east-1.amazonaws.com smtp | tee -a outflow 1>proxypipe 

然后我有postfix谈话localhost:11111而不是email-smtp.us-east-1.amazonaws.com:25。 只要他们用清晰的文字说话,这会产生一个很好的成绩单。 一旦STARTTLS出现,当然一切都变得乱七八糟。

是否有一些技巧可以通过openssl或后处理使用openssl或类似的东西,找出他们对对方说的是什么? 谷歌search没有产生任何答案。

不要打扰嗅探networking连接; 正如@ voretaq7解释的那样,你不能。 相反, 让postfix通过将远程SMTP服务器的IP地址添加到debug_peer_listdebug_peer_list

如果没有足够的细节来了解发生了什么事情,可以设置smtp_tls_loglevel 4以获取所有线路上的完整转储。

一旦你完成了,一定要改回你的configuration。 您不想在不必要的情况下进行debugging。

请允许我改述你的问题:

我想在TLSencryption的连接中插入一些东西,显示正在发送的明文。

。 。 。 那么它现在不会很安全,是吗? 我的意思是说,TLS的重点就是防止你正在做的事情! – 所以不,你要求的是不可能的,也不是任何理智的pipe理员想要的logging级别。
所有你想知道的是你连接的人(远程系统),你告诉他们(从A到B的邮件)以及他们说的(OK,Deferred,Rejected)。


如果你真的想窃听TLS连接,你必须欺骗你的服务器连接到一个代理,提供一个假的SSL证书(你有密钥),然后代理解密数据(并logging下来),然后重新encryption,以转发到亚马逊的真实服务器。
你可以用OpenSSL的s_clients_server子系统来搭配这样一个野兽,但是这样一个野兽的实现是给读者的一个练习。