我遇到了一个问题,即 gmail 阻止了使用 mailx 发送的电子邮件。我通过设置一个合适的 ~/.mailrc 解决了这个问题,它看起来像:
set smtp-use-starttls
set nss-config-dir=/home/theuser/.certs
set ssl-verify=ignore
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=xxx
set smtp-auth-password=yyy
set from="rabbitovh@thehologram.com(Rabbit Server)"
Run Code Online (Sandbox Code Playgroud)
所以现在当我运行时:
echo "hi" | mailx xxx@gmail.com
Run Code Online (Sandbox Code Playgroud)
我的电子邮件以用户和 root 身份成功发送。
现在我希望 cron 也能工作。我更改了“/etc/sysconfig/crond”以强制它使用mailx,使用:
CRONDARGS="-m /usr/bin/mailx"
Run Code Online (Sandbox Code Playgroud)
我有 ~/.mailrc 设置:
但无论我做什么,echo 输出都没有成功通过电子邮件发送。
crontab 看起来像(我已经检查过,脚本正在运行并完成它们的工作,并且回显,只是 cron 不发送电子邮件):
MAILTO="xxx@gmail.com"
# Every minute check processes are running, restart if necessary and send an email.
* * * * * source /home/theuser/.bashrc; global audit_regular
# Every day, send an email describing the state of the host and its jobs.
0 5 * * * source /home/theuser/.bashrc; global audit_daily
# Every Monday at 7am, archive the logs.
0 7 * * 1 source /home/theuser/.bashrc; global archive_logs
Run Code Online (Sandbox Code Playgroud)
此外,这个 crontab 是在另一台主机上设置的,并且可以正常发送电子邮件。
mailx
如果您在命令行上将目标地址传递给它,则仅发送邮件。当您不带参数运行它时,它会从其标准输入中读取交互式命令。请注意,您的测试给它提供了已被解释为命令的垃圾;其中一些命令可能损坏了您的邮箱、发送了电子邮件等。
Tell mailx
to run mailx -t
,它需要标准输入上带有标题的完整电子邮件。
从粗略的检查来看,您似乎无法通过 crond 启动脚本传递带参数的命令。所以写一个shell包装器/usr/local/sbin/mailx-t
#!/bin/sh
exec mailx -t
Run Code Online (Sandbox Code Playgroud)
并把CRONDARGS="-m /usr/local/sbin/mailx-t"
在/etc/sysconfig/crond
。
归档时间: |
|
查看次数: |
5055 次 |
最近记录: |