适用于本地帐户的混合 Gmail MX + Postfix

适用于本地帐户的混合 Gmail MX + Postfix

设置如下:

我们有一个域名,mydomain.com。除了通过 gmail 使用的一般电子邮件帐户外,所有内容都在我们自己的服务器上。

目前gmail被设置为MX记录。

该服务器还具有支持错误跟踪器等所需的各种电子邮件别名。例如[电子邮件保护]|/路径/到/issuetracker.script

我正在努力进行一个允许执行以下操作的设置,包括本地和用户的电子邮件客户端。

  1. guser1-有一个 gmail 帐户和一个本地帐户
  2. guser2-只有一个 gmail 账户
  3. 错误 - 在 /etc/aliases 中有一个用于问题跟踪器的管道别名

场景

因此,第一步是创建传输图。在这种情况下,我们的服务器将被设置为 MX,并将 guser* 目标电子邮件发送到 gmail。将 gmail 用户放入地图中,如下所示:

[email protected] smtp:gmailsmtp:25
[email protected] smtp:gmailsmtp:25

问题:

  • 忽略以下扩展名[电子邮件保护]
  • 仅当 append_at_myorigin = no 时才有效(如果设置为 yes,gmail 将拒绝连接:E4C7E3E09BA3:to=、relay=none、delay=0.05、delays=0.02/0.01/0.02/0、dsn=4.4.1、status=deferred(连接到 gmail-smtp-in.l.google.com[209.85.222.57]:25: 连接被拒绝))
  • 由于 append_at_myorigin 设置为 no,所有收到的电子邮件都有(未知发件人)

第二种方法是在 /etc/aliases 中设置显式的 localhost 别名,并在 mydomain 上进行域范围转发。这也需要将本地服务器设置为 MX:

root: root@localhost
# transport
mydomain.com smtp:gmailsmtp:25

问题:* 如果我为与“$myhostname”匹配的域创建传输图,则别名文件永远不会被解析。因此,当本地用户(或守护程序)发送如下电子邮件时:

mail -s "testing" root < text.txt

Postfix 忽略 /etc/alias 条目并映射到[电子邮件保护]并尝试将其发送到 gmail 传输映射。

第三次刺杀:

为 bug 创建一个子域名,例如 bugs.mydomain.com。将此域名的 MX 设置为本地服务器,并将 mydomain.com 的 MX 保留为 Gmail 服务器。

问题:* 无法解决本地帐户的问题。因此,当错误跟踪器回复来自[电子邮件保护],它使用本地传输,用户永远不会收到电子邮件。

% postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_at_myorigin = no
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = $myhostname, localhost.$myhostname, localhost
myhostname = mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = 
smtp_tls_cert_file = /etc/ssl/certs/kspace.pem
smtp_tls_enforce_peername = no
smtp_tls_key_file = /etc/ssl/certs/kspace.pem
smtp_tls_note_starttls_offer = yes
smtp_tls_scert_verifydepth = 5
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_mynetworks,   reject_invalid_hostname,   reject_non_fqdn_sender,   reject_non_fqdn_recipient,   reject_unknown_sender_domain,   reject_unknown_recipient_domain,   reject_unauth_destination
smtpd_tls_ask_ccert = yes
smtpd_tls_req_ccert = no
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
tls_random_source = dev:/dev/urandom
transport_maps = hash:/etc/postfix/transport

答案1

切换到虚拟。阅读 postfix 的 VIRTUAL 文档。这样,您可以拥有更多的控制权。

主文件:

virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_maps = hash:/etc/postfix/virtualmailboxmap
virtual_mailbox_domains = mydomain.com
virtual_transport = local:

虚拟,列出您拥有的所有用户

localuser  localuser
somealias  localuser
guser1     [email protected],guser1
bugs       [email protected]

virtualmailboxmap,列出所有本地用户,右边无所谓!

 localuser   rhsunused
 guser1      rhsunused

运输:

 mydomain.com      local:
 gmail.mydomain.com smtp:gmailsmtp:25
 issuetracker.mydomain.com smtp:[issuetracker ip]:25

我使用 cyrus: transport 处理本地账户时遇到了这个问题。我知道这并不能完全回答您的所有问题,但这可能是一个开始。

相关内容