安装 openssl (如果缺失)

安装 openssl (如果缺失)

我的公司最近设置了一个由 Active Directory 驱动的 Microsoft Exchange 环境来整合外发邮件。我们确实有一组临时服务器,现在应该使用我们的 MSEXCHG 作为外发邮件的智能主机。

这些服务器位于 DMZ 中,这就是为什么正在向 Exchange 2010 智能主机进行身份验证?不是一种替代方案,因为我们不能允许 DMZ 中的服务器通过我们的 Exchange 服务器随意发送邮件。

我们在 MSEXCHG 所做的事情:

我们所做的事情exim4 (8)

  • 使用update-exim4.conf (8)(cf exim4_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

我还尝试了其他方法:

因此,必然要问的问题是:我们如何让 exim 使用我们的 MSEXCHG 环境作为智能主机?

答案1

您的组织是否为内部服务器运营自己的证书颁发机构?也许您需要将 Exchange 服务器的 CA 证书添加到 Exim 的证书信任存储中?许多产品都不能很好地报告此错误(我不知道 Exim 是否能)。

Wireshark(首先在服务器上捕获,然后tcpdump -p -s0 -w /tmp/foo.pcap使用 Wireshark 复制到本地工作站)应该能够显示从 Exchange 发送的服务器证书,如果客户端随后挂断,则缺少 CA 证书是一个常见原因。

答案2

我们的问题与我们的设置有关。我们有多个 Exchange Server 并行运行,负载均衡器充当 AP。LB 配置错误,导致它忽略提供任何身份验证方法栏NTLMGSSAPI甚至在成功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'

相关内容