$ 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?
正如一些材料所述:
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 运行。
| 归档时间: |
|
| 查看次数: |
3617 次 |
| 最近记录: |