Email

為什麼發送到 root 的電子郵件會重定向到任何人?

  • May 28, 2021
$ 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

沒有人收到的電子郵件。

$ 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

為什麼發送給 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=<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

為什麼 postfix 會將電子郵件從 root 重定向到任何人?

檢查是否存在名為$HOME/.forward. 如果此文件存在,並且包含電子郵件地址或本地使用者名,則擁有該文件的使用者的傳入郵件將被轉發到給定的地址。

例如,它可能看起來像這樣:

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

正如一些材料所述:

procmail

Root 的郵件不會投遞給任何人 如果您使用 procmail(或其他命令)進行本地郵件投遞,Postfix 將不會以 root 身份投遞郵件。相反,Postfix 以無人身份執行 procmail(或其他)。也許有一天 Wietse 會信任 Postfix 足以以 root 身份執行外部命令。

Postfix 不僅以無人身份執行 procmail(或其他),而且還以 root 身份向無人發送電子郵件。

網路上的一些舊資料: postfix/procmail 配置中的奇怪傳遞

Postfix 自己的投遞代理可以投遞到root 的郵箱,但是postfix 永遠不會以root 身份派生外部程序(例如procmail)。它要麼將 UID 更改為正在傳遞的郵件的所有者,要麼如果該使用者是 root,那麼它將 UID 更改為沒人。

所以 procmail 在傳遞 root 的郵件時會以無人身份執行。

引用自:https://serverfault.com/questions/909686