Systemd 定时器教程:http://www.ruanyifeng.com/blog/2018/03/systemd-timer.html
一、定时任务
Systemd 定时任务:每小时发送一封电子邮件
二、邮件脚本
mail.sh 内容
#!/usr/bin/env bash
echo "This is the mail test" | /usr/bin/mail -s "Hi Tinywan" 756684177@qq.com
执行脚本
1、提示
Please install an MTA on this system if you want to use sendmail!
2、安装SSMTP服务
sudo apt-get install ssmtp
3、使用SSMTP替代sendmail/postfix
一般情况下,很多 Linux 发行版都使用 Sendmail 或 Postfix 作为默认了电子邮件系统,我们之所以使用 SSMTP 就是为了使用外部 SMTP 中继,因此要将 SSMTP 配置为系统默认,首先就得停用 sendmail 或 postfix 服务。
systemctl stop sendmail
systemctl stop postfix
如果你使用较早版本 Linux,可以使用如下命令停用服务:
service sendmail stop
service postfix stop
注意:还需停止 sendmail 或 postfix 服务随系统启动哦,最好还是直接卸载掉吧。
4、配置SSMTP使用 QQ 邮件地址
使用 vim 或你喜欢的任意编辑器对 /etc/ssmtp/ssmtp.conf 文件进行编辑,我们以 QQ 的 SMTP 服务器为例,如果你使用其它 SMTP 请自行按服务商的官方文档进行修改:
www=1722318623@qq.com
mailhub=smtp.qq.com:587
AuthUser=1722318623@qq.com
AuthPass=xxxxxxxxxxxxxxxxx
UseTLS=YES
UseSTARTTLS=YES
FromLineOverride=YES
RewriteDomain:qq.com
注意:以上红色为你使用QQ邮件服务器申请的邮件信息,请配置为你的邮件信息
配置文件修改并保存好之后我们就可以用上 QQ 提供的可靠邮件服务了,现在先用如下命令先发个测试邮件来看看:
echo "This is a test e-mail" | mail -s "Test Email" overcome.wan@gmail.com
发送测试邮件时遇到类似如下提示:
sendmail: Cannot open mail:25
那是因为 ssmtp 默认会尝试使用标准的 SMTP 25 端口去连接邮件服务器,如果你所使用的 SMTP 中继像 Gmail 或 QQ 这样采用了 TLS 加密的非标准端口,还需要到 /etc/ssmtp/revaliases 配置文件中对发件人、服务器地址和端口进行指明:
www:1722318623@qq.com:smtp.qq.com:587
mainuser:1722318623@qq.com:smtp.qq.com:587
配置好后继续测试
echo "This is a test e-mail" | mail -s "Test Email" 756684177@qq.com
邮件提示信息
至此,邮件发送配置完成
三、Service 单元
新建 Service 非常简单,就是在/usr/lib/systemd/system
目录里面新建一个文件,比如:tinywan-timer.service
文件,你可以写入下面的内容。
小知识:
Linux下使用vi新建文件保存文件时遇到错误:E212: Can‘t open file for writing
以上问题是由于权限问题导致的,解决方法有以下思路:
- 1、使用root进行登录,然后再操作。
- 2、在使用命令时,前面加sudo。
- 3、如果是多级文件夹的文件时,由于这个文件夹没有创建,所以要先创建这个文件夹,再来操作这个文件。
参考
1、SSMTP—让Linux系统从Office 365发送邮件
2、