我在 CentOS 6.3 上运行了 postfix v2.6.6,主机名 priest.ocsl.local(私有,内部域),有多个别名
supportpeople: [email protected], [email protected], [email protected]
requests: "|/opt/rt4/bin/rt-mailgate --queue 'general' --action correspond --url http://localhost/", supportpeople
help: "|/opt/rt4/bin/rt-mailgate --queue 'help' --action correspond --url http://localhost/", supportpeople
如果我保留 Postfix 的默认配置,那么别名就会被正确解析/如我所料,这样收到的邮件就会发送到,比如说,[电子邮件保护]将通过 rt-mailgate mailgate 命令进行传输,并传送(通过 ocsl.co.uk(可公开解析的域名)的邮件服务器)至[电子邮件保护]、用户2等。
问题出现在我定义mydomain = ocsl.co.uk
in时/etc/postfix/main.cf
(意图是发送邮件来自,例如,[电子邮件保护])。当我这样做时,postfix 继续正确运行管道命令,但它不再像我预期的那样扩展嵌套别名:而不是尝试传递到[电子邮件保护],用户2等,它尝试发送到[电子邮件保护],它在上游邮件服务器上不存在并会生成 NDR。postconf -n
非工作配置如下(工作配置仅在“mydomain”行上有所不同)。
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = ocsl.co.uk
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
在运行 Sendmail 的旧系统上,我们确实能够按照预期/想要的方式运行。
答案1
这些supportpeople
值在你的 中没有域部分$alias_maps
,因此 Postfix 会将值附加$mydomain
到它们(因为$append_dot_mydomain
)。Postfixmydomain = ocsl.co.uk
会扩展supportpeople
到[email protected]
并尝试将邮件路由到该域的 MX。为了避免这种情况,请将右侧supportpeople
值更改为 Postfix 是最终目的地的完整地址,例如supportpeople@localhost
。
此外,要更改发件人地址,您可以使用$myorigin
, 不是$mydomain
。