是否可以通过 NGINX 反向代理远程(由另一家公司管理,例如 Google Apps 或 Office 365)SMTP/IMAP 服务器?示例:
我托管example.com
,并使用mailhost.com
托管我的邮件。我尝试添加 2 个 CNAME 记录来example.com
实现这一点,但没有成功。[ smtp.example.com
-> smtp.mailhost.com
,等等]
最好情况下,我想要一个子域名(mail.example.com
),指向和,smtp.mailhost.com
并imap.mailhost.com
使用端口区分两者。[ mail.example.com:993
-> imap.mailhost.com:993
,smtp.example.com:587
-> smtp.mailhost.com:587
]
这可能吗?我这样做的唯一原因是为了让我的网站用户更轻松地设置邮件客户端,并避免他们困惑于我为什么要求他们连接到看似随机的域来接收电子邮件。我知道这可能会导致 DKIM 等出现一些问题。
这个任务是简单还是麻烦,或者不可能完成?我有能力设置邮件服务器,但宁愿使用现成的解决方案。
答案1
在我看来,NGINX 邮件代理服务器指南缺少一个非常重要的信息,而这些信息对于我实现类似的功能是必需的:
在 Apache 服务器上使用 PHP 脚本作为 IMAP 身份验证后端
我花了几周时间才找到一个可行的解决方案,因为模拟身份验证服务对我来说无法正常工作。禁用所有 SSL 功能并添加身份验证 php 脚本后,我终于能够通过 NGINX 代理使用 IMAP 接收电子邮件。
SMTP 仍然存在的一个问题是:NGINX 不会将 auth 命令转发到服务器:https://forum.nginx.org/read.php?2,58181,58186#msg-58186。
因此,必须禁用 SMTP 身份验证才能使用 NGINX 邮件代理。如果有人找到解决方法,请在此处发布解决方案:https://stackoverflow.com/questions/56031592/nginx-forwarding-smtp-auth-credentials-to-next-server/56583571#56583571
以下是一些与我想分享的主题相关的链接:
答案2
这在将 NGINX 配置为邮件代理服务器官方文档中的指南。
但您应该注意,除非您能够使任何 SPF、SSL 和 DKIM 配置与上游配置相匹配,否则您可能会遇到邮件传递问题。