TL:DR我正在尝试弄清楚如何让一个 Postfix 服务器询问另一个服务器,传入电子邮件的收件人地址是否有效,或者传出电子邮件的发件人地址是否是登录用户的有效电子邮件/别名。
完整版本:
因此,我自己托管我的邮件服务器,但是由于使用住宅 ISP,我无法真正使用我的 WAN IP(不是静态的,而且毫无疑问 IP 块会出现在各地的垃圾邮件列表中),因此我还有一个小型 VPS,它充当所有邮件连接的中继。(这实际上有意想不到的好处是,当我的家庭互联网由于任何原因中断时,VPS 只会告诉传入邮件传递存在暂时错误并要求当天晚些时候再试,而不是只是无法找到服务器)
我目前的设置是 Postfix 用于 SMTP 和 SUBMISSION,Dovecot 用于 IMAP。我的虚拟域、用户和别名存储在我家庭网络上的 MariaDB 实例中。
我的家庭网络上的 VM 通过 VPN 连接连接到 VPS。
如果我的家庭网络上有邮件客户端,所有连接都会直接转到虚拟机,如果我发送邮件,Postfix 会将邮件转发到 VPS 并发送出去。当我不在家时,所有东西都会连接到 VPS,VPS 会与家庭虚拟机进行通信,获取邮件数据和身份验证,所有这些都对外界透明。
对于 Dovecot 来说,这非常容易配置,因为我只需要将其指向 VPN 连接提供的 IP 作为 mail_locationimapc
并使用imap
passdb 驱动程序。dovecot 的其余所有配置都位于家中的 VM 上,因此如果我进行更改,例如,从使用 MariaDB 改为使用 LDAP 服务器来获取用户信息,或者更改服务器端规则,我只需在一个地方进行更改即可。
但是对于 postfix,我还没有能够很好地整理它的配置。我不得不在 VPS 上复制家里虚拟机上的大部分设置,所以如果我想更改用户名和密码的验证位置或存储位置,virtual_alias_maps
我需要在两个地方进行更改。此外,我还必须在家里的虚拟机上设置一个代理端口,以便将 SQL 查询从 VPS 传输到虚拟机,然后传输到包含我的数据库的容器中。太乱了。
所以我想知道是否有一组选项可以在 VPS 的 Postfix 实例上设置,以便通过 SMTP 或 SASL 连接指向 VM 来验证传入和传出的邮件,传入邮件都发送给有效的收件人,传出的邮件来自与登录用户相关的有效地址。(我可能是这台服务器上唯一的人类用户,但我还有一堆其他软件,我已经给独立用户提供了这些软件,用于发送错误的邮件通知以及通知我不同地方可用的更新)