后缀:别名将被忽略

Ste*_*fen 6 postfix aliases

我有一个配置为后缀 MTA 的服务器,它也运行一个 munin 节点。在 /etc/aliases 我添加了:

root:    hostmaster@my.domain
Run Code Online (Sandbox Code Playgroud)

在postfix的main.cf中配置:

mydomain = my.domain
myorigin = $mydomain
alias_database = hash:/etc/aliases
relay_domains = my.domain
append_at_myorigin = no
...
Run Code Online (Sandbox Code Playgroud)

每次更改别名或后缀配置文件后,我都会调用newaliasespostmap <cfgfile>并重新启动后缀。

每次如果 munin 将发送(错误)电子邮件,我都会在邮件日志文件中收到:

Dec 22 16:45:19 myserver postfix/pickup[21509]: 5CFBA2011E0: uid=995  rom=<munin>
Dec 22 16:45:19 myserver postfix/cleanup[22094]: 5CFBA2011E0: 
    message-id=<20151222154519.5CFBA2011E0@my.domain>
Dec 22 16:45:19 myserver postfix/qmgr[21510]: 5CFBA2011E0: from=<munin>, size=999, nrcpt=1 
    (queue active)
Dec 22 16:45:20 myserver postfix/smtp[22099]: 5CFBA2011E0: to=<root@my.domain>, 
    orig_to=<root>, relay=internal.my.domain[XXX.182.189.136]:25, delay=4.2, 
    delays=3/0.01/1.1/0.09, dsn=5.1.1, status=bounced (host 
    internal.my.domain[XXX.182.189.136] said: 550 5.1.1 <root@my.domain>: Recipient address 
    rejected: User unknown in virtual mailbox table (in reply to RCPT TO command))
Dec 22 16:45:20 myserver postfix/cleanup[22094]: A98B72012D2: 
    message-id=<20151222154520.A98B72012D2@my.domain>
Dec 22 16:45:20 myserver postfix/bounce[22100]: 5CFBA2011E0: sender non-delivery 
    notification: A98B72012D2
Run Code Online (Sandbox Code Playgroud)

不明白为什么“root”(orig_to)没有像别名文件中指定的那样替换为“hostmaster@my.domain”。似乎后缀将myorigin值附加到“root”。不知道为什么,因为我还指定了append_at_myorigin = no.

这里发生了什么?我想用“hostmaster@my.domain”替换“root”地址。我怎样才能做到这一点?

Sle*_*rPL 12

在我的情况下,我想使用/etc/aliases(因为有些包使用它,所以你必须验证更改并复制到/etc/postfix/virtual

为什么它不起作用的问题在于myorigin. 如果你设置了myorigin,所有发送到 root、nobody 和其他本地人的邮件都会自动更改为root@myorigin

就我而言:/etc/aliases:

nobody:   root
root: admin@example.com
Run Code Online (Sandbox Code Playgroud)

/etc/邮件名:

myhost.example.com
Run Code Online (Sandbox Code Playgroud)

/etc/postfix/main.cf:

myorigin = /etc/mailname
myhostname = othername.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = othername, localhost.localdomain, localhost
Run Code Online (Sandbox Code Playgroud)

在这种情况下,发送给任何人的所有邮件都被更改为nobody@myhost.example.com(因为myorigin),然后发送到某个地方。

我必须改变mydestination

mydestination = myhost.example.com, othername, localhost.localdomain, localhost
Run Code Online (Sandbox Code Playgroud)

现在发送到的邮件nobody被重定向到root,它变成了nobody@myhost.example.com,但是因为它在mydestination里面查找别名并变成了root@myhost.example.com,但是因为它在mydestination里面查找别名,然后重定向到admin@example.com,它不在 mydestination 中并被发送应该发送到哪里;D

  • 这是一个比公认的更好的答案。此处显示了本地交付工作的另一个示例:https://arstechnica.com/information-technology/2014/03/taking-e-mail-back-part-2-arming-your-server-with-postfix-dovecot/ 2/ (2认同)

Bre*_*bad 11

不确定“my.domain”究竟是什么,但别名仅用于本地交付。

相反,您可能想要使用虚拟地图

作为 root(或 sudo)

在 /etc/postfix/virtual (或virtual所在的位置)

root    hostmaster@my.domain
Run Code Online (Sandbox Code Playgroud)

在 main.cf

virtual_maps = hash:/etc/postfix/virtual
Run Code Online (Sandbox Code Playgroud)

或(后缀的现代版本)

virtual_alias_maps = hash:/etc/postfix/virtual
Run Code Online (Sandbox Code Playgroud)

虚拟地图修改后

# postmap /etc/postfix/virtual
# postfix reload
Run Code Online (Sandbox Code Playgroud)

请注意“root”的所有邮件将被重定向到“hostmaster@my.domain”。