我的公司最近设置了一个由 Active Directory 驱动的 Microsoft Exchange 环境来整合外发邮件。我们确实有一组临时服务器,现在应该使用我们的 MSEXCHG 作为外发邮件的智能主机。
这些服务器位于 DMZ 中,这就是为什么正在向 Exchange 2010 智能主机进行身份验证?不是一种替代方案,因为我们不能允许 DMZ 中的服务器通过我们的 Exchange 服务器随意发送邮件。
我们在 MSEXCHG 所做的事情:
- 添加用户 ([电子邮件保护])
我们所做的事情exim4 (8)
:
- 使用
update-exim4.conf (8)
(cfexim4_files (5)
)我们将 exim 配置exchange.contoso.com:587
为智能主机。 - 在 passwd.client(
exim4_files (5)
) 中我添加了以下行:)exchange.contoso.com:[email protected]:secret123
使用上述配置启动 exim 后,我收到以下两个 TLS 错误主日志:
TLS error on connection to ex.contoso.com [192.168.1.8] (recv): A TLS packet with unexpected length was received.
TLS error on connection to ex.contoso.com [192.168.1.8] (send): The specified session has been invalidated for some reason.
然后我们的 MSEXCHG 拒绝发送邮件,并显示以下(最终)日志条目:
** [email protected] R=smarthost T=remote_smtp_smarthost: SMTP error from remote mail server after MAIL FROM:<[email protected]> SIZE=1538: host ex.contoso.com [192.168.1.8]: 530 5.7.1 Client was not authenticated
我还尝试了其他方法:
- 投入(
MAIN_TLS_ENABLE = 1
exim4.conf.localmacros
http://blog.xig.ch/Exim-Smarthost-mit-Authentifizierung-%FCber-STARTTLS_127.html) - 描述的步骤https://askubuntu.com/questions/167043/how-do-i-configure-exim4-to-send-mail-through-a-password-protected-ssl-smtp-mail
因此,必然要问的问题是:我们如何让 exim 使用我们的 MSEXCHG 环境作为智能主机?
答案1
您的组织是否为内部服务器运营自己的证书颁发机构?也许您需要将 Exchange 服务器的 CA 证书添加到 Exim 的证书信任存储中?许多产品都不能很好地报告此错误(我不知道 Exim 是否能)。
Wireshark(首先在服务器上捕获,然后tcpdump -p -s0 -w /tmp/foo.pcap
使用 Wireshark 复制到本地工作站)应该能够显示从 Exchange 发送的服务器证书,如果客户端随后挂断,则缺少 CA 证书是一个常见原因。
答案2
我们的问题与我们的设置有关。我们有多个 Exchange Server 并行运行,负载均衡器充当 AP。LB 配置错误,导致它忽略提供任何身份验证方法栏NTLM
,GSSAPI
甚至在成功STARTTLS
握手后也是如此。
通过以下方式进行深入测试swaks
jetmore.org(强烈推荐这个工具)揭示了这一点。
答案3
问题是由于 TLS 证书引起的。解决方法:
安装 openssl (如果缺失)
sudo apt-get 安装 openssl
生成自证书
sudo /usr/share/doc/exim4-base/examples/exim-gencert
将 TLS 添加到主 SMTP
sudo nano /etc/exim4/exim4.conf.localmacros
或者选择你的默认 .conf 文件
main_tls_enable ='1'