我需要将 sendmail 守护进程设置为简单的存储转发机制,以将邮件转发到我们的 ISP。
我需要使用 SSL/TLS 和用户名/密码连接到端口 465 上的 ISP SMTP 服务器进行身份验证。这个特定的 ISP (GoDaddy) 不 - afaiu - 支持 STARTTLS,仅支持普通 SSL/TLS。没有代理可以连接到互联网。
我想要实现的是拥有一个始终在线的内部 SMTP,即使当我们与互联网的连接中断、ISP 出现故障或发生其他情况时,它也可以接受电子邮件。然后,内部 SMTP 服务器将挂起电子邮件,直到可以将其传送到外部 SMTP 服务器。此外,内部 SMTP 服务器可以在传入端设置老式方式,以便它接受来自内部网络的未加密和未经身份验证的连接。这允许旧的应用程序只能通过内部 SMTP 服务器以这种方式发送电子邮件(我的公司有一个旧的 Perl 应用程序可以执行此操作)。
我使用的 sendmail 具有以下开箱即用的功能:
版本 8.14.5+Sun 编译:DNSMAP LDAPMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS 管道扫描 STARTTLS TCPWRAPPERS USERDB USE_LDAP_INIT X调试
我浏览了很多博客/邮件列表,但令人惊讶的是无法找到我要找的东西。您可能会认为我的用例现在很常见,但事实并非如此。
这些是我在网上找到的说明所遇到的问题:
它们只是普通的旧东西。这没什么不对,但其中许多都以“这就是您推出自己的 sendmail 的方式”或类似的话开头。我相信现代 sendmail 实现(如我使用的)在安装时是没问题的。
他们告诉您如何设置智能主机,但假设您在端口 25 上连接到未加密且未经身份验证的主机。我相信已经很多年没有人像这样操作外部暴露的 SMTP 服务器了。也许这样的例子在现代并不是无效的,但它让我困惑我可以使用其中的哪一部分。
它们没有充分区分 sendmail 守护程序的接收方(传入 SMTP 连接)和发送方(传出 SMTP 连接)。我不太关心接收方。默认情况下,它仅对来自本地主机的传入连接开放,这对我来说没问题。我不需要在传入端进行任何形式的身份验证或加密。 (我可以使用大约十几种方法来保护 sendmail 守护进程,使其只接受来自本地主机、特定 IP 范围或类似的连接——我知道如何做所有这些,不用担心)。这只是 sendmail 守护进程的外向的我需要使用 SSL/TLS 和用户名/密码的连接。
任何人都可以指出我正确的方向吗?
完成后我很乐意发布完整的示例。