File Coverage

lib/Sisimai/Lhost.pm
Criterion Covered Total %
statement 26 26 100.0
branch n/a
condition n/a
subroutine 11 11 100.0
pod 0 5 0.0
total 37 42 88.1


line stmt bran cond sub pod time code
1             package Sisimai::Lhost;
2 91     91   90998 use v5.26;
  91         220  
3 91     91   308 use strict;
  91         113  
  91         2504  
4 91     91   361 use warnings;
  91         157  
  91         3673  
5 91     91   1414 use Sisimai::RFC5322;
  91         152  
  91         3623  
6              
7 91     91   338 use constant INDICATORS => { 'deliverystatus' => (1 << 1), 'message-rfc822' => (1 << 2) };
  91         126  
  91         6414  
8 91         22544 use constant BannerDTAG => [
9             # smail-3.2.0.108/src/
10             # notify.c:61|static char *log_banner = "\
11             # notify.c:62||------------------------- Message log follows: -------------------------|\n";
12             # notify.c:63|static char *addr_error_banner = "\
13             # notify.c:64||------------------------- Failed addresses follow: ---------------------|\n";
14             # notify.c:65|static char *text_banner = "\
15             # notify.c:66||------------------------- Message text follows: ------------------------|\n";
16             "|------------------------- Message log follows: -------------------------|", # 0. Smail 3
17             "|------------------------- Failed addresses follow: ---------------------|", # 1. Smail 3
18             "|------------------------- Message text follows: ------------------------|", # 2. Smail 3
19             "|------------------------- Message header follows: ----------------------|", # 3. Deutsche Telekom
20             # "|----------- Message text follows: (body too large, truncated) ----------|", # 4. Deutsche Telekom
21 91     91   371 ];
  91         98  
22             sub DELIVERYSTATUS {
23             # Data structure for decoded bounce messages
24             # @private
25             # @return [Hash] Data structure for delivery status
26             return {
27 5486     5486 0 50105 'spec' => '', # Protocl specification
28             'date' => '', # The value of Last-Attempt-Date header
29             'rhost' => '', # The value of Remote-MTA header
30             'lhost' => '', # The value of Received-From-MTA header
31             'alias' => '', # The value of alias entry(RHS)
32             'agent' => '', # MTA name
33             'action' => '', # The value of Action header
34             'status' => '', # The value of Status header
35             'reason' => '', # Temporary reason of bounce
36             'command' => '', # SMTP command in the message body
37             'replycode', => '', # SMTP Reply Code
38             'diagnosis' => '', # The value of Diagnostic-Code header
39             'recipient' => '', # The value of Final-Recipient header
40             'feedbacktype' => '', # Feedback Type
41             };
42             }
43 1     1 0 211909 sub description { return '' }
44             sub index {
45             # Alphabetical sorted MTA module list
46             # @return [Array] MTA list with order
47 170     170 0 350236 return [qw|
48             Activehunter AmazonSES ApacheJames Biglobe Courier Domino DeutscheTelekom DragonFly EZweb
49             EinsUndEins Exchange2003 Exchange2007 Exim FML GMX GoogleGroups GoogleWorkspace Gmail
50             IMailServer KDDI MailFoundry Mimecast MailMarshal MessagingServer Notes OpenSMTPD Postfix
51             Sendmail TrendMicro V5sendmail Verizon X1 X2 X3 X6 Zoho mFILTER qmail
52             |];
53             }
54              
55             sub path {
56             # Returns Sisimai::Lhost::* module path table
57             # @return [Hash] Module path table
58             # @since v4.25.6
59 89     89 0 177 my $class = shift;
60 89         323 my $index = __PACKAGE__->index;
61 89         430 my $table = {
62             'Sisimai::ARF' => 'Sisimai/ARF.pm',
63             'Sisimai::RFC3464' => 'Sisimai/RFC3464.pm',
64             'Sisimai::RFC3834' => 'Sisimai/RFC3834.pm',
65             };
66 89         3901 $table->{ __PACKAGE__.'::'.$_ } = 'Sisimai/Lhost/'.$_.'.pm' for @$index;
67 89         403 return $table;
68             }
69              
70             sub inquire {
71             # Method of a parent class to decode a bounce message of each MTA
72             # @param [Hash] mhead Message headers of a bounce email
73             # @param [String] mbody Message body of a bounce email
74             # @return [Hash] Bounce data list and message/rfc822 part
75             # @return [undef] failed to decode or the arguments are missing
76 1     1 0 4 return undef;
77             }
78              
79             1;
80             __END__