使用mac电脑打开自带shell或者iterm的时候均会提示You have mail,之前一直没在意,因为笔者从事网络安全工作,平常研究mac的时候会操作计划任务,之前确实测试过,但之后已经手工清除,但为何还有又这种提示呢?
于是网上hunting,找到一篇相近的文章:https://www.twle.cn/t/19360(感谢这位笔者) 基本上能解决大部分问题,但是反思下整体过程应该是这样的: 首先mac自身的mail机制,尤其是计划任务问题,即机器计划任务未按照预期执行就会报错,会把报错结果以邮件形式发送给使用者,存放在:/var/mail/用户名,这个文件中,linux也是如此。 于是你打开shell的时候就会提醒你这里面有邮件,由于是之前建立计划任务的时候把计划任务中执行的sh脚本删除了,但是本身计划任务未删除,因此计划任务报错,发送了很多邮件,此时收到的信息是: You have new mail ,但是提示完一次以后,之后的提示就变成了You have mail ,使用mail命令查看能看到具体的邮件内容:
From hait@B000000z.localdomain Mon Aug 30 11:24:01 2021 X-Original-To: hait Delivered-To: hait@B003zz.localdomain From: hait@B000033zz.localdomain (Cron Daemon) To: hait@B003zz.localdomain Subject: Cron <hait@B61zz> /tmp/evil.sh X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=hait> X-Cron-Env: <USER=hait> Date: Mon, 30 Aug 2021 11:24:00 +0800 (CST) /bin/sh: /tmp/evil.sh: No such file or directory
分析原因:通过时间可以判断是8月份的邮件,此时也说得通,整个过程: 1、建立计划任务正常运行; 2、删除计划任务执行的sh文件导致报错进而发送邮件 3、删除计划任务(发送报错邮件停止); 4、邮件未读一直提示
1、可以直接关闭终端邮箱功能,上面的链接有命令(我没成功,我用了plan2) 2、删除这个文件夹即可:/var/mail/用户名
首先定位到问题主题出了问题,一开始以为是之前的计划任务一直没清理干净导致,实际上是这样: mac计划任务查询一般我看网上教程都是使用crontab命令进行新建和查询,其实原理差不多都是往/usr/lib/cron/tabs/目录下写文件,所以查询的时候可以直接查看该目录下的文件来确认是否计划任务还存在。