我设置了一个邮件服务器,负责多个虚拟用户和域。这些邮件可以顺利投递到相应的邮箱。
但我无法让系统帐户(root、http 等)的本地交付正常工作。这是我的别名文件:
root: <local_user>
<local_user>: <[email protected]>
MAILER-DAEMON: postmaster
postmaster: root
bin: root
daemon: root
named: root
nobody: root
uucp: root
www: root
ftp-bugs: root
postfix: root
http: root
这是相关部分/etc/postfix/main.cf
:
alias_database = $alias_maps
alias_maps = hash:/etc/postfix/aliases
append_dot_mydomain = no
html_directory = no
inet_protocols = ipv4
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
mydestination = localhost.$mydomain, localhost, localhost.localdomain
mydomain = <mydomain.org>
myhostname = <myhost.mydomain.org>
mynetworks_style = host
myorigin = $mydomain
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = <mydomain.org mydomain2.org mydomain3.org ...>
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
<...> 中的值显然是占位符。
当我在本地发送邮件到 时root
。Postfix 将地址补全到[电子邮件保护],然后它想要通过该地址进行传递virtual
,但当然[email protected]
这不是一个有效的虚拟地址(也不应该是)。
如果地址填写完整,可以进行root@localhost
本地投递,但发送电子邮件时。
我该如何实现这一点?或者我还应该做些什么才能让本地配送顺利进行?感谢您的帮助。
/e:添加mydomain = <mydomain.org>
到上面的配置输出,因为那并不明显。
答案1
尝试添加到您的 mydestination 定义
mydestination = localhost.$mydomain, localhost, localhost.localdomain, <mydomain.org>
或者,将电子邮件更改为 root@localhost。
我不再使用本地帐户来收发任何电子邮件,而是将所有系统帐户配置为虚拟域。然后,我可以使用与虚拟域相同的工具集来运行系统电子邮件(并且所有邮件都存储在同一个位置)。
我不确定您当前的配置是否会阻止来自框外的发往 root 的电子邮件。您可能需要测试一下。
答案2
$myorigin
默认情况下,只要收件人部分没有有效的域名,postfix 就会附加。此行为由附加点_mydomain参数(默认值:是)。您可以阅读 postfix 执行的一些重写模式这一页。
因为myorigin
设置为 $mydomain,所以你会得到上面描述的行为
当我在本地向 root 发送邮件时。Postfix 将地址补全到[电子邮件保护],然后它希望通过虚拟方式交付,但当然[电子邮件保护]不是有效的虚拟地址(并且它不应该是)。
解决方案
将 更改myorigin
为localhost.$mydomain
。它将把完成地址设置为localhost.$mydomain
。由于 localhost.$mydomain 是在 中定义的,因此mydestination
postfix 将使用 /etc/aliases 来执行别名。
答案3
一种解决方案是仅为您想要允许发送邮件的所有本地帐户添加虚拟域(通常是完全限定的主机名)和虚拟邮箱定义。