Ubuntu 20.04 的 Cron 竟然不支持 MAILFROM,而且查了一下,之前的版本据说也不支持,有人说 22.04 开始支持了。好吧,但是我的 R740 服务器不能正常安装这个月才刚发布的 22.04,真是尴尬呀。cron 直接使用系统账户作为发件人 root@gitlab,直接被邮件服务器退信了,不能发邮件。
gitlab@example.com: host smtp.qiye.aliyun.com[59.82.14.215] said: 500 Error:
bad syntax (in reply to MAIL FROM command)
当然如果每个任务通过重定向到 mail 客户端也可以发信,不过不能像在 CentOS 中那样在开头指定收发信人了。搜索了一番,可以安装 cronie,它是 CentOS 等发行版系统选择的 cron 实现程序。
卸载掉 cron,安装 cronie
cronie 下载地址:https://github.com/cronie-crond/cronie/releases
下载后编译:
./configure --prefix= #注意为空
make
make install
安装服务:
vim /usr/lib/systemd/system/crond.service
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target
[Service]
EnvironmentFile=/etc/crond.sysconfig
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
从程序根目录拷贝 crond.sysconfig 到 /etc
systemctl enable crond.service
systemctl start crond
OK,又可以像在 CentOS 中那样用 cron 的 MAILFROM 了。
后记:
发现与 at 的目录结构有冲突(都混在 /var/spool/cron/ 中,而 Ubuntu 自带的 cron 文件夹是在 /var/spool/cron/crontabs/),所以还是换成了系统原装的 cron。
暂时就不用 crontab 自带的发信功能了,改用 ssmtp:
删除 postfix
apt install ssmtp
ssmtp 也提供了 sendmail 供 cron 使用。
配置:
vim /etc/ssmtp/ssmtp.conf
mailhub=smtp.qiye.aliyun.com:465
AuthUser=gitlab@example.com
AuthPass=xxx
AuthMethod=LOGIN
UseTLS=YES
FromLineOverride=NO
#Debug=YES
vim /etc/ssmtp/revaliases
root:gitlab@example.com:smtp.qiye.aliyun.com:465
|