我有一个后端系统,它只支持发送电子邮件到联合国但是,最终它需要通过公共互联网上经过身份验证的 SMTP 服务器。
我的想法是将其内部发送到未经身份验证的本地 SMTP 服务器,然后让中间服务器使用相关凭据中继到经过身份验证的公共 SMTP 服务器(例如 gmail)。
可以这样做吗?有没有推荐的 SMTP 服务器?
顺便说一句,在 Google 上搜索“未经身份验证”和“经过身份验证”这两个搜索词似乎没有给我带来任何帮助,它只给我带来了一大堆结果,人们想要在未经身份验证的情况下访问 SMTP 服务器。没有关于在凭据完整的情况下从未身份验证中继到身份验证的信息。(或类似信息)。
干杯,迈克。
答案1
如果您是 Windows 用户,则可以在大多数版本的 Windows Server 上安装 IIS 虚拟 SMTP 服务,可以将其配置为接受匿名入站连接并转发到经过身份验证的智能主机,其方式与 Matt 的 Heraka 选项非常相似:
在 IIS 管理器中的 vSMTP 服务的属性中:
该
Access
选项卡上有一个Authenticaton
按钮,您可以勾选该按钮Anonymous access
——这将允许未经身份验证的入站 SMTP 连接该
Access
选项卡还有Connection Control
和按钮,我可能会使用它们将对 SMTP 的访问限制为已知 IP(例如,Relay
如果您从同一台服务器运行服务,则可以将这些限制为)127.0.0.1
该
Delivery
选项卡有一个Advanced
按钮,您可以从中配置一个Smart host
,它是经过身份验证的 SMTP 服务器的主机名/IP(我会在这里关闭Attempt direct delivery
,所以它总是使用智能主机)该
Delivery
选项卡还有一个Outbound Security
按钮,您可以在其中定义Basic authentication
由经过身份验证的 SMTP 服务器管理员提供的用户名/密码/TLS 设置。
通过为这些设置提供正确的组合,您应该能够实现您所寻找的结果。
J.
答案2
您可以使用 Haraka 轻松完成此设置。只需配置 smtp_forward 插件以使用身份验证,一切就绪 (tm)。
为此,请在您的 config/smtp_forward.ini 配置文件中添加以下内容:
host=your_outbound_server_or_IP
; could be 587
port=25
[auth]
type=plain
user=your_valid_username
pass=your_password
在 config/plugins 中你只需要一行:
queue/smtp_forward
然后按照网上的说明启动 Haraka。它应该可以完美满足您的需求。
答案3
在 Postfix 中,以下设置允许您执行此操作:
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_security_options = noanonymous
就我而言,我必须sender_dependent_relayhost_maps
将从 Gmail 发送的邮件重定向到可以为我进行 SSL/TLS 包装的 stunnel:
[email protected] [127.0.0.1]:23456
并且 stunnel 将被适当配置:
[smtp-tls-wrapper-for-gmail]
accept = 23456
client = yes
connect = smtp.googlemail.com:smtps
那么密码映射将在/etc/postfix/sasl_password
。这是一张简单的映射:
[email protected] [email protected]:my_gmail_password
也可以看看postconf(5)
请谨慎使用上述设置:它们允许您计算机上的任何应用程序发送以您的 gmail 帐户身份进行身份验证的电子邮件。这是一个满足您要求的解决方案,但可能不是适合您具体用例的最佳解决方案。