1、安装ssmtp服务

sudo apt-get install ssmtp mailutils

发送邮件需要有mailutils基础库,ssmtp库可以进一步选择发送人,收件人,邮件主题,邮件内容等。

2、开通邮箱smtp服务

需要开通发件人邮箱的smtp服务,无论是qq邮箱还是163邮箱等都可以直接开通,我选择的是qq邮箱,具体步骤可以参考:

le55kcrn.png

设置完之后呢,就要把生成的授权码作为邮箱的password

3、配置ssmtp

3.1、设置ubuntu发件人信息

首先更改文件 /etc/ssmtp/ssmtp.conf ,编辑器选择自己常用的,我用的是vim

sudo vim /etc/ssmtp/ssmtp.conf

进入文件后默认显示如下:

lqvoquj7.png

在文件中加入如下内容:

UseTLS=Yes
root=*********@qq.com
AuthUser=*********
AuthPass=******************

mailhub 修改为qq邮箱的smtp服务器和端口,smtp.qq.com:465,如果发件人使用的是163邮箱,则163邮箱的服务器和端口自行百度,可能是 smtp.163.com:465

hostname 保持不变;

root 后的邮箱为发件人邮箱, AuthUser 为发件人账号, AuthPass 为之前申请所得的smtp授权码。

保存退出( :wq

3.2、配置ssmtp用户使用权限

即配置允许哪个ubuntu用户可以使用发件人邮箱发送邮件。

更改文件 /etc/ssmtp/revaliases (我默认使用root):

sudo vim /etc/ssmtp/revaliases

在下方添加如下:

root:xxxxxx@qq.com:smtp.qq.com:465
rj01:xxxxxx@qq.com:smtp.qq.com:465

即格式为:用户:邮箱:smtp.qq.com:465,163邮箱更改对应位置即可。

这样配置即允许root用户和指定用户(如我的为rj01)使用ssmtp服务发送邮件。

至此ssmtp配置完成。

3.3、简单测试

echo "hello world" | mail -s "title" xxxxxx@qq.com

输入上述命令,后面邮箱为收件人邮箱,可以任意指定,收到邮件,测试成功。

4、crontab 命令定时循环执行检测脚本发送邮件

4.1、编写Shell脚本

#!/bin/bash
dirfile='/home/ip_change'
new_ip=`curl icanhazip.com`    #获取新公网ip
mail_user=xxxxxx@qq.com    #接收收邮件邮箱
mail_subject="IP已经发生变化,及时处理"    #邮件主题
log="/var/log/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获取失败,检查'curl icanhazip.com' " >> $log
    exit 1
fi
old_ip=`cat $dirfile`     #查看旧ip
 
# 判断两个IP是否相等 发邮件
if [ "$new_ip" = "$old_ip" ]; then
  echo "$datetime IP正常 - true " >> $log
else
  echo  $new_ip > $dirfile
  echo "IP已经发生变化, 新IP: $new_ip   旧IP: $old_ip  !!! " | mail -s "$mail_subject" "$mail_user"
  echo "$datetime IP已经发生变化 - error 新IP :$new_ip   旧IP: $old_ip" >> $log
fi

4.2、crontab 定时循环执行脚本

在之前配置的用户权限中允许的用户下,输入如下命令:

crontab -e

添加如下命令(路径需修改成自己编写的shell脚本路径):

*/10 * * * * /bin/bash /data/shell/getIp/getIp.sh

至此,每隔10分钟,自动获取最新公网ip,如果有更新,发送到目标邮箱。

le55ipwq.png

最后修改:2024 年 01 月 02 日
如果觉得我的文章对你有用,请随意赞赏o(* ̄▽ ̄*)ブ