![Linux 邮件命令不再像以前那样工作](https://linux22.com/image/611644/Linux%20%E9%82%AE%E4%BB%B6%E5%91%BD%E4%BB%A4%E4%B8%8D%E5%86%8D%E5%83%8F%E4%BB%A5%E5%89%8D%E9%82%A3%E6%A0%B7%E5%B7%A5%E4%BD%9C.png)
我一直在 crontab 中使用以下邮件命令,该命令运行正常,直到上周五我们重新安装了邮件服务器:
echo "Testing 123" | mail -s "ECS PostDate Processed" "[email protected] [email protected]" -- -r "[email protected]" -F "ServerCronJobs"
以前,“--”会将命令行参数路由到 sendmail,以便从名称发送并添加回复地址。现在似乎 -- 被忽略了,所有额外的参数都被视为电子邮件地址。因此电子邮件将:
from root <[email protected]>
to me, chrish, -r, noreply, -F, ServerCronJobs
现在缺少什么?
答案1
您可能在操作系统升级后获得了不同版本的“邮件”命令,并且它没有相同的选项。
为什么不直接使用 sendmail 呢?这是 unix MTA 始终模拟的标准化命令,并且非常适合脚本使用:
(
echo "Subject: ECS PostDate Processed"
echo "To: [email protected], [email protected]"
echo "Reply-To: [email protected]"
echo "From: ServerCronJobs <[email protected]>"
echo
echo "Testing 123"
) | /usr/sbin/sendmail -oi -t
可以采用( echo ; echo ; echo ) | sendmail
其他样式来使其适合一行。
或者,如果它只是echo
管道中某处的命令,则用“此处的文档”替换:
/usr/sbin/sendmail -oi -t <<EOT
Subject: ECS PostDate Processed
To: [email protected], [email protected]
Reply-To: [email protected]
From: ServerCronJobs <[email protected]>
Testing 123
EOT