我正在尝试配置ColdFusion以使用1& 1的服务器(smtp.1and1.com)发送电子邮件,即使我已经设置了用户名和密码,它仍然会失败。
这是我到目前为止所做的:
当我点击保存时,我收到消息“连接验证失败!”
在mail.log的ColdFusion日志文件中,我看到了这个错误:
“错误”,“scheduler-1”,“03/22/16”,“19:39:21”,,“无法发送命令 SMTP主机“
我运行了WireShark并捕获了一些数据包,它似乎确实连接到服务器,一些通信来回传输,然后中止。
以下是捕获示例:
No Time Protocol Length Info
1 0.000000 TCP 66 49858 ? 587 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
2 0.000567 TCP 66 587 ? 49858 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM=1 WS=512
3 0.000611 TCP 54 49858 ? 587 [ACK] Seq=1 Ack=1 Win=131328 Len=0
4 0.007028 SMTP 112 S: 220 perfora.net (mreueus002) Nemesis ESMTP Service ready
5 0.015100 SMTP 70 C: EHLO vm229CAC8
6 0.015556 TCP 60 587 ? 49858 [ACK] Seq=59 Ack=17 Win=29696 Len=0
7 0.015697 SMTP 159 S: 250 perfora.net Hello vm229CAC8 [**.**.**.**] | 250 SIZE 69920427 | 250 AUTH LOGIN PLAIN | 250 STARTTLS
8 0.019485 SMTP 64 C: STARTTLS
9 0.021416 SMTP 62 S: 220 OK
10 0.058490 TLSv1 132 Client Hello
11 0.059244 TLSv1 1514 Server Hello
12 0.059246 TCP 1514 [TCP segment of a reassembled PDU]
13 0.059283 TCP 54 49858 ? 587 [ACK] Seq=105 Ack=3092 Win=131328 Len=0
14 0.059308 TLSv1 710 Certificate
15 0.070314 TLSv1 61 Alert (Level: Fatal, Description: Certificate Unknown)
16 0.070368 TCP 54 49858 ? 587 [FIN, ACK] Seq=112 Ack=3748 Win=130560 Len=0
17 0.070858 TLSv1 61 Alert (Level: Fatal, Description: Internal Error)
18 0.070905 TCP 54 49858 ? 587 [RST, ACK] Seq=113 Ack=3755 Win=0 Len=0
19 0.071198 TCP 60 587 ? 49858 [FIN, ACK] Seq=3755 Ack=113 Win=29696 Len=0
所有这些都让我觉得证书中有一些东西(因为它在用户名和密码困扰之前就会中止)。
我已经从包14中保存了3个证书并查看了它们并且它们看起来都很好 - 有效性正常,Thawte是根CA - 检查并确认包含的证书是正确的等等。
我错过了什么?还有其他日志文件可能会对这个问题有所了解吗?
由于
答案 0 :(得分:4)
我找到了。这是证书。
ColdFusion在Java之上运行。 Java有自己的一组受信任的根证书。该服务器的根证书不存在(因此它不受信任)。
解决方案基本归结为:
第一步很简单 - 我在WireShark中扩展了第14个数据包,其中有3个证书,将它们保存为1.cer 2.cer和3.cer文件(它是3.cer只有根目录)。我想我可以通过https访问1& 1的任何网页并抓住它,但不确定他们是否会使用相同的根CA.因此从实际数据包中提取它似乎是更安全的选择。
ColdFusion安装在C:\ColdFusion\
中,并找出它在C:\ColdFusion\bin\cfstart.bin
下查看的..\runtime\bin\jrun -start coldfusion
所启动的Java运行时。
其Java运行机器的证书存储在C:\ColdFusion\runtime\jre\lib\security\cacerts
剩下的就是如何在该密钥库中导入它 - 我使用portecle建议here。
重新启动ColdFusion并礼貌地询问它确认设置后,我确认了它们,我在WireShark中看到了以下日志:
No. Time Protocol Length Info
104 3.895581 TCP 66 55157 ? 587 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
105 3.896180 TCP 66 587 ? 55157 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM=1 WS=512
106 3.896229 TCP 54 55157 ? 587 [ACK] Seq=1 Ack=1 Win=131328 Len=0
107 3.902608 SMTP 112 S: 220 perfora.net (mreueus003) Nemesis ESMTP Service ready
108 3.903791 SMTP 70 C: EHLO vm229CAC8
109 3.904271 TCP 60 587 ? 55157 [ACK] Seq=59 Ack=17 Win=29696 Len=0
110 3.904390 SMTP 159 S: 250 perfora.net Hello vm229CAC8 [**.**.**.**] | 250 SIZE 69920427 | 250 AUTH LOGIN PLAIN | 250 STARTTLS
111 3.904532 SMTP 64 C: STARTTLS
112 3.906347 SMTP 62 S: 220 OK
118 4.112009 TCP 62 [TCP Retransmission] 587 ? 55157 [PSH, ACK] Seq=164 Ack=27 Win=29696 Len=8
119 4.112057 TCP 66 55157 ? 587 [ACK] Seq=27 Ack=172 Win=131072 Len=0 SLE=164 SRE=172
120 4.115457 TLSv1 132 Client Hello
121 4.116154 TLSv1 1514 Server Hello
122 4.116157 TCP 1514 [TCP segment of a reassembled PDU]
123 4.116158 TLSv1 710 Certificate
124 4.116201 TCP 54 55157 ? 587 [ACK] Seq=105 Ack=3748 Win=131328 Len=0
125 4.156467 TLSv1 321 Client Key Exchange
127 4.196201 TCP 60 587 ? 55157 [ACK] Seq=3748 Ack=372 Win=30720 Len=0
128 4.196237 TLSv1 97 Change Cipher Spec, Encrypted Handshake Message
129 4.196799 TCP 60 587 ? 55157 [ACK] Seq=3748 Ack=415 Win=30720 Len=0
130 4.197005 TLSv1 97 Change Cipher Spec, Encrypted Handshake Message
131 4.197742 TLSv1 91 Application Data
132 4.198262 TLSv1 166 Application Data
133 4.198550 TLSv1 87 Application Data
134 4.199201 TLSv1 93 Application Data
135 4.199677 TLSv1 117 Application Data
136 4.200122 TLSv1 93 Application Data
137 4.200345 TLSv1 101 Application Data
138 4.240137 TCP 60 587 ? 55157 [ACK] Seq=3981 Ack=595 Win=30720 Len=0
143 4.448738 TLSv1 105 Application Data
154 4.652126 TCP 105 [TCP Retransmission] 587 ? 55157 [PSH, ACK] Seq=3981 Ack=595 Win=30720 Len=51
155 4.652153 TCP 66 55157 ? 587 [ACK] Seq=595 Ack=4032 Win=131072 Len=0 SLE=3981 SRE=4032
并尝试发送一些测试电子邮件,一切都按预期工作。
感谢大家的帮助和建议! :)
P.S。我还找到了备份选项。结果是1& 1确实支持TLS但不需要它。没有TLS的普通旧SMTP在端口587上运行正常。
我偶然发现了这个 - 它可能是ColdFusion中的一个错误(在我的案例中是第9版)。在ColdFusion的服务器设置>邮件> Undelivered Mail我告诉它重新发送一封失败的电子邮件。它确实 - 但没有尝试TLS部分。