我正在编写一个Icinga插件来检查我们与第三方签订合同的smtp服务器是否被列入黑名单。
该服务使用未知数量的smtp中继。我需要下载标题的所有“已接收”部分,并解析它们以获取SMTP中继的不同IP。
我正在尝试使用Mail::IMAPClient
,我可以对帐户执行一些操作(登录,选择文件夹,搜索消息等),但我还没有找到获取整个标头的方法我需要它的部分。
如果需要,我不介意使用其他模块。
答案 0 :(得分:2)
您可以尝试使用the parse_headers
function。根据文档中的示例,您可以像这样使用它:
$hashref = $imap->parse_headers(1,"Date","Received","Subject","To");
然后你得到一个哈希引用,它将字段名称映射到值数组的引用,如下所示:
$hashref = {
"Date" => [ "Thu, 09 Sep 1999 09:49:04 -0400" ] ,
"Received" => [ q/
from mailhub ([111.11.111.111]) by mailhost.bigco.com
(Netscape Messaging Server 3.6) with ESMTP id AAA527D for
<bigshot@bigco.com>; Fri, 18 Jun 1999 16:29:07 +0000
/, q/
from directory-daemon by mailhub.bigco.com (PMDF V5.2-31 #38473)
id <0FDJ0010174HF7@mailhub.bigco.com> for bigshot@bigco.com
(ORCPT rfc822;big.shot@bigco.com); Fri, 18 Jun 1999 16:29:05 +0000 (GMT)
/, q/
from someplace ([999.9.99.99]) by smtp-relay.bigco.com (PMDF V5.2-31 #38473)
with ESMTP id <0FDJ0000P74H0W@smtp-relay.bigco.com> for big.shot@bigco.com; Fri,
18 Jun 1999 16:29:05 +0000 (GMT)
/] ,
"Subject" => [ qw/ Help! I've fallen and I can't get up!/ ] ,
"To" => [ "Big Shot <big.shot@bigco.com> ] ,
};
这应该为您提供单个数组中的所有Received
标题。