Postfix - 中继本地生成的邮件,但接受来自同一域的 GApps 的邮件

Postfix - 中继本地生成的邮件,但接受来自同一域的 GApps 的邮件

我知道禁用所有本地投递的方法是从“mydestination”中删除域,这将导致所有邮件通过我设置的任何中继进行中继。但我希望 postfix 接受来自 GApps 的所有邮件以进行本地投递到 dovecot,但将所有本地生成的邮件中继回 GApps。

例如:我在服务器上运行 Webmail,使用本地 Postfix。[电子邮件保护]发送电子邮件至[电子邮件保护]。如果 user2 本地存在,postfix 会在本地传递,不存在 - 我可以添加一个后备中继,将该邮件发送到 GApps。但我希望 postfix 始终将这些邮件中继回 GApps(GApps 会将这些邮件下游发送回 postfix 进行本地传递),无论本地可用性如何。这样我就可以拥有一种瀑布模型。

我知道有很多与此相关的问题(没有一个具体回答这个问题),但基本上我想要的是让同一个用户在 gmail 和本地 dovecot 上拥有相同的收件箱。我找到了一个临时解决方案,即直接使用 GApps SMTP 中继而不是本地的 Webmail,但这并不能解决那些使用 IMAP 连接的人的问题(最终必须让每个用户都访问 GApps SMTP)。

答案1

最后我的设置可以与 Postfix 多个实例一起使用马塞加洛提到。我尝试使用 exim4,但 apt-get install exim4 自动卸载了 postfix,甚至没有提示!无论如何,下面是我让它工作的方法:

#Adds some lines to main.cf enabling multiple instance
postmulti -e init

#Creates a new instance at the directory /etc/postfix-outgoing
postmulti -I postfix-outgoing -G mta -e create

对于我的用例,我想要港口二十五港口465用于接收来自 Gmail 的邮件,但需要 postfix提交(在端口 587 上运行)供传出 MTA 使用。所以我在/etc/postfix/master.cf

#submission inet n       -       -       -       -       smtpd

并评论简体中文:简讯但补充说提交得到/etc/postfix-outgoing/master.cf这样的结果

submission inet n       -       -       -       -       smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no

我从中复制了默认的 ISPConfig 的 main.cf/etc/postfix并做了很多修改/etc/postfix-outgoing/main.cf,但主要的修改是:

  1. 将其更改myhostname为与主实例不同。(否则后缀会混淆它们)
  2. 删除了所有 dovecot 特定的配置。
  3. 更改数据目录。
  4. 确保 postfix 不会尝试本地传送。(通过 mydestination、virtual_domains 等)。
  5. 输入您的relayhost
  6. 向 dovecot.conf 添加第二个监听器,service auth将其指向/var/spool/postfix-outgoing/private/auth原始路径的直接引用,对我来说不起作用。或者您可以尝试使用 - 通过 TCP 进行 Dovecot 身份验证

最后启用实例:

postmulti -i postfix-outgoing -x postconf -e \
  "master_service_disable ="
postmulti -i postfix-outgoing -e enable
postmulti -i postfix-outgoing -p start

tail -f /var/log/mail.log看看哪里出了问题。

参考:http://www.postfix.org/MULTI_INSTANCE_README.html

相关内容