为什么发送到 root 的电子邮件会重定向给任何人?

scr*_*apy 3 email root nobody

$ 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:          root@xxxx.xxxx
Run Code Online (Sandbox Code Playgroud)

没有人收到的电子邮件。

$ 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 <root@xxxx.xxxx>
To: root@xxxx.xxxx
Subject: Anacron job 'cron.daily' on xxxx
Content-Type: text/plain; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

为什么发送给 root 的电子邮件会重定向给任何人?

$ sudo mail -f  /var/spool/mail/root
/var/spool/mail/root: 0 messages
Run Code Online (Sandbox Code Playgroud)

root 的邮箱中没有电子邮件。
给root发送邮件进行测试。

$  echo "This is the body of the email" | mail -s "This is the subject line" root
Run Code Online (Sandbox Code Playgroud)

他们都可以收到电子邮件。

 $ sudo mail -f /var/spool/mail/root
 $ sudo mail -f /var/mail/root
 $ sudo mail -f /root/Maildir
Run Code Online (Sandbox Code Playgroud)

只有没有人可以收到电子邮件。

$ sudo mail -f /var/spool/mail/nobody
Run Code Online (Sandbox Code Playgroud)

在 /var/log/mail.log 中记录信息

$ sudo cat /var/log/mail.log
Apr 27 17:48:43 xxxx postfix/pickup[7114]: 1FE0D2801E3: uid=1000 from=<debian9@xxxx.xxxx>
Apr 27 17:48:43 xxxx postfix/cleanup[7492]: 1FE0D2801E3: message-id=<20180427094843.1FE0D2801E3@xxxx.xxxx>
Apr 27 17:48:43 xxxx postfix/qmgr[1394]: 1FE0D2801E3: from=<debian9@xxxx.xxxx>, size=360, nrcpt=1 (queue active)
Apr 27 17:48:43 xxxx postfix/local[7494]: 1FE0D2801E3: to=<root@xxxx.xxxx>, 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
Run Code Online (Sandbox Code Playgroud)

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

scr*_*apy 8

正如一些材料所述:
procmail

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

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

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

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

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