![为什么发送给 root 的电子邮件被重定向到无人?](https://linux22.com/image/721072/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8F%91%E9%80%81%E7%BB%99%20root%20%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E8%A2%AB%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%97%A0%E4%BA%BA%EF%BC%9F.png)
$ 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}