为什么发送给 root 的电子邮件被重定向到无人?

为什么发送给 root 的电子邮件被重定向到无人?
$ uname -a
Linux xxxx 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux

$ cat  /etc/aliases
# See man 5 aliases for format
postmaster:    root
root:          [email protected]

无人收到电子邮件。

$ sudo mail -f  /var/spool/mail/nobody
"/var/spool/mail/nobody": 23 messages 1 new 19 unread
     1 Anacron            Tue Jan  9 00:07  20/823   Anacron job 

'cron.daily' on xxxx
From: Anacron <[email protected]>
To: [email protected]
Subject: Anacron job 'cron.daily' on xxxx
Content-Type: text/plain; charset=UTF-8

为什么发送给 root 的电子邮件被重定向到无人?

$ sudo mail -f  /var/spool/mail/root
/var/spool/mail/root: 0 messages

root 邮箱里没有邮件。
请发邮件给 root 测试一下。

$  echo "This is the body of the email" | mail -s "This is the subject line" root

他们所有人都可以收到该电子邮件。

 $ sudo mail -f /var/spool/mail/root
 $ sudo mail -f /var/mail/root
 $ sudo mail -f /root/Maildir

只有无人能收到电子邮件。

$ sudo mail -f /var/spool/mail/nobody

/var/log/mail.log 中的日志信息

$ sudo cat /var/log/mail.log
Apr 27 17:48:43 xxxx postfix/pickup[7114]: 1FE0D2801E3: uid=1000 from=<[email protected]>
Apr 27 17:48:43 xxxx postfix/cleanup[7492]: 1FE0D2801E3: message-id=<[email protected]>
Apr 27 17:48:43 xxxx postfix/qmgr[1394]: 1FE0D2801E3: from=<[email protected]>, size=360, nrcpt=1 (queue active)
Apr 27 17:48:43 xxxx postfix/local[7494]: 1FE0D2801E3: to=<[email protected]>, relay=local, delay=0.21, delays=0.17/0/0/0.04, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Apr 27 17:48:43 xxxx postfix/qmgr[1394]: 1FE0D2801E3: removed

为什么 postfix 将电子邮件从 root 重定向到 nobody?

答案1

检查是否存在名为 的文件$HOME/.forward。如果此文件存在,并且包含电子邮件地址或本地用户名,则拥有该文件的用户的来信将被转发到给定的地址。

例如,它可能看起来像这样:

debian9@hwy:~$ sudo cat /root/.forward
nobody
debian9@hwy:~$

答案2

正如一些材料所述:
进程邮件

Root 的邮件被发送给 nobody 如果您使用 procmail(或其他命令)进行本地邮件传递,Postfix 将不会以 root 身份传递邮件。相反,Postfix 会以 nobody 身份运行 procmail(或其他任何命令)。也许有一天 Wietse 会足够信任 Postfix,以 root 身份运行外部命令。

Postfix 不仅以 nobody 身份运行 procmail(或其他),还可以以 root 身份向 nobody 发送电子邮件。

网络上的一些旧材料: postfix/procmail 配置中的奇怪传递

Postfix 自己的投递代理可以投递到 root 的邮箱,但 postfix 永远不会以 root 身份分叉外部程序(例如 procmail)。它要么将 UID 更改为正在投递邮件的所有者,要么如果该用户是 root,则将 UID 更改为 nobody。

因此,procmail 在传递 root 的邮件时以 nobody 身份运行。

答案3

正如用户 @scrapy 指出的那样,重定向/转发是通过进程邮件看看你的/etc/postfix/main.cf检查此行是否存在:(mailbox_command = procmail -a "$EXTENSION"只是为了确保procmail已设置)。

为了用户接收电子邮件,您只需链接根 mbox没人 mbox,像这样(如果你使用):

ln -s /var/mail/{nobody,root}

相关内容