Nagios check_email_delivery插件无法解析cnames

时间:2013-12-24 21:09:31

标签: perl nagios

我正在使用Nagios插件check_email_delivery来监控电子邮件,并在某些情况下检查软件状态。我们现在将所有内部邮件服务器移动到Office 365,并发现此命令:

./check_imap_receive_epn -H outlook.office365.com -U user@example.com -P password --ssl -s SUBJECT -s $ARG1$ -w 1200 -c 1800

结果:

IMAP RECEIVE CRITICAL - Could not connect to outlook.office365.com port 993: IO::Socket::INET6 configuration failederror:00000000:lib(0):func(0):reason(0) at ./check_imap_receive_epn line 93.

无论其!将cname解析为IP地址似乎可行。例如:

./check_imap_receive_epn -H 157.56.239.201 -U user@example.com -P password --ssl -s SUBJECT -s $ARG1$ -w 1200 -c 1800

结果:

IMAP RECEIVE OK - 5 seconds, 1 found, 1 deleted

我认为问题是由此引起的:

my $socket = IO::Socket::SSL->new(PeerAddr=>"$imap_server:$imap_port", %ssl_args);

$imap_server未正确解析的位置。有什么建议? >。<

1 个答案:

答案 0 :(得分:1)

因为安装了IO :: Socket :: INET6 IO :: Socket :: SSL将使用它作为基类。 IO :: Socket :: INET6首先尝试获取IPv6地址(例如DNS AAAA记录),而ping等通常只尝试IPv4(通常有ping6用于IPv6)。因此,如果您的IPv6设置中断,您可能无法通过仅使用IPv4的工具实现它。请检查:

  • 挖掘outlook.office365.com AAAA - 这应该给你IPv6地址。 如果您没有IPv6,它应该根本不提供任何记录和NOERROR,但是一些破解的解析器会返回NXDOMAIN
  • 如果您获得IPv6地址,请尝试连接到该地址,例如 perl -MIO :: Socket :: INET6 -e'IO :: Socket :: INET6-> new(“[2a01:111:f400:9800 :: 6]:993”)或死$!' 如果您收到错误,您的IPv6设置会被破坏,例如即使您无法通过IPv6访问主机,解析器也会返回IPv6记录