阡陌 发表于 2024-1-16 00:50:59

Ubuntu 20.04 的 Cron 不支持 MAILFROM



Ubuntu 20.04 的 Cron 竟然不支持 MAILFROM,而且查了一下,之前的版本据说也不支持,有人说 22.04 开始支持了。好吧,但是我的 R740 服务器不能正常安装这个月才刚发布的 22.04,真是尴尬呀。cron 直接使用系统账户作为发件人 <root@gitlab>,直接被邮件服务器退信了,不能发邮件。

><gitlab@example.com>: host smtp.qiye.aliyun.com 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


Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target


EnvironmentFile=/etc/crond.sysconfig
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=30s


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
```


页: [1]
查看完整版本: Ubuntu 20.04 的 Cron 不支持 MAILFROM