t/00.Dmarc.t ................................. ok 1 - use Mail::DMARC; ok 2 - An object of class 'Mail::DMARC' isa 'Mail::DMARC' ok 3 - An object of class 'Mail::DMARC' isa 'Mail::DMARC' ok 4 - new, empty ok 5 - An object of class 'Mail::DMARC' isa 'Mail::DMARC' ok 6 - new, one shot ok 7 - new, individual accessors ok 8 - config file is initialized before assert_ok ok 9 - header_from, spam-example.com ok 10 - header_from, bar.com ok 11 - header_from, a.b, invalid header_from at t/00.Dmarc.t line 235. ok 12 - header_from, a@b.c, invalid header_from at t/00.Dmarc.t line 235. ok 13 - header_from, f*ct.org, invalid header_from at t/00.Dmarc.t line 235. ok 14 - header_from, spam-example.com ok 15 - source_ip, 0.0.0.0 ok 16 - source_ip, 1.1.1.1 ok 17 - source_ip, 255.255.255.255 ok 18 - envelope_to, example.com ok 19 - dkim, ARRAY(0x562a5dc33be8) ok 20 - spf, ARRAY(0x562a5ea17740) ok 21 - envelope_from, example.com ok 22 - neg, source_ip, 0.257.0.25 ok 23 - neg, source_ip, 255.255.255.256 ok 24 - neg, envelope_to, 3.a ok 25 - spf, hash set ok 26 - spf, hash set result ok 27 - spf, hashref set ok 28 - spf, hashref set, result ok 29 - spf, arrayref set ok 30 - spf, arrayref set result ok 31 - spf, arrayref set ok 32 - spf, arrayref set result ok 33 - spf, callback set ok 34 - callback not yet called ok 35 - spf, callback-derived result ok 36 - spf, callback-cached result ok 37 - callback exactly once ok 38 - spf, neg, Can't locate object method "blah" via package "Mail::DMARC::Report::Aggregate::Record::Auth_Results::SPF" at lib/Mail/DMARC/Report/Aggregate/Record/Auth_Results/SPF.pm line 51. ok 39 - dkim, hash set ok 40 - dkim, hash set result ok 41 - dkim, hashref set ok 42 - dkim, hashref set, result ok 43 - dkim, arrayref set ok 44 - dkim, arrayref set result ok 45 - dkim, arrayref set ok 46 - dkim, arrayref set result ok 47 - dkim, hash set 1 ok 48 - dkim, hash set 2 ok 49 - dkim, iterative hashes ok 50 - dkim, as Mail::DKIM::Verifier ok 51 - dkim, arrayref set ok 52 - callback not yet called ok 53 - dkim, callback-derived result ok 54 - dkim, callback-cached result ok 55 - callback exactly once ok 56 - dkim, neg, Can't locate object method "dom" via package "Mail::DMARC::Report::Aggregate::Record::Auth_Results::DKIM" at lib/Mail/DMARC/Report/Aggregate/Record/Auth_Results/DKIM.pm line 53. ok 57 - dkim, neg, invalid DKIM result at lib/Mail/DMARC.pm line 107. ok 58 - Zulu Day: Day Start ok 59 - Zulu Day: Day Middle ok 60 - Zulu Day: Day End ok 61 - Zulu Day: Day Next ok 62 - Report Window: Daily Start ok 63 - Report Window: Daily Middle ok 64 - Report Window: Daily End ok 65 - Report Window: Hourly First Start ok 66 - Report Window: Hourly First Middle ok 67 - Report Window: Hourly First End ok 68 - Report Window: Hourly Second Start ok 69 - Report Window: Hourly Second Middle ok 70 - Report Window: Hourly Second End ok 71 - Report Window: Irregular Interval ok 72 - Interval Limit: Below Limit ok 73 - Interval Limit: Lower Limit ok 74 - Interval Limit: Between Limits ok 75 - Interval Limit: Upper Limit ok 76 - Interval Limit: Above Limit ok 77 - Public Suffix: xn--55qx5d.cn ok 78 - Public Suffix: xn--zfr164b ok 79 - Public Suffix: com ok 80 - Public Suffix: examplebogusdomainname 1..80 ok t/01.Policy.t ................................ ok 1 - use Mail::DMARC::Policy; ok 2 - An object of class 'Mail::DMARC::Policy' isa 'Mail::DMARC::Policy' ok 3 - policy, version, neg ok 4 - policy, set ok 5 - policy, version, pos ok 6 - An object of class 'Mail::DMARC::Policy' isa 'Mail::DMARC::Policy' ok 7 - new, empty policy ok 8 - An object of class 'Mail::DMARC::Policy' isa 'Mail::DMARC::Policy' ok 9 - new, with args ok 10 - An object of class 'Mail::DMARC::Policy' isa 'Mail::DMARC::Policy' ok 11 - new, with args ok 12 - policy->is_valid_p, pos, none ok 13 - policy->is_valid_p, pos, reject ok 14 - policy->is_valid_p, pos, quarantine ok 15 - policy->is_valid_p, neg, other ok 16 - policy->is_valid_p, neg, gibberish ok 17 - policy->is_valid_p, neg, non-policy ok 18 - policy->is_valid_p, neg, words ok 19 - policy->is_valid_rf, pos, afrf ok 20 - policy->is_valid_rf, pos, iodef ok 21 - policy->is_valid_rf, neg, ffrf ok 22 - policy->is_valid_rf, neg, i0def ok 23 - policy->is_valid_rf, neg, report ok 24 - An object of class 'Mail::DMARC::Policy' isa 'Mail::DMARC::Policy' ok 25 - parse ok 26 - parse, warns of invalid DMARC record format ok 27 - parse, warns of invalid DMARC record format, with location ok 28 - An object of class 'Mail::DMARC::Policy' isa 'Mail::DMARC::Policy' ok 29 - parse ok 30 - STDERR yields parse warnings ok 31 - adkim, r ok 32 - adkim, s ok 33 - adkim, R ok 34 - adkim, S ok 35 - rua, http://example.com/pub/dmarc!30m ok 36 - rua, mailto:dmarc-feed@example.com!10m ok 37 - pct, 0 ok 38 - pct, 10 ok 39 - pct, 50 ok 40 - pct, 99 ok 41 - pct, 100 ok 42 - ruf, https://example.com/dmarc?report!1m ok 43 - aspf, r ok 44 - aspf, s ok 45 - aspf, R ok 46 - aspf, S ok 47 - rf, iodef ok 48 - rf, afrf ok 49 - rf, IODEF ok 50 - rf, AFRF ok 51 - ri, 0 ok 52 - ri, 1 ok 53 - ri, 1000 ok 54 - ri, 4294967295 ok 55 - v, DMARC1 ok 56 - v, dmarc1 ok 57 - fo, 0 ok 58 - fo, 1 ok 59 - fo, d ok 60 - fo, s ok 61 - fo, D ok 62 - fo, S ok 63 - fo, 0:d ok 64 - fo, 0:1:d:s ok 65 - p, none ok 66 - p, reject ok 67 - p, quarantine ok 68 - p, NONE ok 69 - p, REJEcT ok 70 - p, Quarantine ok 71 - sp, none ok 72 - sp, reject ok 73 - sp, quarantine ok 74 - sp, NoNe ok 75 - sp, REjEcT ok 76 - sp, QuarAntine ok 77 - neg, p, nonense ok 78 - neg, p, silly ok 79 - neg, p, example ok 80 - neg, fo, 00 ok 81 - neg, fo, 11 ok 82 - neg, fo, dd ok 83 - neg, fo, ss ok 84 - neg, sp, nones ok 85 - neg, sp, rejection ok 86 - neg, sp, quarrantine ok 87 - neg, ruf, mail:msimerson@cnap.org ok 88 - neg, pct, -1 ok 89 - neg, pct, f ok 90 - neg, pct, 101 ok 91 - neg, pct, 1.1 ok 92 - neg, pct, 1.0 ok 93 - neg, pct, 5.f1 ok 94 - neg, rua, ftp://example.com/pub ok 95 - neg, rua, torrent://piratebay.net/dmarc ok 96 - neg, adkim, relaxed ok 97 - neg, adkim, strict ok 98 - neg, ri, -1 ok 99 - neg, ri, a ok 100 - neg, ri, 4294967296 ok 101 - neg, v, DMARC2 ok 102 - neg, rf, iodef2 ok 103 - neg, rf, rfrf2 ok 104 - neg, rf, rfrf ok 105 - neg, aspf, relaxed ok 106 - neg, aspf, strict ok 107 - An object of class 'Mail::DMARC::Policy' isa 'Mail::DMARC::Policy' ok 108 - new, empty policy ok 109 - apply_defaults ok 110 - new, with defaults ok 111 - is_valid, missing version specifier at t/01.Policy.t line 213. ok 112 - is_valid, 1.4.1 meaningless, missing policy action (p=) at t/01.Policy.t line 217. ok 113 - is_valid, 1.4.3 extra backslashes ok 114 - is_valid, 1.4.4 unknown tag ok 115 - is_valid, 1.4.5 bogus p value, invalid policy action at t/01.Policy.t line 227. ok 116 - is_valid, 1.4.6 missing mailto ok 117 - is_valid, 1.4.2 smallest record ok 118 - is_valid, pos, w/defaults ok 119 - is_valid, neg, missing p, no rua ok 120 - is_valid, neg, missing p, invalid rua ok 121 - is_valid, pos, implicit p=none w/rua ok 122 - policy is valid: domain=accuquote.com;v=DMARC1;p=none;fo:0;adkim=r;aspf=r;sp=none;rua=mailto:accu_postmaster@accuquote.com ok 123 - policy is valid: domain=targetselect.net;v=DMARC1;p=none;rua=mailto:postmaster@targetselect.net;ruf=mailto:postmaster@targetselect.net;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 124 - policy is valid: domain=1105insight.com;v=DMARC1;p=none;rua=mailto:postmaster@1105insight.com;ruf=mailto:postmaster@1105insight.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 125 - policy is valid: domain=borsheims.net;v=DMARC1;p=none;rua=mailto:postmaster@borsheims.net;ruf=mailto:postmaster@borsheims.net;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 126 - policy is valid: domain=consumersilver.com;v=DMARC1;p=none;rua=mailto:postmaster@consumersilver.com;ruf=mailto:postmaster@consumersilver.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 127 - policy is valid: domain=coppermail-usa.com;v=DMARC1;p=none;rua=mailto:postmaster@coppermail-usa.com;ruf=mailto:postmaster@coppermail-usa.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 128 - policy is valid: domain=eglancesender.com;v=DMARC1;p=none;rua=mailto:postmaster@eglancesender.com;ruf=mailto:postmaster@eglancesender.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 129 - policy is valid: domain=egroupconsumer.com;v=DMARC1;p=none;rua=mailto:postmaster@egroupconsumer.com;ruf=mailto:postmaster@egroupconsumer.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 130 - policy is valid: domain=eselectsender.com;v=DMARC1;p=none;rua=mailto:postmaster@eselectsender.com;ruf=mailto:postmaster@eselectsender.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 131 - policy is valid: domain=filemail.com;v=DMARC1;p=none;rua=mailto:admin@filemail.com;ruf=mailto:admin@filemail.com;fo:0;adkim=r;aspf=r ok 132 - policy is valid: domain=fisherprograms.com;v=DMARC1;p=none;rua=mailto:postmaster@fisherprograms.com;ruf=mailto:postmaster@fisherprograms.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 133 - policy is valid: domain=mail-peninsula.com;v=DMARC1;p=none;rua=mailto:umesh@force24.co.uk;ruf=mailto:umesh@force24.co.uk;fo:0;adkim=r;aspf=r;pct=100;rf=afrf;ri=86000;sp=none ok 134 - policy is valid: domain=sendergroup.com;v=DMARC1;p=none;rua=mailto:postmaster@sendergroup.com;ruf=mailto:postmaster@sendergroup.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 135 - policy is valid: domain=targetselection.com;v=DMARC1;p=none;rua=mailto:postmaster@targetselection.com;ruf=mailto:postmaster@targetselection.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 136 - policy is valid: domain=trondheim-redcross.no;v=DMARC1;p=none;rua=mailto:postmaster@trondheim-redcross.no;ruf=mailto:johess@trondheim-redcross.no;fo:0;adkim=r;aspf=r;pct=100;rf=afrf;ri=86400;sp=none ok 137 - policy is valid: domain=vsender-2.com;v=DMARC1;p=none;rua=mailto:postmaster@vsender-2.com;ruf=mailto:postmaster@vsender-2.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 138 - policy is valid: domain=vsender-3.com;v=DMARC1;p=none;rua=mailto:postmaster@vsender-3.com;ruf=mailto:postmaster@vsender-3.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 139 - policy is valid: domain=wfyi.org;v=DMARC1;p=none;rua=mailto:dmarc1630@wfyi.org;ruf=mailto:dmarc1630@wfyi.org;fo:0;adkim=r;aspf=r;pct=100;rf=afrf;ri=86400;sp=none ok 140 - policy is valid: domain=wk1business.com;v=DMARC1;p=none;rua=mailto:postmaster@wk1business.com;ruf=mailto:postmaster@wk1business.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 141 - policy is valid: domain=teogenes.com.br;v=DMARC1;p=quarantine;rua=mailto:retorno@teogenes.com.br;fo:1:d;adkim=r;aspf=r;rf=afrf;sp=quarantine ok 142 - policy is valid: domain=wkcplatnium.com;v=DMARC1;p=none;rua=mailto:postmaster@wkcplatnium.com;ruf=mailto:postmaster@wkcplatnium.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 143 - policy is valid: domain=brightworksgroup.net;v=DMARC1;p=none;0;adkim=r;aspf=r ok 144 - policy is valid: domain=bronzemail-usa.com;v=DMARC1;p=none;rua=mailto:postmaster@bronzemail-usa.com;ruf=mailto:postmaster@bronzemail-usa.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 145 - policy is valid: domain=driveconsumer.com;v=DMARC1;p=none;rua=mailto:postmaster@driveconsumer.com;ruf=mailto:postmaster@driveconsumer.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 146 - policy is valid: domain=econnect1.com;v=DMARC1;p=none;rua=mailto:postmaster@econnect1.com;ruf=mailto:postmaster@econnect1.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 147 - policy is valid: domain=esender1.com;v=DMARC1;p=none;rua=mailto:postmaster@esender1.com;ruf=mailto:postmaster@esender1.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 148 - policy is valid: domain=esender3.com;v=DMARC1;p=none;rua=mailto:postmaster@esender3.com;ruf=mailto:postmaster@esender3.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 149 - policy is valid: domain=lns.com;v=DMARC1;p=none;rua=mailto:dmarc@lns.com;ruf=mailto:dmarc@lns.com;0;adkim=r;aspf=r;pct=100;rf=afrf;ri=86400;sp=none ok 150 - policy is valid: domain=my-dear-lady.com;v=DMARC1;p=none;rua=mailto:postmaster@my-dear-lady.com;ruf=mailto:postmaster@my-dear-lady.com;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 151 - policy is valid: domain=theluxurycloset.info;v=DMARC1;p=reject;adkim=s;aspf=r;rf=afrf;;pct=100 ok 152 - policy is valid: domain=newsletter.ironpony.net;v=DMARC1;p=none;rua=mailto:postmaster@newsletter.ironpony.net;ruf=mailto:postmaster@newsletter.ironpony.net;adkim=r;aspf=r;pct=100;rf:afrf;ri=86400;sp=none ok 153 - policy is valid: domain=cmnet.org;v=DMARC1;p=none;sp=none;rua=mailto:postmaster@cmnet.org!10m;;pct=100;ri=86400 ok 154 - policy is valid: domain=coachingcompass.com;v=DMARC1;p=quarantine;rua=mailto:dan@darau.com;ruf=mailto:dan@darau.com;1:d:s;adkim=r;aspf=r;rf=afrf;sp=quarantine ok 155 - policy is valid: domain=genetex.com;v=DMARC1;p=none;sp-none;rua=mailto:postmaster@genetex.com!1m;ruf=mailto:postmaster@genetex.com!1m;rf=afrf;pct=100;ri=86400 1..155 ok t/03.Base.t .................................. ok 1 - use Mail::DMARC::Base; ok 2 - An object of class 'Mail::DMARC::Base' isa 'Mail::DMARC::Base' ok 3 - An object of class 'Config::Tiny' isa 'Config::Tiny' ok 4 - An object of class 'Net::DNS::Resolver' isa 'Net::DNS::Resolver' ok 5 - invalid config file ok 6 - alternate config file ok 7 - any_inet_pton, 1.1.1.1 ok 8 - any_inet_ntop, 1.1.1.1 ok 9 - any_inet_ntop, 1.1.1.1 ok 10 - any_inet_pton, 10.0.1.1 ok 11 - any_inet_ntop, 10.0.1.1 ok 12 - any_inet_ntop, 10.0.1.1 ok 13 - any_inet_pton, 2002:4c79:6240::1610:9fff:fee5:fb5 ok 14 - any_inet_ntop, 2002:4c79:6240::1610:9fff:fee5:fb5 ok 15 - any_inet_ntop, 2002:4c79:6240::1610:9fff:fee5:fb5 ok 16 - any_inet_pton, 2607:f060:b008:feed::6 ok 17 - any_inet_ntop, 2607:f060:b008:feed::6 ok 18 - any_inet_ntop, 2607:f060:b008:feed::6 ok 19 - is_public_suffix, neg, sch.uk ok 20 - is_public_suffix, neg, tnpi.net ok 21 - is_public_suffix, neg, google.com ok 22 - is_public_suffix, pos, net ok 23 - is_public_suffix, neg, www.tnpi.net ok 24 - is_public_suffix, neg, z ok 25 - is_public_suffix, pos, test.sch.uk ok 26 - is_public_suffix, neg, *.uk ok 27 - is_public_suffix, neg, a ok 28 - is_public_suffix, pos, co.uk ok 29 - is_public_suffix, pos, com ok 30 - has_dns_rr, MX:gmail.com ok 31 - has_dns_rr, NS:fake.mail-dmarc.tnpi.net ok 32 - has_dns_rr, MX:tnpi.net ok 33 - has_dns_rr, A:www.tnpi.net ok 34 - has_dns_rr, NS:tnpi.net ok 35 - is_valid_ip, 0.0.0.0 ok 36 - is_valid_ip, 1.1.1.1 ok 37 - is_valid_ip, 255.255.255.255 ok 38 - is_valid_ip, 2607:f060:b008:feed::2 ok 39 - is_valid_ip, neg, 256.1.1.1 ok 40 - is_valid_ip, neg, a ok 41 - is_valid_ip, neg, 1.1.1.256 ok 42 - is_valid_domain, test.sch.uk ok 43 - is_valid_domain, example.com ok 44 - is_valid_domain, bbc.co.uk ok 45 - is_valid_domain, 3.am ok 46 - is_valid_domain, example.m ok 47 - is_valid_domain, bbc.co.k ok 48 - is_valid_domain, 3.a ok 49 - epoch_to_iso, 2021-03-30T10:36:18 ok 50 - get_prefix: /usr/local/, /opt/local/, /, ./ ok 51 - get_prefix(etc): /usr/local/etc, /opt/local/etc, /etc, ./etc ok 52 - get_prefix(share): /usr/local/share, /opt/local/share, /share, ./share ok 53 - get_sharefile: /tmp/vhN1Q7Zdsi/auto/share/dist/Mail-DMARC/mail-dmarc.ini ok 54 - Public Suffix List cached ok 55 - Public Suffix List loaded ok 56 - Public Suffix List reloaded ok 57 - Public Suffix List reloaded true return ok 58 - Public Suffix List reloaded false return 1..58 ok t/04.PurePerl.t .............................. ok 1 - use Mail::DMARC::PurePerl; ok 2 - An object of class 'Mail::DMARC::PurePerl' isa 'Mail::DMARC::PurePerl' ok 3 - get_from_dom, dmarc-qa.com eq dmarc-qa.com ok 4 - get_from_dom, example.com eq example.com ok 5 - get_from_dom, dmarc-qa.com eq dmarc-qa.com ok 6 - get_from_dom, alt.dmarc-qa.com eq alt.dmarc-qa.com ok 7 - get_from_dom, example.com eq example.com ok 8 - get_from_dom, example2.com eq example2.com ok 9 - get_from_dom, From: "Test 1.1.7" , ok 10 - get_from_dom, example.com eq example.com ok 11 - get_from_dom, , ok 12 - get_from_dom, From: "Test 1.1.5", invalid header_from at t/04.PurePerl.t line 505. ok 13 - get_from_dom, dmarc-qa.com eq dmarc-qa.com ok 14 - get_from_dom, example.com eq example.com ok 15 - get_from_dom, example.com eq example.com ok 16 - get_from_dom, dmarc-qa.com eq dmarc-qa.com ok 17 - get_from_dom, example.com eq example.com ok 18 - get_from_dom, example.com eq example.com ok 19 - get_from_dom, dmarc-qa.com eq dmarc-qa.com ok 20 - get_from_dom, example.com eq example.com ok 21 - get_from_dom, dmarc-qa.com eq dmarc-qa.com ok 22 - get_from_dom, dmarc-qa.com eq dmarc-qa.com ok 23 - fetch_dmarc_record, non-exist ok 24 - fetch_dmarc_record ok 25 - fetch_dmarc_record, 1.2.1 one_one.test.dmarc-qa.com ok 26 - fetch_dmarc_record, 1.2.2 DNS error ok 27 - fetch_dmarc_record, 1.2.3 DNS error subdomain ok 28 - fetch_dmarc_record, 1.2.3 DNS srvfail ok 29 - fetch_dmarc_record, 1.2.4 TLD lookup not allowed ok 30 - fetch_dmarc_record, 1.2.5 CNAME results in Org match ok 31 - fetch_dmarc_record, 1.3.1 unrelated TXT ok 32 - fetch_dmarc_record, 1.3.1 mixed TXT ok 33 - get_organizational_domain, www.bbc.co.uk ok 34 - get_organizational_domain, www.tnpi.net ok 35 - get_organizational_domain, bbc.co.uk ok 36 - get_organizational_domain, plus.google.com ok 37 - get_organizational_domain, tnpi.net ok 38 - exists_in_dns, tnpi.net, 2 ok 39 - exists_in_dns, fake.mail-dmarc.tnpi.net, 2 ok 40 - exists_in_dns, no-such-made-up-name-should-exist.com.uk.nonsense, 0 ok 41 - spf, set header_from ok 42 - spf, set spf ok 43 - is_spf_aligned ok 44 - is_spf_aligned, strict ok 45 - spf, set spf ok 46 - spf alignment->r ok 47 - is_spf_aligned, relaxed ok 48 - is_spf_aligned, relaxed ok 49 - spf, set spf ok 50 - is_spf_aligned, neg ok 51 - dkim, set header_from ok 52 - dkim, setup ok 53 - is_dkim_aligned, strict ok 54 - dkim, set header_from ok 55 - is_dkim_aligned, relaxed ok 56 - dkim, set header_from ok 57 - is_dkim_aligned, miss ok 58 - dkim, no signatures ok 59 - is_dkim_aligned, empty ok 60 - dkim, setup ok 61 - dkim, set header_from ok 62 - is_dkim_aligned, relaxed ok 63 - dkim, set header_from ok 64 - is_dkim_aligned, miss ok 65 - is_aligned, both ok 66 - is_aligned, spf ok 67 - is_aligned, dkim ok 68 - is_aligned, none ok 69 - is_whitelisted, 127.0.0.1, local_policy ok 70 - is_whitelisted, 127.0.0.3, trusted_forwarder ok 71 - is_whitelisted, neg, 127.0.0.2 ok 72 - is_whitelisted, neg, 10.0.0.0 ok 73 - discover_policy ok 74 - discover_policy, deeply ok 75 - discover_policy, 1.3.3 multiple DMARC records not allowed ok 76 - validate, one-shot, is_spf_aligned, yes ok 77 - validate, one-shot, is_dkim_aligned, no ok 78 - has_valid_reporting_uri, mailto:dmarc@example.com ok 79 - has_valid_reporting_uri, mailto:dmarc@example.com,http://example.com/dmarc ok 80 - has_valid_reporting_uri, ftp://dmarc.example.com,http://example.com/dmarc ok 81 - has_valid_reporting_uri, 1.5.1 multiple ok 82 - has_valid_reporting_uri, multiple filtered ok 83 - has_valid_reporting_uri, single filtered ok 84 - has_valid_reporting_uri, neg, ftp://ftp.example.com ok 85 - has_valid_reporting_uri, neg, gopher://www.example.com/dmarc ok 86 - has_valid_reporting_uri, neg, scp://secure.example.com ok 87 - has_valid_reporting_uri, neg, http://www.example.com/dmarc ok 88 - has_valid_reporting_uri, neg, a@dmarc-qa.com ok 89 - new policy ok 90 - new URI ok 91 - external_report, mailto:test@example.com for example.com ok 92 - new policy ok 93 - new URI ok 94 - external_report, mailto:test@silly.com for silly.com ok 95 - new policy ok 96 - new URI ok 97 - external_report, mailto:test@example.com for example.com.com ok 98 - new policy ok 99 - new URI ok 100 - external_report, mailto:test@silly.com for silly.com.com ok 101 - new policy ok 102 - verify_external_reporting, tnpi.net, theartfarm.com ok 103 - new policy ok 104 - verify_external_reporting, cadillac.net, theartfarm.com ok 105 - new policy ok 106 - verify_external_reporting, mail-dmarc.tnpi.net, theartfarm.com ok 107 - verify_external_reporting, override rua ok 108 - discover_policy ok 109 - result is a ref ok 110 - result=pass ok 111 - spf=pass ok 112 - disposition=none ok 113 - disposition changed to reject ok 114 - added reason ok 115 - added reason 2 ok 116 - save aggregate 1..116 ok t/06.Result.t ................................ ok 1 - use Mail::DMARC::PurePerl; ok 2 - use Mail::DMARC::Result; ok 3 - An object of class 'Mail::DMARC::Result' isa 'Mail::DMARC::Result' ok 4 - result, pass, strict, tnpi.net ok 5 - pass, relaxed, tnpi.net ok 6 - is_dkim_aligned, neg ok 7 - is_spf_aligned, neg ok 8 - is_aligned, neg ok 9 - result, fail, strict, tnpi.net ok 10 - is_dkim_aligned, neg ok 11 - is_spf_aligned, neg ok 12 - is_aligned, neg ok 13 - result, fail, strict, tnpi.net ok 14 - is_dkim_aligned, neg ok 15 - is_spf_aligned, neg ok 16 - is_aligned, neg ok 17 - result, fail, strict, tnpi.net ok 18 - is_dkim_aligned, neg ok 19 - is_spf_aligned, neg ok 20 - is_aligned, neg ok 21 - result, fail, strict, sampled out, tnpi.net ok 22 - result, none, nonexist ok 23 - result, fail, nonexist ok 24 - disposition, none ok 25 - disposition, reject ok 26 - disposition, quarantine ok 27 - disposition, NONE ok 28 - disposition, REJECT ok 29 - disposition, QUARANTINE ok 30 - disposition, neg, non, invalid disposition (non at t/06.Result.t line 238. ok 31 - disposition, neg, rejec, invalid disposition (rejec at t/06.Result.t line 238. ok 32 - disposition, neg, quarantin, invalid disposition (quarantin at t/06.Result.t line 238. ok 33 - disposition, neg, NON, invalid disposition (NON at t/06.Result.t line 238. ok 34 - disposition, neg, REJEC, invalid disposition (REJEC at t/06.Result.t line 238. ok 35 - disposition, neg, QUARANTIN, invalid disposition (QUARANTIN at t/06.Result.t line 238. ok 36 - dkim, pass ok 37 - dkim, fail ok 38 - dkim, PASS ok 39 - dkim, FAIL ok 40 - dkim, neg, pas, invalid dkim at t/06.Result.t line 296. ok 41 - dkim, neg, fai, invalid dkim at t/06.Result.t line 296. ok 42 - dkim, neg, PAS, invalid dkim at t/06.Result.t line 296. ok 43 - dkim, neg, FAI, invalid dkim at t/06.Result.t line 296. ok 44 - dkim_align, strict ok 45 - dkim_align, relaxed ok 46 - dkim_align, STRICT ok 47 - dkim_align, RELAXED ok 48 - dkim_align, neg, stric, invalid dkim_align at t/06.Result.t line 312. ok 49 - dkim_align, neg, relaxe, invalid dkim_align at t/06.Result.t line 312. ok 50 - dkim_align, neg, STRIC, invalid dkim_align at t/06.Result.t line 312. ok 51 - dkim_align, neg, RELAXE, invalid dkim_align at t/06.Result.t line 312. ok 52 - spf, pass ok 53 - spf, fail ok 54 - spf, PASS ok 55 - spf, FAIL ok 56 - spf, neg, pas, invalid spf at t/06.Result.t line 296. ok 57 - spf, neg, fai, invalid spf at t/06.Result.t line 296. ok 58 - spf, neg, PAS, invalid spf at t/06.Result.t line 296. ok 59 - spf, neg, FAI, invalid spf at t/06.Result.t line 296. ok 60 - result, pass ok 61 - result, fail ok 62 - result, PASS ok 63 - result, FAIL ok 64 - result, neg, pas, invalid result at t/06.Result.t line 296. ok 65 - result, neg, fai, invalid result at t/06.Result.t line 296. ok 66 - result, neg, PAS, invalid result at t/06.Result.t line 296. ok 67 - result, neg, FAI, invalid result at t/06.Result.t line 296. ok 68 - reason type: forwarded ok 69 - reason type: sampled_out ok 70 - reason type: trusted_forwarder ok 71 - reason type: mailing_list ok 72 - reason type: local_policy ok 73 - reason type: other ok 74 - reason, any, invalid type at lib/Mail/DMARC/Result.pm line 82. ok 75 - reason, reason, invalid type at lib/Mail/DMARC/Result.pm line 82. ok 76 - reason, not, invalid type at lib/Mail/DMARC/Result.pm line 82. ok 77 - reason, in, invalid type at lib/Mail/DMARC/Result.pm line 82. ok 78 - reason, above, invalid type at lib/Mail/DMARC/Result.pm line 82. ok 79 - reason, list, invalid type at lib/Mail/DMARC/Result.pm line 82. ok 80 - dkim_meta 1..80 ok t/09.HTTP.t .................................. ok 1 - use Mail::DMARC::HTTP; ok 2 - An object of class 'Mail::DMARC::HTTP' isa 'Mail::DMARC::HTTP' Content-Type: application/json; charset=ISO-8859-1 {"err":"missing POST data"} ok 3 - serve_validator, missing POST data Content-Type: application/json; charset=ISO-8859-1 {"err":"'false' expected, at character offset 0 (before \"foo\") at lib/Mail/DMARC/HTTP.pm line 98.\n"} ok 4 - serve_validator, invalid JSON Content-Type: application/json; charset=ISO-8859-1 {"spf":"","result":"fail","dkim":"","reason":[{"type":"other","comment":"no header_from"}],"disposition":"none"} ok 5 - serve_validator, missing header_from Content-Type: application/json; charset=ISO-8859-1 {"published":{"v":"DMARC1","domain":"tnpi.net","pct":"100","ruf":"mailto:dmarc-feedback@theartfarm.com","rua":"mailto:dmarc-feedback@theartfarm.com","p":"reject"},"reason":[],"spf":"","result":"fail","disposition":"reject","dkim":"fail"} ok 6 - serve_validator, missing SPF ok 7 - serve_validator, missing DKIM Content-Type: application/json; charset=ISO-8859-1 {"spf_align":"strict","reason":[],"published":{"ruf":"mailto:dmarc-feedback@theartfarm.com","pct":"100","domain":"tnpi.net","v":"DMARC1","p":"reject","rua":"mailto:dmarc-feedback@theartfarm.com"},"spf":"pass","dkim":"fail","disposition":"none","result":"pass"} ok 8 - serve_validator, pass SPF ok 9 - serve_validator, missing DKIM Content-Type: application/json; charset=ISO-8859-1 {"published":{"rua":"mailto:dmarc-feedback@theartfarm.com","p":"reject","pct":"100","domain":"tnpi.net","v":"DMARC1","ruf":"mailto:dmarc-feedback@theartfarm.com"},"dkim_align":"strict","reason":[],"spf":"","result":"pass","dkim_meta":{"identity":"","domain":"tnpi.net","selector":"mar2013"},"dkim":"pass","disposition":"none"} ok 10 - serve_validator, missing SPF ok 11 - serve_validator, pass DKIM 1..11 ok t/10.Report.t ................................ ok 1 - use Mail::DMARC::PurePerl; ok 2 - An object of class 'Mail::DMARC::PurePerl' isa 'Mail::DMARC::PurePerl' ok 3 - An object of class 'Mail::DMARC::Report' isa 'Mail::DMARC::Report' ok 4 - An object of class 'Mail::DMARC::Report::Send' isa 'Mail::DMARC::Report::Send' ok 5 - An object of class 'Mail::DMARC::Report::Store' isa 'Mail::DMARC::Report::Store' ok 6 - An object of class 'Mail::DMARC::Report::Receive' isa 'Mail::DMARC::Report::Receive' ok 7 - compress_report ok 8 - compress_report, extracts 1..8 ok t/11.Report.Store.t .......................... ok 1 - use Mail::DMARC::PurePerl; ok 2 - An object of class 'Mail::DMARC::PurePerl' isa 'Mail::DMARC::PurePerl' ok 3 - An object of class 'Mail::DMARC::Report' isa 'Mail::DMARC::Report' ok 4 - An object of class 'Mail::DMARC::Report::Store' isa 'Mail::DMARC::Report::Store' ok 5 - selected backend loaded ok 6 - header_from ok 7 - envelope_to ok 8 - source_ip ok 9 - pub ok 10 - result, pass, strict, tnpi.net ok 11 - reason 1..11 ok DBI connect('database=dmarc_report;port=3306','root',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) at lib/Mail/DMARC/Report/Store/SQL.pm line 551. DBI connect('database=dmarc_report;port=5432','postgres',...) failed: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? at lib/Mail/DMARC/Report/Store/SQL.pm line 551. t/12.Report.Store.SQL.t ...................... ok 1 - use Mail::DMARC::Report::Store::SQL; ok 2 - An object of class 'Mail::DMARC::Report::Store::SQL' isa 'Mail::DMARC::Report::Store::SQL' ok 3 - db_connect: SQLite ok 4 - An object of class 'DBIx::Simple' isa 'DBIx::Simple' ok 5 - An object of class 'Mail::DMARC::Report::Store::SQL::Grammars::SQLite' isa 'Mail::DMARC::Report::Store::SQL::Grammars::SQLite' ok 6 - query_insert, report, 1 ok 7 - delete_report, report, 1 ok 8 - query_insert, report, neg: query called by main, 484 # INSERT INTO reporting (domain, begin, end) VALUES (??) # example.com, 1617083392, 1617179792 at t/12.Report.Store.SQL.t line 484. ok 9 - query_insert, report, neg: query called by main, 492 # INSERT INTO report (domin, begin, end) VALUES (??) # aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, yellow, 1617179792 at t/12.Report.Store.SQL.t line 492. ok 10 - STDERR has expected warning (SQLite) ok 11 - replace, negative, DBD::SQLite::db prepare failed: no such table: rep0rt at lib/Mail/DMARC/Report/Store/SQL.pm line 640. ok 12 - delete, negative, DBD::SQLite::db prepare failed: no such table: repor at lib/Mail/DMARC/Report/Store/SQL.pm line 647. ok 13 - query ok 14 - query, select, report ok 15 - query, select, author ok 16 - query, select, domain ok 17 - query, select, report_record ok 18 - query, select, negative, query called by main, 575 # SELECT id FROM rep0rt LIMIT 1 # no such table: rep0rt at t/12.Report.Store.SQL.t line 575. ok 19 - meta, begin, set ok 20 - meta, org_name, set ok 21 - meta, end, set ok 22 - meta, email, set ok 23 - policy, rua, set ok 24 - policy, domain, set ok 25 - policy published, set ok 26 - get_report_id, 2 ok 27 - any_inet_pton, 1.1.1.1 ok 28 - any_inet_ntop, 1.1.1.1 ok 29 - any_inet_ntop, round_trip, 1.1.1.1 ok 30 - records_retrieved ok 31 - any_inet_ntop, round_trip, 1.1.1.1 ok 32 - any_inet_pton, 10.0.1.1 ok 33 - any_inet_ntop, 10.0.1.1 ok 34 - any_inet_ntop, round_trip, 10.0.1.1 ok 35 - records_retrieved ok 36 - any_inet_ntop, round_trip, 10.0.1.1 ok 37 - any_inet_pton, 2002:4c79:6240::1610:9fff:fee5:fb5 ok 38 - any_inet_ntop, 2002:4c79:6240::1610:9fff:fee5:fb5 ok 39 - any_inet_ntop, round_trip, zero-pad, 2002:4c79:6240::1610:9fff:fee5:fb5 ok 40 - records_retrieved ok 41 - any_inet_ntop, round_trip, zero-pad, 2002:4c79:6240::1610:9fff:fee5:fb5 ok 42 - any_inet_pton, 2607:f060:b008:feed::6 ok 43 - any_inet_ntop, 2607:f060:b008:feed::6 ok 44 - any_inet_ntop, round_trip, 2607:f060:b008:feed::6 ok 45 - records_retrieved ok 46 - any_inet_ntop, round_trip, 2607:f060:b008:feed::6 ok 47 - insert_policy_published ok 48 - get_report_policy_published ok 49 - get_report_policy_published, deeply ok 50 - insert_rr, 5 ok 51 - at_test_insert_rr_spf with 5 ok 52 - insert_rr_spf ok 53 - insert_rr_spf ok 54 - insert_rr_spf ok 55 - at_test_insert_rr_dkim with 5 ok 56 - insert_rr_dkim ok 57 - insert_rr_dkim ok 58 - insert_rr_dkim ok 59 - at_test_insert_rr_reason with 5 ok 60 - insert_rr_reason, forwarded ok 61 - insert_rr_reason, local_policy ok 62 - insert_rr_reason, mailing_list ok 63 - insert_rr_reason, other ok 64 - insert_rr_reason, sampled_out ok 65 - insert_rr_reason, trusted_forwarder ok 66 - retrieve, 1 ok 67 - retrieve, from_domain, 1 ok 68 - retrieve, end, 1 ok 69 - retrieve, rid, 1 ok 70 - retrieve, begin, 1 ok 71 - retrieve, author, 1 ok 72 - retrieve_todo ok 73 - meta, end, set ok 74 - meta, org_name, set ok 75 - meta, email, set ok 76 - meta, begin, set ok 77 - policy, rua, set ok 78 - policy, domain, set ok 79 - policy published, set ok 80 - get_report_id, 3 ok 81 - meta, end, set ok 82 - meta, org_name, set ok 83 - meta, email, set ok 84 - meta, begin, set ok 85 - policy, rua, set ok 86 - policy, domain, set ok 87 - policy published, set ok 88 - get_report_id, 4 ok 89 - meta, email, set ok 90 - meta, begin, set ok 91 - meta, end, set ok 92 - meta, org_name, set ok 93 - policy, rua, set ok 94 - policy, domain, set ok 95 - policy published, set ok 96 - get_report_id, 5 ok 97 - get_report, no limits, 4 ok 98 - skipping author tests ok 99 - get_row_reason ok 100 - get_row_spf ok 101 - get_row_dkim ok 102 - populate_agg_metadata ok 103 - populate_agg_metadata, deeply ok 104 - populate_agg_records ok 105 - populate_agg_records, deeply ok 106 - Skipping MySQL, unable to connect ok 107 - Skipping PostgreSQL, unable to connect 1..107 ok t/13.Report.Aggregate.t ...................... ok 1 - use Mail::DMARC::Report::Aggregate; ok 2 - An object of class 'Mail::DMARC::Report::Aggregate' isa 'Mail::DMARC::Report::Aggregate' ok 3 - An object of class 'Mail::DMARC::Report::Aggregate::Metadata' isa 'Mail::DMARC::Report::Aggregate::Metadata' ok 4 - Mail::DMARC::Report::Aggregate::Record, empty ok 5 - record, test ok 6 - record, deeply ok 7 - record, empty, again ok 8 - record, deeply, multiple ok 9 - policy_published, empty ok 10 - policy_published, default ok 11 - metadata, as_xml ok 12 - policy_published, as_xml ok 13 - record, as_xml ok 14 - as_xml 1..14 ok t/14.Report.Aggregate.Metadata.t ............. ok 1 - use Mail::DMARC::Report::Aggregate; ok 2 - An object of class 'Mail::DMARC::Report::Aggregate' isa 'Mail::DMARC::Report::Aggregate' ok 3 - An object of class 'Mail::DMARC::Report::Aggregate::Metadata' isa 'Mail::DMARC::Report::Aggregate::Metadata' ok 4 - org_name, set ok 5 - org_name, get ok 6 - test_email, set ok 7 - test_email, get ok 8 - extra_contact_info, set ok 9 - extra_contact_info, get ok 10 - report_id, set ok 11 - report_id, get ok 12 - date_range, set ok 13 - date_range, get ok 14 - date_range, get start ok 15 - date_range, get end ok 16 - begin, set ok 17 - date_range, get start ok 18 - end, set ok 19 - date_range, get end ok 20 - error, error \#1 for test ok 21 - error, error \#2 for testing ok 22 - error, deeply ok 23 - uuid, set ok 24 - uuid, get ok 25 - as_xml 1..25 ok t/15.Report.Aggregate.Record.t ............... ok 1 - use Mail::DMARC::Report::Aggregate::Record; ok 2 - An object of class 'Mail::DMARC::Report::Aggregate::Record' isa 'Mail::DMARC::Report::Aggregate::Record' ok 3 - envelope_to, set ok 4 - envelope_to, get ok 5 - header_from, set ok 6 - header_from, get ok 7 - envelope_from, set ok 8 - envelope_from, get ok 9 - envelope_to, get ok 10 - header_from, get ok 11 - envelope_from, get ok 12 - auth_results, empty ok 13 - auth_results, one SPF ok 14 - auth_results, two SPF ok 15 - auth_results, two SPF, one DKIM ok 16 - auth_results, two SPF, two DKIM ok 17 - row, empty ok 18 - row, source_ip ok 19 - row, count ok 20 - row, policy_evaluated 1..20 ok t/16.Report.Aggregate.Record.Auth_Results.t .. ok 1 - use Mail::DMARC::Report::Aggregate::Record::Auth_Results; ok 2 - An object of class 'Mail::DMARC::Report::Aggregate::Record::Auth_Results' isa 'Mail::DMARC::Report::Aggregate::Record::Auth_Results' ok 3 - spf, empty ok 4 - spf, hash ok 5 - spf, hashref ok 6 - spf, arrayref of hashref ok 7 - dkim ok 8 - dkim, as hash ok 9 - dkim, as hashref ok 10 - dkim, as hashref again ok 11 - dkim, as arrayref of hashrefs 1..11 ok t/17.Report.Aggregate.Schema.t ............... skipped: XML::Validator::Schema not available t/20.Report.URI.t ............................ ok 1 - use Mail::DMARC::Report::URI; ok 2 - An object of class 'Mail::DMARC::Report::URI' isa 'Mail::DMARC::Report::URI' ok 3 - get_size_limit, 1073741824 ok 4 - get_size_limit, 10485760 ok 5 - get_size_limit, 5242880 ok 6 - get_size_limit, 53477376 ok 7 - get_size_limit, 20480 ok 8 - get_size_limit, 500 ok 9 - parse, http://www.example.com/dmarc-feedback ok 10 - parse, count 1 ok 11 - parse, https://www.example.com/dmarc-feedback ok 12 - parse, count 1 ok 13 - parse, mailto:dmarc@example.com ok 14 - parse, count 1 ok 15 - parse, mailto:dmarc-feedback@example.com,mailto:tld-test@thirdparty.example.net!10m ok 16 - parse, count 2 1..16 ok t/21.Report.Send.t ........................... ok 1 - use Mail::DMARC::Report::Send; ok 2 - An object of class 'Mail::DMARC::Report::Send' isa 'Mail::DMARC::Report::Send' ok 3 - An object of class 'Mail::DMARC::Report::Send::SMTP' isa 'Mail::DMARC::Report::Send::SMTP' ok 4 - An object of class 'Mail::DMARC::Report::Send::HTTP' isa 'Mail::DMARC::Report::Send::HTTP' ok 5 - too_big_report 1..5 ok t/22.Report.Send.SMTP.t ...................... ok 1 - use Mail::DMARC::Report::Send::SMTP; ok 2 - An object of class 'Mail::DMARC::Report::Send::SMTP' isa 'Mail::DMARC::Report::Send::SMTP' ok 3 - get_subject, Report Domain: they.com Submitter: example-test.com Report-ID:2021.03.30.2013.06.01.6789 getting MX for tnpi.net ok 4 - get_domain_mx, tnpi.net ok 5 - get_domain_mx, tnpi.net, deeply getting MX for tnpi.net ok 6 - get_smtp_hosts, tnpi.net ok 7 - human_summary ok 8 - get_filename, example-test.com!they.com!1617083399!1617093299!2013.06.01.6789.xml ok 9 - get_timestamp_rfc2822, Tue, 30 Mar 2021 10:36:39 +0200 ok 10 - get_helo_hostname, makaak ok 11 - assemble_message_object 1..11 ok t/23.Report.Send.HTTP.t ...................... ok 1 - use Mail::DMARC::Report::Send::HTTP; ok 2 - An object of class 'Mail::DMARC::Report::Send::HTTP' isa 'Mail::DMARC::Report::Send::HTTP' 1..2 ok t/25.Report.Receive.t ........................ ok 1 - use Mail::DMARC::Report::Receive; ok 2 - An object of class 'Mail::DMARC::Report::Receive' isa 'Mail::DMARC::Report::Receive' subject: report domain: timbersmart.com submitter: yahoo.com report-id: <1368868092.438744> ok 3 - get_submitter_from_subject, yahoo.com subject: report domain: timbersmart.com submitter: google.com report-id: 6022178961730607282 ok 4 - get_submitter_from_subject, google.com subject: report domain: lynboyer.com submitter: hotmail.com report-id: <02c539af4f164aeda7dd1e7aaba9751b@hotmail.com> ok 5 - get_submitter_from_subject, hotmail.com subject: report domain: tnpi.net submitter: ivenue.com report-id: tnpi.net-1366977854@ivenue.com ok 6 - get_submitter_from_subject, ivenue.com subject: report domain:theartfarm.com submitter:aol.com report-id:theartfarm.com_1366084800 ok 7 - get_submitter_from_subject, aol.com ok 8 # skip imap not configured in mail-dmarc.ini 1..8 ok t/26.Report.Sender.t ......................... # Subtest: method ok 1 - 1 Email sent ok 2 - Sent to correct address ok 3 - Human readable description ok 4 - Human readable summary ok 5 - Gzip attachment 1..5 ok 1 - method # Subtest: object ok 1 - 1 Email sent ok 2 - Sent to correct address ok 3 - Human readable description ok 4 - Human readable summary ok 5 - Gzip attachment 1..5 ok 2 - object # Subtest: fail ok 1 - Email send fails 1..1 ok 3 - fail # Subtest: fallback ok 1 - 1 Email sent ok 2 - Sent to correct address ok 3 - Human readable description ok 4 - Human readable summary ok 5 - Gzip attachment 1..5 ok 4 - fallback 1..4 ok All tests successful. Files=20, Tests=742, 30 wallclock secs ( 0.26 usr 0.08 sys + 14.63 cusr 3.32 csys = 18.29 CPU) Result: PASS