警报邮件是从 gmail id 配置的,以避免垃圾邮件追赶。尝试手动使用“邮件”命令时,Nagios 警报邮件工作正常。这显然意味着,nagios 现在能够向公司邮箱以及外部域发送邮件。但它根本没有发送任何邮件。同时,我可以看到它在检测到任何警报时也试图启动邮件警报...!
从 'nagios.log' 中可以清楚看出
[1441281845] 服务通知:nagiosadmin;bbnlbwmon;HTTPS 响应时间;严重;通过电子邮件通知服务;连接被拒绝[1441281850] 服务通知:nagiosadmin;arkr-dc-sw1;端口 6 连接到跨媒体,访问 vlan 103;严重;通过电子邮件通知服务;SNMP 严重 -向下(2)
但是,邮件日志仍然会抛出一个错误,导致 Nagios 无法发送警报邮件。错误内容为“procmail -a "$EXTENSION"”
请检查“mail.log”
9 月 3 日 15:46:01 nagios postfix/local[2835]: 66D69360533:to=,relay=local,delay=71029,delays=71029/0/0/0.04,dsn=2.0.0,status=sent (已传送至命令:procmail -a $EXTENSION”)
9 月 3 日 15:46:03 nagios postfix/local[2759]: 6924A360548:to=,relay=local,delay=77269,delays=77261/0/0/8.1,dsn=2.0.0,status=sent(已传送至命令:procmail -a“$EXTENSION”)
什么可能是“状态=已发送(传送至命令:procmail -a“$EXTENSION”)”错误..?
另一件不寻常的事情是,手动发送电子邮件时,它不会写入 /var/log/mail.log 中。
请更新。
答案1
您postfix
在本地将邮件发送至procmail
。这是postfix
状态status=sent
,但您的procmail
配置不正确或存在一些错误,无法发送邮件。
做:
sudo dpkg-reconfigure postfix
1) 选择“带有智能主机的互联网”(推荐)以使用另一个邮件服务器来中继邮件或“互联网站点”
2)输入系统邮件名称(node1.foo.tld)
3)输入 SMTP 中继主机(mail.foo.tld)
4) 根和邮件管理员邮件收件人([电子邮件保护])
5)其他接受邮件的目的地(node1.foo.tld、localhost.foo.tld、localhost)
6)强制同步更新邮件队列(否)
7)本地网络(127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128)
8)使用 procmail 进行本地传送(是)
9) 邮箱大小限制(字节) (0)
10)本地地址扩展字符(+)
11)使用的互联网协议(IPv4 是安全的选择)
通过这种方式进行配置很简单,并且足以从 nagios 向任何地方发送通知。
编辑2
sendmail
配置为智能主机
宏SMART_HOST
允许您指定应中继所有您无法直接传递的外发邮件的主机,以及用于与其通信的邮件传输协议。
打开你的配置文件:
sudo nano /etc/mail/sendmail.mc
附加或修改宏,内容如下:
define(`SMART_HOST',`smtp.blabla.com')
替换smtp.blabla.com
为您的实际 smtp 服务器地址。
如果行包含单词,dnl 删除该 dnl 单词。
使用命令重新生成新的sendmail.cf
配置文件m4
:
sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
重新启动sendmail服务