Linux 命令详解(十二)Systemd 入门教程:使用定时器发送邮件(mail)
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、
最新文章
- php:PHPExcel导出excel表格
- Linux环境变量的修改(永久,暂时)以及修改ls显示的时间格式
- POJ C程序设计进阶 编程题#3:运算符判定
- [Cocos2d-JS] 安卓机器的几个按钮
- php.ini的配置
- eclipse中如何创建maven项目
- 使用jsonp实现ajax跨域请求
- Description:一根高筋拉面,中间切一刀,可以得到2根面条。如果先对折1次,中间切一刀,可以得到3根面条。如果连续对折2次,中间切一刀,可以得到5根面条。Input:你的程序需要解决的问题是,输入连续对折的次数。NOutput输出中间切一刀,可以得到多少根面条。
- react-native 入门资源合集
- HDU 1787 GCD Again
- .NET中文乱码解决方案
- easelJS 初始入门
- vim + DoxygenToolkit.vim环境搭建
- Android中Handler使用浅析
- 极化码的matlab仿真(1)——参数设置
- OxyPlot Controller OxyPlot控制器
- 2018-10-08 Java源码英翻中进展-内测上线
- Linux常用的基础组件
- 网络之TCP握手总结
- 005.HAProxy+Keepalived高可用负载均衡
热门文章
- python学习日记(函数--装饰器)
- [loj6388] 「THUPC2018」赛艇 / Citing
- 【BZOJ1831】[AHOI2008]逆序对(动态规划)
- 【nginx】nginx配置文件结构,内置变量及参数调优
- poj2431(优先队列+贪心)
- 英语动画字母积木 Alphablocks 4季91集 自然拼读phonics 带字幕
- ONI无法启动: Uh oh! Unable to launch Neovim...
- 爬虫 写入文件时遇到gbk编码错误
- listview 样式 LVS_REPORT 与 LVS_EDITLABELS 编辑单元格时,当前行第一列内容不显示
- JAVA版本8u171与8u172的区别