我知道禁用所有本地投递的方法是从“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
,但主要的修改是:
- 将其更改
myhostname
为与主实例不同。(否则后缀会混淆它们) - 删除了所有 dovecot 特定的配置。
- 更改数据目录。
- 确保 postfix 不会尝试本地传送。(通过 mydestination、virtual_domains 等)。
- 输入您的
relayhost
。 - 向 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
看看哪里出了问题。