sendEmail 是一个轻量级, 命令行的 SMTP 邮件客户端. 如果你需要使用命令行发送邮件, 那么 sendEmail 是非常完美的选择: 使用简单并且功能强大. 这个被设计用在 PHP,bash
perl 和 web 站点使用.
请注意, 不是 sendmail. 我第一次看到这个名字, 直接 yum install -y sendmail 了
然后下面就蒙圈了.
下载软件
wget
创建目录
mkdir /usr/local/bin
解压软件
tar zxf sendEmail-v1.56.tar.gz -C /usr/src
进入目录
cd /usr/src/sendEmail-v1.56
复制文件, 并设置权限
- cp -a sendEmail /usr/local/bin
- chmod +x /usr/local/bin/sendEmail
安装组件
yum install perl.NET-SSLeay perl-IO-Socket-SSL -y
进入 zabbix 自定义的指定目录
可以查看 zabbix_server.conf 配置文件 AlertScriptsPath 变量是如何定义的.
cd /usr/local/zabbix/alertscripts/
编辑脚本
VIM sendEmail.sh
内容如下:
- #!/bin/bash
- #
- to=$1
- subject=$2
- body=$3
- /usr/local/bin/sendEmail -f [email protected] -t "$to" -s smtp.163.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp xxxxxxx -m "$body" -o tls=no
说明:
- /usr/local/bin/sendEmail
- -f [email protected]
- -t [email protected]
- -s smtp.163.com
- -u "邮件主题"
- -o message-content-type=HTML
- -o message-charset=utf-8
- -xu [email protected]
- -xp wudang123
- -m "邮件内容"
- -o tls=no
上面有 4 个地方我用紫色加粗字体表示了
[email protected] 表示发件人邮箱
smtp.exmail.qq.com 表示邮箱的 smtp 服务器, 因为我是用的腾讯企业邮箱. 如果是其他邮箱, 需要修改
password 表示发件人邮箱密码
编辑完成后, 给脚本权限
- chmod +x sendEmail.sh
- chown zabbix.zabbix sendEmail.sh
手动执行一次脚本, 后面的参数分别对应接收人, 主题, 内容
./sendEmail.sh [email protected] test 123br/>登录 [email protected] 的账户, 查看邮件是否可以收到
如果脚本执行没有报错, 收不到邮件的话, 请检查 Linux 网络问题, iptables,selinux 是否关闭.
进入 zabbix 管理页面
点击管理 ->报警媒介类型 点击最右边的创建媒体类型
输入脚本名称, 类型选择脚本
添加以下 3 个参数, 分别对应 sendEmail.sh 脚本需要的 3 个参数: 收件人地址, 主题, 详细内容
- {
- ALERT.SENDTO
- }
- {
- ALERT.SUBJECT
- }
- {
- ALERT.MESSAGE
- }
解释: 很多人安装 zabbix 3.0 之后, 写的脚本一直发信不成功, 手动执行时可以的.
那是因为 zabbix3.0 之后, 可以自定义参数了. 所以不写参数, 它是不会传参数的.
在 2.x 版本不存在这个问题, 默认会传 3 个参数.
点击 Admin 用户
点击添加
选择 sendEmail.sh 脚本, 输入收件人的邮箱地址
点击用户群组, 点击 zabbix administrator 后面的调用模式, 点击一下, 就启用了
点权限 ->添加
选择所有
点击更新
点击配置 ->动作 点击默认的动作
点击动作 ->编辑
修改持续时间为 60 秒
修改步骤为 3, 表示触发 3 次动作
选择用户 Admin
选择仅送到 sendEmail.sh
点击更新
解释: 默认的步骤是 1-1, 也即是从 1 开始到 1 结束. 一旦故障发生, 就是执行 sendEmail.sh 脚本发生报警邮件给 Admin 用户和 zabbix administrator 组.
假如故障持续了 1 个小时, 它也只发送一次. 如果改成 1-0,0 是表示不限制. 无限发送
间隔就是默认持续时间 60 秒. 那么一个小时, 就会发送 60 封邮件.
如果需要短信报警的话, 可以再创建一条新的动作, 选择短信脚本.
下面开始测试邮件报警
等待几分钟, 就会收到邮件报警了
点击报表 ->动作日志 可以看到触发动作的次数. 只会有 3 次, 除非 test 主机状态改变, 也就是正常的时候, 会触发一次, 否则不会再触发.
点击 配置 ->动作 ->Report problems to Zabbix administrators
在默认信息每一行后面添加 < br/>
列如:
故障消息 < br/>
主机:{HOSTNAME}<br/>
IP:{IPADDRESS}<br/>
监控项:{ITEM.NAME}<br/>
触发器:{TRIGGER.NAME}<br/>
键值:{ITEM.KEY}:{ITEM.VALUE}<br/>
时间:{DATE} {TIME}<br/>
因为我用 sendEmail.sh 脚本指定格式是 HTML, 所以换行就是 < br/>
点击更新
再添加几台主机
就这样, 邮件报警就写完了
sendEmail 发送邮件
概述
最近学习 zabbix, 想触发告警时发送邮件, 准备使用 sendEmail 发送邮件, 原以为很简单的事情, 还是踩了一些坑, 记录如下.
Step 1 安装 sendEmail
sendEmail 官网
安装方法:
- wget
- tar -xzvf sendEmail-v1.56.tar.gz
- cd sendEmail-v1.56/
- cp sendEmail /usr/local/bin/
- wget
- tar -xzvf sendEmail-v1.56.tar.gz
- cd sendEmail-v1.56/
- cp sendEmail /usr/local/bin/
Step 2 发送邮件
发送 qq 邮件:
首先找到 qq 邮箱 smtp 设置处, 拿到授权码:
登录 qq 邮箱, 设置, 找到如下界面
关闭再开启, 可获得授权码.
发送:
- /usr/local/bin/sendEmail -f [email protected] \
- -t [email protected] \
- -s smtp.qq.com \
- -u "邮件主题" \
- -o message-content-type=HTML \
- -o message-charset=utf-8 \
- -xu [email protected] \
- -xp pepltaflcvuniied \
- -m "邮件内容"
- sendEmail[1925]: ERROR => Timeout while reading from smtp.qq.com:25 There was no response after 60 seconds.
-f [email protected] 发件人邮箱
-t [email protected] 收件人邮箱
-s smtp.qq.com 发件人邮箱的 smtp 服务器
-u "邮件标题" 邮件的标题
-o message-content-type=HTML 邮件内容的格式, HTML 表示它是 HTML 格式
-o message-charset=utf8 邮件内容编码
-xu [email protected] 发件人邮箱的用户名
-xp pepltaflcvuniied 发件人邮箱 smtp 授权码
-m "邮件内容" 邮件的具体内容
Timeout? 咋回事呢, 试用 465 和 587 端口, 一样不行:
- /usr/local/bin/sendEmail -f [email protected] \
- -t [email protected] \
- -s smtp.qq.com:465 \
- -u "邮件主题" \
- -o message-content-type=HTML \
- -o message-charset=utf-8 \
- -xu [email protected] \
- -xp pepltaflcvuniied \
- -m "邮件内容"
- sendEmail[3950]: ERROR => Timeout while reading from smtp.qq.com:465 There was no response after 60 seconds.
意思是邮件不让发了呗? 不纠结了, 换 163 试试.
发送 163 邮件
找到 163 邮箱, 设置, 找到如下图:
开启 smtp 服务, 然后找到客户端授权密码:
1632.PNG
关闭再开启, 可自己设置授权密码.
发送:
- /usr/local/bin/sendEmail -f [email protected] \
- -t [email protected] \
- -s smtp.163.com \
- -u "邮件主题" \
- -o message-content-type=HTML \
- -o message-charset=utf-8 \
- -xu [email protected] \
- -xp cloudtest123 \
- -m "邮件内容"
- sendEmail[4753]: invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 575.
又怎么了? 网上查了下, 是 perl 版本问题, 添加 -o tls=no 参数即可解决, 参考 https://www.cnblogs.com/fjping0606/p/6774348.html
/usr/local/bin/sendEmail -f [email protected] \ -t [email protected] \ -s smtp.163.com \ -u "邮件主题" \ -o message-content-type=HTML \ -o message-charset=utf-8 \ -xu [email protected] \ -xp cloudtest123 \ -m "邮件内容" \ -o tls=no sendEmail[5120]: Email was sent successfully!
查看邮箱验证:
大功告成, 下面可以愉快地配置 zabbix 邮件告警了!
来源: http://www.bubuko.com/infodetail-3144449.html