可通过四种方式实现服务器重启后宝塔自动邮件通知:一、用rc.local调用宝塔邮件API;二、通过systemd服务监听reboot.target;三、利用宝塔计划任务结合uptime判断;四、借助Webhook由外部服务转发邮件。

如果您希望在服务器重启后,宝塔面板能自动发送邮件通知您,需借助系统级开机脚本与宝塔内置邮件功能或第三方邮件工具配合实现。以下是几种可行的操作方式:
一、使用系统级开机脚本调用宝塔邮件API
该方法通过在系统启动时执行一段脚本,触发宝塔面板的邮件发送接口(需宝塔专业版支持邮件API)。脚本需具备网络就绪判断能力,避免在邮件服务未启动前调用失败。
1、登录服务器,编辑开机自启脚本:sudo nano /etc/rc.local。
2、在 exit 0 前插入以下内容(请替换为您的实际参数):
3、添加延迟与网络检测逻辑:sleep 60 && ping -c 1 www.baidu.com && curl -X POST "http://127.0.0.1:8888/mail/send" -H "Authorization: Bearer YOUR_API_TOKEN" -d 'to=admin@example.com' -d 'subject=服务器已重启' -d 'content=时间:$(date)'。
4、赋予执行权限:sudo chmod +x /etc/rc.local。
5、确认宝塔面板已开启API并生成有效令牌,且邮件配置已在面板【网站】→【邮箱】中完成测试。
二、利用systemd服务监听reboot.target事件
该方法更符合现代Linux系统规范,通过定义一个systemd服务,在系统进入reboot.target阶段后触发邮件发送,避免依赖rc.local兼容性问题。
1、创建服务文件:sudo nano /etc/systemd/system/reboot-notify.service。
2、写入以下内容(注意路径与用户需匹配实际环境):
3、启用服务:sudo systemctl enable reboot-notify.service。
4、服务单元中需调用一个独立Shell脚本(如 /root/send-reboot-mail.sh),该脚本内使用 echo "服务器于 $(date) 重启" | mail -s "【宝塔通知】服务器重启" admin@example.com 发送邮件。
5、确保系统已安装并配置好mailutils或ssmtp等基础邮件工具,且可通过命令行成功发信。
三、通过宝塔计划任务模拟“重启后触发”
宝塔本身不提供重启事件钩子,但可利用系统时间特征(如启动后首分钟内运行)模拟触发条件。该方案无需修改系统级配置,适合无root权限或受限环境。
1、登录宝塔面板,进入【计划任务】→【添加计划任务】。
2、任务类型选择 Shell脚本,执行周期设为 每分钟。
3、脚本内容加入启动时间判据:if [ $(cut -d. -f1 /proc/uptime) -lt 120 ]; then echo "服务器于$(date)" | mail -s "宝塔:重启告警" admin@example.com; exit 0; fi。
4、保存后手动执行一次任务验证脚本语法及邮件通路。
5、注意该任务会在每次重启后约2分钟内仅发送一次邮件,后续分钟检查将因uptime超限而跳过。
四、使用宝塔Webhook结合外部邮件服务
若宝塔已启用Webhook功能(专业版),可将重启事件映射为HTTP请求,由外部轻量服务(如Python Flask微服务)接收后转发邮件,实现解耦与日志留存。
1、部署一个监听端口的简易HTTP服务(如运行在127.0.0.1:8080),能接收POST请求并调用SMTP发送邮件。
2、在 /etc/rc.local 中添加:curl -X POST http://127.0.0.1:8080/reboot -d '{"server":"$(hostname)","time":"$(date)"}' &。
3、确保该服务开机自启且绑定在lo接口,不对外暴露。
4、宝塔面板中无需额外配置,所有逻辑由外部服务承载,规避宝塔API调用时机不可控问题。
5、验证时可手动执行curl命令,检查外部服务日志是否收到请求并发出邮件。










