环境:局域网、ubuntu20.4、宝塔
一、安装服务环境
1、安装ssmtp服务
sudo apt-get install ssmtp mailutils
发送邮件需要有mailutils基础库,ssmtp库可以进一步选择发送人,收件人,邮件主题,邮件内容等。
2、开通邮箱smtp服务
需要开通发件人邮箱的smtp服务,无论是qq邮箱还是163邮箱等都可以直接开通,我选择的是qq邮箱,开通后即可获得邮箱账号的smtp的授权码,为一串英文乱码。
3、配置ssmtp
3.1、设置ubuntu发件人信息
首先更改文件/etc/ssmtp/ssmtp.conf,编辑器选择自己常用的,我用的是vim
sudo vim /etc/ssmtp/ssmtp.conf
进入文件后默认显示如下:
即mailhub修改为qq邮箱的smtp服务器和端口,smtp.qq.com:465,如果发件人使用的是163邮箱,则163邮箱的服务器和端口自行百度,可能是smtp.163.com:465;
hostname保持不变;
接着输入:
UseTLS=Yes root=*********@qq.com AuthUser=********* AuthPass=******************
root后的邮箱为发件人邮箱,AuthUser后为发件人账号,即邮箱去掉后缀(例如@qq.com),AuthPass后为之前申请所得的smtp授权码。
保存退出(:wq)
3.2、配置ssmtp用户使用权限
即配置允许哪个ubuntu用户可以使用发件人邮箱发送邮件。
更改文件/etc/ssmtp/revaliases:
sudo vim /etc/ssmtp/revaliases
打开默认为:
在下方添加如下:
root:*********@qq.com:smtp.qq.com:465 lab532:*********@qq.com:smtp.qq.com:465
即格式为:用户:邮箱:smtp.qq.com:465,163邮箱更改对应位置即可。
这样配置即允许root用户和指定用户(如我的为lab532)使用ssmtp服务发送邮件。
ssmtp配置完成。
3.3、简单测试
echo "hello world" | mail -s "title" *********@163.com
输入上述命令,后面邮箱为收件人邮箱,可以任意指定,收到邮件,测试成功。
二、设置脚本发送
编辑脚本
root用户运行报错
权限问题,需要在非管理员权限下运行
以ubuntu20.4+宝塔环境为例
默认管理员为www,首先在宝塔面板的定时任务里添加
sudo -u www /data/wwwroot/ip/ip.sh
然后需要在执行文件里添加sudo -u www
#!/bin/bash sudo -u www dirfile='/data/wwwroot/ip/ip_change' new_ip=`curl https://saas.1-c.cn/ip/` #获取新公网ip mail_user=2533059222@qq.com #接收收邮件邮箱 mail_subject="新IP:$new_ip,及时处理!" #邮件主题 log="/data/wwwroot/ip/tool.log" datetime=`date '+%Y-%m-%d %H:%M:%S'` #判断文件是否存在 if [ ! -f "$dirfile" ]; then touch "$file" echo "1.1.1.1" > $dirfile fi #判断new_ip是否获取 if [ ! -n "$new_ip" ]; then echo "$datetime 公网IP获取失败,检查'https://saas.1-c.cn/ip/' " >> $log exit 1 fi old_ip=`cat $dirfile` #查看旧ip # 判断两个IP是否相等 发邮件 if [ "$new_ip" = "$old_ip" ]; then echo "$datetime IP正常 - true " #echo "$datetime IP正常 - true " >> $log else echo $new_ip > $dirfile echo "IP已经发生变化!<br/>新IP:$new_ip <br/>旧IP:$old_ip " | mail -s "$mail_subject" "$mail_user" echo "$datetime IP已经发生变化 - error 新IP:$new_ip 旧IP:$old_ip" >> $log fi
接设置好后如果公网ip变化就会发送邮件