You have new mail in /var/spool/mail/root

2012年8月13日 | 分类: 【技术】

在Linux的操作中,有的时候每敲一下回车,就出来You have new mail in /var/spool/mail/root的提示。

这是Linux系统所发出的邮件来提醒用户系统中出了哪些问题(收件箱位置:/var/mail/)。这些邮件都是发送给 root 用户的。

查看方法:

mail

如果报错:

-bash: mail: command not found

参考:https://forums.cpanel.net/threads/mail-command-not-found.94853/
参考:https://crybit.com/mail-command-not-found/
参考:https://www.centos.org/forums/viewtopic.php?t=39647

需要安装 mailx :

yum -y install mailx

然后输入你要看的邮件的编号,即可查看指定编号的邮件内容。

出于系统安全考虑,不建议直接使用 root 帐户进行日常操作。可以让系统把发给 root 用户的邮件也给指定的外部邮箱发一份,或者是直接关闭此项服务。

1、关闭sendmail服务

最直接的方式是关闭sendmail服务。但以下方法也可以不用关闭sendmail服务实现效果。

echo "unset MAILCHECK" >> /etc/profile
source /etc/profile

关闭sendmail的功能:

chmod 0 /usr/sbin/sendmail
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

清空 /var/spool/mail/root日志:

cat /dev/null > /var/spool/mail/root
cat /dev/null>;/var/spool/mail/root

2. root邮件转发到外部邮箱

方法一:修改文件 /etc/log.d/logwatch.conf

添加 MailTo = root,xxx@xxx.com

方法二:修改文件 /etc/aliases

添加 root: xxx@xxx.com

注意:如果设置成和主机同域的,好像邮件就发不成,比如本机邮件就是moper.me,那么发这个就没法发,相应的发其他邮箱就可以成功。

关于“/etc/aliases”:

当sendmail收到一个要送给xxx的信时,它会依据/etc/aliases文件中的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如mailing list就会用到这个功能,在 mailing list 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu的 mailinglist,但实际上并没有一个叫redlinux的使用者。实际 aliases档的内容是将送给这个使用者的信都收给mailing list处理程式负责分送的工作。

/etc/aliases是一个文本文档,而sendmail需要一个二进位格式的 /etc/aliases.db。newaliases的功能传是将/etc/aliases转换成一个sendmail所能了解的db文件:

newaliases

除root外的其它用的邮件可以通过在用户/home/下建立一个.forward文件实现转发:

//somebody
other1
other2

文件权限设为600,作用一样,但.forward可以由用户自行维护,而aliases则只有管理员才能修改。

设定~/.forward档案加入转寄邮箱即可。