如何在linux下设置cronjob自动发送邮件?

bq8i3lrv  于 2023-01-01  发布在  Linux
关注(0)|答案(1)|浏览(131)

我一直致力于创建一个脚本来扫描linux服务器上的一系列邮箱,找到那些邮箱中有超过250封邮件的邮箱,然后发送一封带有这些邮箱名称和每个邮箱有多少邮件的邮件。
下面是执行此操作的mailboxcounter脚本:

ls /path to mailboxes/ -lR | grep rw | awk '{count[$3]++} END {for (word in count) if (count[word] > 250) print word, count[word]}'

然后,我尝试创建一个cronjob,以便定期发送一封包含符合脚本标准的邮箱的电子邮件,现在我将其设置为每5分钟运行一次,只是为了测试。
下面是这个cronjob:

*/5 * * * * /usr/sbin/sendmail name@email.com < <( bash /path/mailboxcounter.sh ) >/dev/null 2>&1

我第一次运行cronjob时,它运行得非常完美,但在第一封邮件之后,它就再也没有发送过任何其他邮件,更不用说每隔5分钟发送一封了。此外,我还尝试添加一些字符串来清理我的原始脚本,如下所示:

ls /path to mailboxes/ -lR | grep rw | awk '{count[$3]++} END {for (word in count) if (count[word] > 25) print "Name: " word",", "emails in mailbox: " count[word]}'

但是添加了这些字符串之后,cronjob就不会再发送任何电子邮件了。
我试过使用mail命令,并确认服务器上安装了mailx,但它似乎根本不起作用,所以我一直坚持使用sendmail。
我在这里错过了什么,我该如何修复它,使cronjob将定期发送电子邮件,同时还添加更多的描述性字符串到我的原始脚本,而不会发送电子邮件?我觉得我很接近,但一直在尝试和错误失败。任何帮助都将不胜感激。

lymnna71

lymnna711#

来自手册页
Sendmail不打算作为用户界面例程;其他程序提供用户友好的前端; sendmail仅用于传送预先格式化的消息
这样您就可以重新设置消息的格式,或者最好使用mailmailxmutt等。

更新

可以在https://www.linuxjournal.com/content/sending-emailssend-them-linux-terminal中找到使用这些命令的一些示例

相关问题