| line |
true |
false |
branch |
|
41
|
2 |
0 |
if @_ == 1 |
|
44
|
0 |
0 |
if ($_[$i] eq 'DebugFunc' or $_[$i] eq 'Debug') |
|
50
|
0 |
0 |
if @_ > 1 |
|
83
|
0 |
7 |
if ($args{'spf_result'}) { } |
|
|
4 |
3 |
elsif ($args{'ip'} and $args{'mailfrom'} and $args{'helo'}) { } |
|
|
0 |
3 |
elsif (exists $args{'spf_result'}) { } |
|
96
|
0 |
7 |
if ($args{'dkim_result'}) { } |
|
|
2 |
5 |
elsif ($args{'dkim_sub'}) { } |
|
127
|
0 |
60 |
if $self->{'result'} |
|
128
|
34 |
26 |
unless @input |
|
135
|
12 |
14 |
unless (ref $data) |
|
136
|
0 |
12 |
if $Mail::DMARC::Iterator::DEBUG |
|
137
|
8 |
4 |
if (not $self->{'domain'} and defined $self->{'_hdrbuf'}) |
|
141
|
10 |
2 |
if ($self->{'dkim'}) |
|
152
|
0 |
14 |
if (not UNIVERSAL::isa($data, 'Net::DNS::Packet')) { } |
|
155
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
158
|
0 |
14 |
if $Mail::DMARC::Iterator::DEBUG |
|
165
|
0 |
14 |
unless ($cb) |
|
168
|
0 |
0 |
unless defined $cb |
|
174
|
0 |
14 |
if $self->{'dnscache'} |
|
182
|
0 |
35 |
if $self->{'result'} |
|
183
|
8 |
27 |
unless $self->{'domain'} |
|
189
|
7 |
20 |
unless my $rec = $self->{'record'} |
|
192
|
2 |
18 |
if ($self->{'dkim_sub'} and my $r = $self->{'dkim_result'}[0] = $self->{'dkim_sub'}->()) |
|
194
|
2 |
0 |
if $self->{'domrx'} |
|
196
|
20 |
0 |
if ($self->{'dkim_result'}) |
|
197
|
4 |
16 |
if ($self->{'dkim'} and not $self->{'dkim_result'}[1]) |
|
199
|
0 |
4 |
unless $self->{'dkim_result'}[0] |
|
200
|
0 |
4 |
if $Mail::DMARC::Iterator::DEBUG |
|
203
|
1 |
19 |
unless $self->{'dkim_result'}[0] |
|
204
|
0 |
19 |
if $Mail::DMARC::Iterator::DEBUG |
|
207
|
6 |
0 |
if ($st == 1) { } |
|
|
0 |
0 |
elsif ($st == -2 or $st == -1) { } |
|
|
0 |
0 |
elsif ($st == 0) { } |
|
225
|
0 |
14 |
unless my $sr = $self->{'spf_result'} |
|
226
|
9 |
5 |
unless defined $sr->[0] |
|
232
|
0 |
5 |
$rec->{'aspf'} eq 's' ? : |
|
|
1 |
4 |
if ($rec->{'aspf'} eq 's' ? lc $from ne $rec->{'domain'} : !($from =~ /^([\w\-\.]+\.)?\Q$rec->{'domain'}\E/i)) |
|
236
|
0 |
1 |
if $Mail::DMARC::Iterator::DEBUG |
|
244
|
0 |
4 |
if $Mail::DMARC::Iterator::DEBUG |
|
246
|
1 |
3 |
if ($sr->[0] eq 'Pass') |
|
253
|
0 |
0 |
$sr->[0] eq 'TempError' ? : |
|
|
0 |
0 |
$sr->[0] eq 'PermError' ? : |
|
|
0 |
0 |
$sr->[0] eq 'SoftFail' ? : |
|
|
3 |
0 |
$sr->[0] eq 'Fail' ? : |
|
260
|
1 |
0 |
if ($dkim_result || !$self->{'dkim'} and $spf_result || !$self->{'spf'}) |
|
267
|
0 |
0 |
$dkim_result ? : |
|
|
0 |
0 |
$spf_result ? : |
|
|
0 |
1 |
if $Mail::DMARC::Iterator::DEBUG |
|
271
|
2 |
0 |
unless defined $_->[0] |
|
272
|
0 |
0 |
if (not $best) { } |
|
|
0 |
0 |
elsif ($_->[0] and $_->[0] > $best->[0]) { } |
|
278
|
1 |
0 |
if ($self->{'dkim_sub'} and !$best || $best->[0] != 1 and !$self->{'dkim_result'}[0] || grep({not $_->status;} @{$$self{'dkim_result'}[0];})) |
|
281
|
0 |
1 |
if $Mail::DMARC::Iterator::DEBUG |
|
297
|
8 |
19 |
if (not $self->{'domain'}) { } |
|
|
7 |
12 |
elsif (my $dom = $self->{'_dmarc_domain'}) { } |
|
299
|
0 |
8 |
if $Mail::DMARC::Iterator::DEBUG |
|
303
|
0 |
7 |
if $Mail::DMARC::Iterator::DEBUG |
|
313
|
15 |
12 |
unless $self->{'record'} |
|
315
|
12 |
0 |
if ($self->{'dkim'}) |
|
319
|
0 |
12 |
if (not $self->{'dkim_result'}[1]) { } |
|
321
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
329
|
12 |
8 |
if (ref $todo) { } |
|
330
|
0 |
12 |
if $Mail::DMARC::Iterator::DEBUG |
|
333
|
0 |
8 |
if $Mail::DMARC::Iterator::DEBUG |
|
345
|
6 |
6 |
if ($self->{'spf'}) { } |
|
|
0 |
6 |
elsif (not $self->{'spf_result'}) { } |
|
349
|
1 |
5 |
if ($self->{'spf_result'}[0]) { } |
|
352
|
0 |
1 |
if $Mail::DMARC::Iterator::DEBUG |
|
362
|
0 |
5 |
if $Mail::DMARC::Iterator::DEBUG |
|
369
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
376
|
19 |
7 |
if $need_data |
|
383
|
0 |
19 |
if ($self->{'dnscache'} and my $cached = $self->{'dnscache'}{$q->qtype . ':' . $q->qname}) { } |
|
386
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
392
|
0 |
19 |
if $Mail::DMARC::Iterator::DEBUG |
|
396
|
0 |
26 |
if @input |
|
398
|
0 |
26 |
if ($Mail::DMARC::Iterator::DEBUG) |
|
400
|
0 |
0 |
if (not ref $_) { } |
|
413
|
0 |
7 |
unless $self->{'result'} |
|
414
|
7 |
0 |
unless (defined $self->{'result'}[2]) |
|
415
|
0 |
7 |
if ($self->{'result'}[0] == 0) { } |
|
416
|
0 |
0 |
if ($rec->{'sp'} and $rec->{'domain'} ne $self->{'domain'}[0]) { } |
|
425
|
0 |
7 |
if ($Mail::DMARC::Iterator::DEBUG) |
|
431
|
0 |
0 |
unless $self->{'result'} |
|
451
|
0 |
7 |
if $error |
|
460
|
0 |
7 |
unless $_->type eq 'TXT' |
|
463
|
0 |
7 |
unless $txt =~ /^\s*v=DMARC1[\s;]/ |
|
464
|
0 |
7 |
if $Mail::DMARC::Iterator::DEBUG |
|
465
|
0 |
7 |
unless my $v = parse_taglist($txt, \$error) |
|
466
|
0 |
7 |
unless $v = _check_dmarc_record($v) |
|
470
|
0 |
7 |
unless @record |
|
476
|
0 |
7 |
if ($record[0]{'pct'} < 100 and rand 100 < $record[0]{'pct'}) |
|
478
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
487
|
0 |
7 |
if (@{$self->{'domain'};} > 1 and $dom ne $self->{'domain'}[0]) |
|
492
|
0 |
7 |
if $Mail::DMARC::Iterator::DEBUG |
|
496
|
7 |
0 |
if ($record[0]{'adkim'} eq 'r') { } |
|
504
|
5 |
2 |
if ($self->{'dkim'}) { } |
|
|
2 |
0 |
elsif ($self->{'dkim_result'}) { } |
|
514
|
0 |
7 |
if ($self->{'spf_result'} and ref $self->{'spf_result'}[0] eq 'ARRAY') |
|
517
|
0 |
0 |
$record[0]{'aspf'} eq 'r' ? : |
|
|
0 |
0 |
$record[0]{'aspf'} eq $record[0]{'adkim'} ? : |
|
522
|
0 |
0 |
unless my $from = $_->[1]{'envelope-from'} |
|
525
|
0 |
0 |
unless $from =~ /$domrx/ |
|
528
|
0 |
0 |
if (@aligned > 1) { } |
|
|
0 |
0 |
elsif (@aligned) { } |
|
531
|
0 |
0 |
unless my(@a) = grep({$_->[0] eq $_;} @aligned) |
|
535
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
537
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
539
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
541
|
0 |
0 |
!@aligned ? : |
|
549
|
0 |
0 |
@$dom > 1 ? : |
|
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
556
|
0 |
0 |
if (@$dom) { } |
|
564
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
566
|
0 |
0 |
$error ? : |
|
591
|
21 |
56 |
if (defined $v->{$k}) { } |
|
|
42 |
14 |
elsif (defined $default) { } |
|
592
|
0 |
21 |
unless ($v->{$k} =~ /$rx/) |
|
593
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
598
|
0 |
42 |
if (ref $default) |
|
599
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
610
|
0 |
4 |
if ($error) { } |
|
611
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
614
|
4 |
0 |
$_->type eq 'TXT' ? : |
|
615
|
0 |
4 |
if $Mail::DMARC::Iterator::DEBUG |
|
622
|
0 |
3 |
if ($error) { } |
|
628
|
3 |
0 |
if (not defined $rv[0] or $rv[0] ne '') { } |
|
647
|
0 |
8 |
if $data eq '' |
|
662
|
7 |
24 |
if ($2) |
|
664
|
0 |
7 |
if $Mail::DMARC::Iterator::DEBUG |
|
671
|
0 |
8 |
if @hdr and defined $self->{'_hdrbuf'} |
|
679
|
31 |
0 |
$self->{'spf'} || $self->{'spf_result'} ? : |
|
|
24 |
7 |
unless $self->{'spf'} || $self->{'spf_result'} ? s/^(From)\s*:\s*//i : s/^(?:(From)\s*|Received-SPF):\s*//i |
|
682
|
7 |
0 |
if ($1) { } |
|
684
|
0 |
7 |
if $Mail::DMARC::Iterator::DEBUG |
|
688
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
694
|
1 |
7 |
if (defined $self->{'_hdrbuf'}) |
|
695
|
1 |
0 |
if $data ne '' |
|
701
|
7 |
0 |
unless ($self->{'domain'}) |
|
703
|
0 |
7 |
if (not $from) { } |
|
|
0 |
7 |
elsif (@$from != 1) { } |
|
704
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
708
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
714
|
7 |
0 |
if (my $dom = organizational_domain($from->[0])) |
|
715
|
0 |
7 |
if $dom ne $from->[0] |
|
719
|
0 |
7 |
if $Mail::DMARC::Iterator::DEBUG |
|
723
|
0 |
7 |
if (not $self->{'spf_result'} || $self->{'spf'}) |
|
725
|
0 |
0 |
unless delete $self->{'_spfr'} |
|
726
|
0 |
0 |
unless my($result, $hash) = _parse_spfreceived($_) |
|
727
|
0 |
0 |
unless (my $from = $hash->{'envelope-from'}) |
|
728
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
733
|
0 |
0 |
unless @dom == 1 |
|
735
|
0 |
0 |
if $Mail::DMARC::Iterator::DEBUG |
|
738
|
0 |
0 |
@records ? : |
|
750
|
14 |
0 |
if (not @state) { } |
|
|
0 |
0 |
elsif ($state[-1] eq '<') { } |
|
|
0 |
0 |
elsif ($state[-1] eq '"') { } |
|
|
0 |
0 |
elsif ($state[-1] eq '(') { } |
|
751
|
0 |
14 |
unless /\G ([^<,\"\(]*) (?: ([<\(\"]) | (,) | \z) /cgx |
|
752
|
0 |
14 |
if ($2) { } |
|
|
7 |
7 |
elsif ($1 ne '') { } |
|
|
7 |
0 |
elsif (not $3) { } |
|
755
|
7 |
0 |
if (my $x = $1) =~ /^\s*$addr\s*\z/ |
|
761
|
0 |
0 |
unless /\G(?: $addr | (?:[^>]*) ) > /cgx |
|
763
|
0 |
0 |
if $1 |
|
766
|
0 |
0 |
unless /\G (?:[^"\\]+|\\.)* \"/cgx |
|
770
|
0 |
0 |
unless /\G .*? ([()]) /cgsx |
|
771
|
0 |
0 |
if ($1 eq ')') { } |
|
778
|
0 |
7 |
if $Mail::DMARC::Iterator::DEBUG |
|
799
|
0 |
0 |
unless /\G($res)\s+/cig |
|
804
|
0 |
0 |
if ($comment) { } |
|
|
0 |
0 |
elsif (/\G($key)$fws?=$fws?($val)\s*(;\s*)?/cg) { } |
|
|
0 |
0 |
elsif (not %hash || defined $comment and /\G\(/cg) { } |
|
805
|
0 |
0 |
unless /\G[^()]*([()])\s*/cg |
|
806
|
0 |
0 |
$1 eq '(' ? : |
|
809
|
0 |
0 |
if $v =~ s/\A\"(.*)\"\z/$1/ |
|
811
|
0 |
0 |
unless $delim |