Linux 命令详解(十二)Systemd 入门教程:使用定时器发送邮件(mail)

Systemd 定时器教程:http://www.ruanyifeng.com/blog/2018/03/systemd-timer.html

一、定时任务

Systemd 定时任务:每小时发送一封电子邮件

二、邮件脚本

mail.sh 内容

1
2
3
#!/usr/bin/env bash
 
echo "This is the mail test" | /usr/bin/mail -s "Hi Tinywan" 756684177@qq.com

 执行脚本

1、提示

1
Please install an MTA on this system if you want to use sendmail!

2、安装SSMTP服务  

1
sudo apt-get install ssmtp

3、使用SSMTP替代sendmail/postfix 

一般情况下,很多 Linux 发行版都使用 Sendmail 或 Postfix 作为默认了电子邮件系统,我们之所以使用 SSMTP 就是为了使用外部 SMTP 中继,因此要将 SSMTP 配置为系统默认,首先就得停用 sendmail 或 postfix 服务。

1
2
systemctl stop sendmail
systemctl stop postfix

如果你使用较早版本 Linux,可以使用如下命令停用服务:

1
2
service sendmail stop
service postfix stop

注意:还需停止 sendmail 或 postfix 服务随系统启动哦,最好还是直接卸载掉吧。

4、配置SSMTP使用 QQ 邮件地址

使用 vim 或你喜欢的任意编辑器对 /etc/ssmtp/ssmtp.conf 文件进行编辑,我们以 QQ 的 SMTP 服务器为例,如果你使用其它 SMTP 请自行按服务商的官方文档进行修改: 

1
2
3
4
5
6
7
8
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 提供的可靠邮件服务了,现在先用如下命令先发个测试邮件来看看: 

1
echo "This is a test e-mail" | mail -s "Test Email" overcome.wan@gmail.com

发送测试邮件时遇到类似如下提示:

1
sendmail: Cannot open mail:25

那是因为 ssmtp 默认会尝试使用标准的 SMTP 25 端口去连接邮件服务器,如果你所使用的 SMTP 中继像 Gmail 或 QQ 这样采用了 TLS 加密的非标准端口,还需要到 /etc/ssmtp/revaliases 配置文件中对发件人、服务器地址和端口进行指明:

1
2
www:1722318623@qq.com:smtp.qq.com:587
mainuser:1722318623@qq.com:smtp.qq.com:587

 配置好后继续测试

1
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、

posted @   Tinywan  阅读(2463)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2017-03-30 PowerEdge R430 机架式服务器安装( Ubuntu server 14.04.1 、PHP5.5.9、PHP-redis2.8、Phalcon3.1)
点击右上角即可分享
微信分享提示