我有一个使用 Google Apps 收发邮件的域名。现在我决定在 VPS(运行 Debian squeeze)上设置自己的 MTA(Postfix)。只有极少数(不到六个)用户,其中一些用户更喜欢继续使用 GMail Web 界面(其余用户拥有本地 Unix 帐户)。因此,我需要将某些收件人的邮件转发到 Google SMTP 服务器。起初我做了以下事情:
- 在 Google Apps 中添加了
altmail.mydomain.org
域别名。 为需要 GMail 的用户添加了 Postfix 虚拟别名:
user [email protected]
设置运输表:
altmail.mydomain.org smtp:aspmx.l.google.com
它确实有效,但它会破坏 SPF,而且我猜反复以这种方式转发合法邮件对主机声誉没有任何好处。解决方案是实施 SRS(这似乎对 Postfix 来说相当棘手)或简单地将信封发件人重写为固定地址[email protected]
(在向有效的 Google Apps 帐户发送邮件时,我不会收到太多退回邮件,如果有的话)。
但后来我突然想到,如果我无论如何都想保留 Google SMTP 服务器作为备份 MX 记录,那么对某些收件人返回 TEMPFAIL 将导致任何符合 RFC 的发件人尝试下一个 MX 记录,从而将邮件发送到 Google,而无需打扰我的主机进行中继。这是处理邮件的合法方式吗?有多少发件人 MTA 会因为这种方案而中断?这些收件人主要关心从主要免费电子邮件服务(GMail、Yahoo!、Mail.Ru 等)发送的邮件。最适合这种情况的状态代码和增强状态代码是什么?
RCPT TO
除了编写自定义过滤器之外,还有其他方法可以立即使用 4xx 进行响应吗?
答案1
好吧,如果有人感兴趣的话:
是的,无需编写任何过滤器即可实现此方案:只需使用表check_recipient_access
中的任何自定义响应代码和消息即可access(5)
。
不,它不起作用。至少 GMail 在看到 4xx 错误时会一遍又一遍地重试最高优先级的 MX,而不是尝试下一个。现在我最终将pcre
类型为canonical
表的信封发件人地址重写为[email protected]
。