sisimai 4.16.0 → 4.17.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sisimai might be problematic. Click here for more details.

Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/ANALYTICAL-PRECISION +7 -7
  4. data/Changes +15 -0
  5. data/Makefile +1 -1
  6. data/README.md +30 -28
  7. data/lib/sisimai.rb +20 -1
  8. data/lib/sisimai/address.rb +28 -9
  9. data/lib/sisimai/arf.rb +37 -46
  10. data/lib/sisimai/data.rb +67 -43
  11. data/lib/sisimai/datetime.rb +210 -210
  12. data/lib/sisimai/mda.rb +30 -30
  13. data/lib/sisimai/message.rb +3 -5
  14. data/lib/sisimai/msp/de/einsundeins.rb +14 -42
  15. data/lib/sisimai/msp/de/gmx.rb +17 -44
  16. data/lib/sisimai/msp/jp/biglobe.rb +15 -44
  17. data/lib/sisimai/msp/jp/ezweb.rb +20 -50
  18. data/lib/sisimai/msp/jp/kddi.rb +16 -43
  19. data/lib/sisimai/msp/ru/mailru.rb +20 -48
  20. data/lib/sisimai/msp/ru/yandex.rb +16 -50
  21. data/lib/sisimai/msp/uk/messagelabs.rb +17 -51
  22. data/lib/sisimai/msp/us/amazonses.rb +18 -40
  23. data/lib/sisimai/msp/us/amazonworkmail.rb +17 -35
  24. data/lib/sisimai/msp/us/aol.rb +17 -41
  25. data/lib/sisimai/msp/us/bigfoot.rb +15 -48
  26. data/lib/sisimai/msp/us/facebook.rb +63 -90
  27. data/lib/sisimai/msp/us/google.rb +15 -44
  28. data/lib/sisimai/msp/us/office365.rb +21 -46
  29. data/lib/sisimai/msp/us/outlook.rb +17 -50
  30. data/lib/sisimai/msp/us/receivingses.rb +20 -43
  31. data/lib/sisimai/msp/us/sendgrid.rb +13 -37
  32. data/lib/sisimai/msp/us/verizon.rb +30 -74
  33. data/lib/sisimai/msp/us/yahoo.rb +12 -40
  34. data/lib/sisimai/msp/us/zoho.rb +14 -42
  35. data/lib/sisimai/mta/activehunter.rb +11 -40
  36. data/lib/sisimai/mta/apachejames.rb +18 -40
  37. data/lib/sisimai/mta/courier.rb +20 -57
  38. data/lib/sisimai/mta/domino.rb +24 -56
  39. data/lib/sisimai/mta/exchange.rb +26 -54
  40. data/lib/sisimai/mta/exim.rb +20 -39
  41. data/lib/sisimai/mta/imailserver.rb +26 -71
  42. data/lib/sisimai/mta/interscanmss.rb +26 -44
  43. data/lib/sisimai/mta/mailfoundry.rb +12 -42
  44. data/lib/sisimai/mta/mailmarshalsmtp.rb +13 -43
  45. data/lib/sisimai/mta/mcafee.rb +17 -46
  46. data/lib/sisimai/mta/messagingserver.rb +14 -47
  47. data/lib/sisimai/mta/mfilter.rb +12 -35
  48. data/lib/sisimai/mta/mxlogic.rb +18 -42
  49. data/lib/sisimai/mta/notes.rb +22 -45
  50. data/lib/sisimai/mta/opensmtpd.rb +18 -48
  51. data/lib/sisimai/mta/postfix.rb +15 -45
  52. data/lib/sisimai/mta/qmail.rb +32 -60
  53. data/lib/sisimai/mta/sendmail.rb +13 -38
  54. data/lib/sisimai/mta/surfcontrol.rb +15 -44
  55. data/lib/sisimai/mta/userdefined.rb +14 -30
  56. data/lib/sisimai/mta/v5sendmail.rb +18 -40
  57. data/lib/sisimai/mta/x1.rb +12 -41
  58. data/lib/sisimai/mta/x2.rb +12 -41
  59. data/lib/sisimai/mta/x3.rb +12 -39
  60. data/lib/sisimai/mta/x4.rb +33 -66
  61. data/lib/sisimai/mta/x5.rb +15 -42
  62. data/lib/sisimai/reason.rb +8 -71
  63. data/lib/sisimai/reason/blocked.rb +3 -0
  64. data/lib/sisimai/reason/contenterror.rb +3 -0
  65. data/lib/sisimai/reason/delivered.rb +27 -0
  66. data/lib/sisimai/reason/exceedlimit.rb +3 -0
  67. data/lib/sisimai/reason/expired.rb +3 -0
  68. data/lib/sisimai/reason/feedback.rb +18 -0
  69. data/lib/sisimai/reason/filtered.rb +4 -0
  70. data/lib/sisimai/reason/hasmoved.rb +3 -0
  71. data/lib/sisimai/reason/hostunknown.rb +3 -0
  72. data/lib/sisimai/reason/mailboxfull.rb +3 -0
  73. data/lib/sisimai/reason/mailererror.rb +3 -0
  74. data/lib/sisimai/reason/mesgtoobig.rb +3 -0
  75. data/lib/sisimai/reason/networkerror.rb +3 -0
  76. data/lib/sisimai/reason/norelaying.rb +3 -0
  77. data/lib/sisimai/reason/notaccept.rb +3 -0
  78. data/lib/sisimai/reason/onhold.rb +3 -0
  79. data/lib/sisimai/reason/rejected.rb +3 -0
  80. data/lib/sisimai/reason/securityerror.rb +3 -0
  81. data/lib/sisimai/reason/spamdetected.rb +3 -0
  82. data/lib/sisimai/reason/suspend.rb +3 -0
  83. data/lib/sisimai/reason/syntaxerror.rb +41 -0
  84. data/lib/sisimai/reason/systemerror.rb +3 -0
  85. data/lib/sisimai/reason/systemfull.rb +3 -0
  86. data/lib/sisimai/reason/toomanyconn.rb +3 -0
  87. data/lib/sisimai/reason/undefined.rb +18 -0
  88. data/lib/sisimai/reason/userunknown.rb +3 -0
  89. data/lib/sisimai/reason/vacation.rb +18 -0
  90. data/lib/sisimai/rfc3464.rb +15 -40
  91. data/lib/sisimai/rfc3834.rb +1 -10
  92. data/lib/sisimai/rfc5322.rb +57 -19
  93. data/lib/sisimai/rhost/googleapps.rb +82 -82
  94. data/lib/sisimai/smtp/reply.rb +2 -1
  95. data/lib/sisimai/smtp/status.rb +154 -152
  96. data/lib/sisimai/string.rb +2 -3
  97. data/lib/sisimai/version.rb +1 -1
  98. data/set-of-emails/maildir/bsd/rfc3464-29.eml +60 -0
  99. data/set-of-emails/maildir/bsd/us-amazonworkmail-06.eml +156 -0
  100. data/set-of-emails/maildir/bsd/us-amazonworkmail-07.eml +158 -0
  101. data/set-of-emails/maildir/bsd/us-google-15.eml +97 -0
  102. data/set-of-emails/maildir/bsd/us-google-16.eml +99 -0
  103. data/set-of-emails/maildir/bsd/us-google-17.eml +104 -0
  104. data/set-of-emails/maildir/dos/apachejames-01.eml +4 -4
  105. data/set-of-emails/maildir/dos/us-amazonworkmail-01.eml +156 -0
  106. data/set-of-emails/maildir/dos/us-office365-01.eml +102 -0
  107. data/set-of-emails/maildir/mac/apachejames-01.eml +1 -9
  108. data/set-of-emails/maildir/mac/us-amazonworkmail-01.eml +1 -7
  109. data/set-of-emails/maildir/mac/us-office365-01.eml +1 -4
  110. metadata +17 -2
@@ -70,13 +70,14 @@ module Sisimai
70
70
  return '' unless argv1.size > 0
71
71
  return '' if argv1 =~ /X-Unix;/i
72
72
 
73
- if cv = argv1.match(/\b([45][0-5][0-9])\b/) || cv = argv1.match(/\b(25[0-3])\b/)
73
+ if cv = argv1.match(/\b([45][0-5][0-9])\b/) || argv1.match(/\b(25[0-3])\b/)
74
74
  # 550, 447, or 250
75
75
  return cv[1]
76
76
  else
77
77
  return ''
78
78
  end
79
79
  end
80
+
80
81
  end
81
82
  end
82
83
  end
@@ -541,161 +541,162 @@ module Sisimai
541
541
  # Imported from p5-Sisimail/lib/Sisimai/SMTP/Status.pm
542
542
  class << self
543
543
  StandardCode = {
544
- '2.1.5' => 'delivered', # Successfully delivered
544
+ :'2.1.5' => 'delivered', # Successfully delivered
545
545
  # ------------------------------------------------------------------------------
546
- '4.1.6' => 'hasmoved', # Destination mailbox has moved, No forwarding address
547
- '4.1.7' => 'rejected', # Bad sender's mailbox address syntax
548
- '4.1.8' => 'rejected', # Bad sender's system address
549
- '4.1.9' => 'systemerror', # Message relayed to non-compliant mailer
550
- '4.2.1' => 'suspend', # Mailbox disabled, not accepting messages
551
- '4.2.2' => 'mailboxfull', # Mailbox full
552
- '4.2.3' => 'exceedlimit', # Message length exceeds administrative limit
553
- '4.2.4' => 'filtered', # Mailing list expansion problem
554
- #'4.3.0' => 'systemerror', # Other or undefined mail system status
555
- '4.3.1' => 'systemfull', # Mail system full
556
- '4.3.2' => 'notaccept', # System not accepting network messages
557
- '4.3.3' => 'systemerror', # System not capable of selected features
558
- '4.3.5' => 'systemerror', # System incorrectly configured
559
- #'4.4.0' => 'networkerror', # Other or undefined network or routing status
560
- '4.4.1' => 'expired', # No answer from host
561
- '4.4.2' => 'networkerror', # Bad connection
562
- #'4.4.3' => 'systemerror', # Directory server failure
563
- '4.4.4' => 'networkerror', # Unable to route
564
- '4.4.5' => 'toomanyconn', # Mail system congestion
565
- '4.4.6' => 'networkerror', # Routing loop detected
566
- '4.4.7' => 'expired', # Delivery time expired
567
- #'4.5.0' => 'networkerror', # Other or undefined protocol status
568
- '4.5.3' => 'systemerror', # Too many recipients
569
- '4.5.5' => 'systemerror', # Wrong protocol version
570
- '4.6.0' => 'contenterror', # Other or undefined media error
571
- '4.6.2' => 'contenterror', # Conversion required and prohibited
572
- '4.6.5' => 'contenterror', # Conversion Failed
573
- #'4.7.0' => 'securityerror', # Other or undefined security status
574
- '4.7.1' => 'blocked', # Delivery not authorized, message refused
575
- '4.7.2' => 'blocked', # Mailing list expansion prohibited
576
- '4.7.5' => 'securityerror', # Cryptographic failure
577
- '4.7.6' => 'securityerror', # Cryptographic algorithm not supported
578
- '4.7.7' => 'securityerror', # Message integrity failure
579
- '4.7.12' => 'securityerror', # A password transition is needed
580
- '4.7.15' => 'securityerror', # Priority Level is too low
581
- '4.7.16' => 'mesgtoobig', # Message is too big for the specified priority
582
- '4.7.24' => 'securityerror', # SPF validation error
546
+ :'4.1.6' => 'hasmoved', # Destination mailbox has moved, No forwarding address
547
+ :'4.1.7' => 'rejected', # Bad sender's mailbox address syntax
548
+ :'4.1.8' => 'rejected', # Bad sender's system address
549
+ :'4.1.9' => 'systemerror', # Message relayed to non-compliant mailer
550
+ :'4.2.1' => 'suspend', # Mailbox disabled, not accepting messages
551
+ :'4.2.2' => 'mailboxfull', # Mailbox full
552
+ :'4.2.3' => 'exceedlimit', # Message length exceeds administrative limit
553
+ :'4.2.4' => 'filtered', # Mailing list expansion problem
554
+ # :'4.3.0' => 'systemerror', # Other or undefined mail system status
555
+ :'4.3.1' => 'systemfull', # Mail system full
556
+ :'4.3.2' => 'notaccept', # System not accepting network messages
557
+ :'4.3.3' => 'systemerror', # System not capable of selected features
558
+ :'4.3.5' => 'systemerror', # System incorrectly configured
559
+ # :'4.4.0' => 'networkerror', # Other or undefined network or routing status
560
+ :'4.4.1' => 'expired', # No answer from host
561
+ :'4.4.2' => 'networkerror', # Bad connection
562
+ # :'4.4.3' => 'systemerror', # Directory server failure
563
+ :'4.4.4' => 'networkerror', # Unable to route
564
+ :'4.4.5' => 'toomanyconn', # Mail system congestion
565
+ :'4.4.6' => 'networkerror', # Routing loop detected
566
+ :'4.4.7' => 'expired', # Delivery time expired
567
+ # :'4.5.0' => 'networkerror', # Other or undefined protocol status
568
+ :'4.5.3' => 'systemerror', # Too many recipients
569
+ :'4.5.5' => 'systemerror', # Wrong protocol version
570
+ :'4.6.0' => 'contenterror', # Other or undefined media error
571
+ :'4.6.2' => 'contenterror', # Conversion required and prohibited
572
+ :'4.6.5' => 'contenterror', # Conversion Failed
573
+ # :'4.7.0' => 'securityerror', # Other or undefined security status
574
+ :'4.7.1' => 'blocked', # Delivery not authorized, message refused
575
+ :'4.7.2' => 'blocked', # Mailing list expansion prohibited
576
+ :'4.7.5' => 'securityerror', # Cryptographic failure
577
+ :'4.7.6' => 'securityerror', # Cryptographic algorithm not supported
578
+ :'4.7.7' => 'securityerror', # Message integrity failure
579
+ :'4.7.12' => 'securityerror', # A password transition is needed
580
+ :'4.7.15' => 'securityerror', # Priority Level is too low
581
+ :'4.7.16' => 'mesgtoobig', # Message is too big for the specified priority
582
+ :'4.7.24' => 'securityerror', # SPF validation error
583
583
  # ------------------------------------------------------------------------------
584
- '5.1.0' => 'userunknown', # Other address status
585
- '5.1.1' => 'userunknown', # Bad destination mailbox address
586
- '5.1.2' => 'hostunknown', # Bad destination system address
587
- '5.1.3' => 'userunknown', # Bad destination mailbox address syntax
588
- '5.1.4' => 'filtered', # Destination mailbox address ambiguous
589
- '5.1.6' => 'hasmoved', # Destination mailbox has moved, No forwarding address
590
- '5.1.7' => 'rejected', # Bad sender's mailbox address syntax
591
- '5.1.8' => 'rejected', # Bad sender's system address
592
- '5.1.9' => 'systemerror', # Message relayed to non-compliant mailer
593
- '5.1.10' => 'notaccept', # Recipient address has null MX
594
- '5.2.0' => 'filtered', # Other or undefined mailbox status
595
- '5.2.1' => 'filtered', # Mailbox disabled, not accepting messages
596
- '5.2.2' => 'mailboxfull', # Mailbox full
597
- '5.2.3' => 'exceedlimit', # Message length exceeds administrative limit
598
- '5.2.4' => 'filtered', # Mailing list expansion problem
599
- '5.3.0' => 'systemerror', # Other or undefined mail system status
600
- '5.3.1' => 'systemfull', # Mail system full
601
- '5.3.2' => 'notaccept', # System not accepting network messages
602
- '5.3.3' => 'systemerror', # System not capable of selected features
603
- '5.3.4' => 'mesgtoobig', # Message too big for system
604
- '5.3.5' => 'systemerror', # System incorrectly configured
605
- '5.4.0' => 'networkerror', # Other or undefined network or routing status
606
- '5.4.3' => 'systemerror', # Directory server failure
607
- '5.5.3' => 'toomanyconn', # Too many recipients
608
- '5.5.4' => 'systemerror', # Invalid command arguments
609
- '5.5.5' => 'systemerror', # Wrong protocol version
610
- '5.5.6' => 'securityerror', # Authentication Exchange line is too long
611
- '5.6.0' => 'contenterror', # Other or undefined media error
612
- '5.6.1' => 'contenterror', # Media not supported
613
- '5.6.2' => 'contenterror', # Conversion required and prohibited
614
- '5.6.3' => 'contenterror', # Conversion required but not supported
615
- '5.6.5' => 'contenterror', # Conversion Failed
616
- '5.6.6' => 'contenterror', # Message content not available
617
- '5.6.7' => 'contenterror', # Non-ASCII addresses not permitted for that sender/recipient
618
- '5.6.8' => 'contenterror', # UTF-8 string reply is required, but not permitted by the SMTP client
619
- '5.6.9' => 'contenterror', # UTF-8 header message cannot be transferred to one or more recipients
620
- '5.7.0' => 'securityerror', # Other or undefined security status
621
- '5.7.1' => 'blocked', # Delivery not authorized, message refused
622
- '5.7.2' => 'blocked', # Mailing list expansion prohibited
623
- '5.7.3' => 'securityerror', # Security conversion required but not possible
624
- '5.7.4' => 'securityerror', # Security features not supported
625
- '5.7.5' => 'securityerror', # Cryptographic failure
626
- '5.7.6' => 'securityerror', # Cryptographic algorithm not supported
627
- '5.7.7' => 'securityerror', # Message integrity failure
628
- '5.7.8' => 'securityerror', # Authentication credentials invalid
629
- '5.7.9' => 'securityerror', # Authentication mechanism is too weak
630
- '5.7.10' => 'securityerror', # Encryption Needed
631
- '5.7.11' => 'securityerror', # Encryption required for requested authentication mechanism
632
- '5.7.13' => 'suspend', # User Account Disabled
633
- '5.7.14' => 'securityerror', # Trust relationship required
634
- '5.7.15' => 'securityerror', # Priority Level is too low
635
- '5.7.16' => 'mesgtoobig', # Message is too big for the specified priority
636
- '5.7.17' => 'hasmoved', # Mailbox owner has changed
637
- '5.7.18' => 'hasmoved', # Domain owner has changed
638
- '5.7.19' => 'securityerror', # RRVS test cannot be completed
639
- '5.7.20' => 'securityerror', # No passing DKIM signature found
640
- '5.7.21' => 'securityerror', # No acceptable DKIM signature found
641
- '5.7.22' => 'securityerror', # No valid author-matched DKIM signature found
642
- '5.7.23' => 'securityerror', # SPF validation failed
643
- '5.7.24' => 'securityerror', # SPF validation error
644
- '5.7.25' => 'blocked', # Reverse DNS validation failed
645
- '5.7.26' => 'securityerror', # Multiple authentication checks failed
646
- '5.7.27' => 'rejected', # Sender address has null MX
584
+ :'5.1.0' => 'userunknown', # Other address status
585
+ :'5.1.1' => 'userunknown', # Bad destination mailbox address
586
+ :'5.1.2' => 'hostunknown', # Bad destination system address
587
+ :'5.1.3' => 'userunknown', # Bad destination mailbox address syntax
588
+ :'5.1.4' => 'filtered', # Destination mailbox address ambiguous
589
+ :'5.1.6' => 'hasmoved', # Destination mailbox has moved, No forwarding address
590
+ :'5.1.7' => 'rejected', # Bad sender's mailbox address syntax
591
+ :'5.1.8' => 'rejected', # Bad sender's system address
592
+ :'5.1.9' => 'systemerror', # Message relayed to non-compliant mailer
593
+ :'5.1.10' => 'notaccept', # Recipient address has null MX
594
+ :'5.2.0' => 'filtered', # Other or undefined mailbox status
595
+ :'5.2.1' => 'filtered', # Mailbox disabled, not accepting messages
596
+ :'5.2.2' => 'mailboxfull', # Mailbox full
597
+ :'5.2.3' => 'exceedlimit', # Message length exceeds administrative limit
598
+ :'5.2.4' => 'filtered', # Mailing list expansion problem
599
+ :'5.3.0' => 'systemerror', # Other or undefined mail system status
600
+ :'5.3.1' => 'systemfull', # Mail system full
601
+ :'5.3.2' => 'notaccept', # System not accepting network messages
602
+ :'5.3.3' => 'systemerror', # System not capable of selected features
603
+ :'5.3.4' => 'mesgtoobig', # Message too big for system
604
+ :'5.3.5' => 'systemerror', # System incorrectly configured
605
+ :'5.4.0' => 'networkerror', # Other or undefined network or routing status
606
+ :'5.4.3' => 'systemerror', # Directory server failure
607
+ :'5.5.3' => 'toomanyconn', # Too many recipients
608
+ :'5.5.4' => 'systemerror', # Invalid command arguments
609
+ :'5.5.5' => 'systemerror', # Wrong protocol version
610
+ :'5.5.6' => 'securityerror', # Authentication Exchange line is too long
611
+ :'5.6.0' => 'contenterror', # Other or undefined media error
612
+ :'5.6.1' => 'contenterror', # Media not supported
613
+ :'5.6.2' => 'contenterror', # Conversion required and prohibited
614
+ :'5.6.3' => 'contenterror', # Conversion required but not supported
615
+ :'5.6.5' => 'contenterror', # Conversion Failed
616
+ :'5.6.6' => 'contenterror', # Message content not available
617
+ :'5.6.7' => 'contenterror', # Non-ASCII addresses not permitted for that sender/recipient
618
+ :'5.6.8' => 'contenterror', # UTF-8 string reply is required, but not permitted by the SMTP client
619
+ :'5.6.9' => 'contenterror', # UTF-8 header message cannot be transferred to one or more recipients
620
+ :'5.7.0' => 'securityerror', # Other or undefined security status
621
+ :'5.7.1' => 'blocked', # Delivery not authorized, message refused
622
+ :'5.7.2' => 'blocked', # Mailing list expansion prohibited
623
+ :'5.7.3' => 'securityerror', # Security conversion required but not possible
624
+ :'5.7.4' => 'securityerror', # Security features not supported
625
+ :'5.7.5' => 'securityerror', # Cryptographic failure
626
+ :'5.7.6' => 'securityerror', # Cryptographic algorithm not supported
627
+ :'5.7.7' => 'securityerror', # Message integrity failure
628
+ :'5.7.8' => 'securityerror', # Authentication credentials invalid
629
+ :'5.7.9' => 'securityerror', # Authentication mechanism is too weak
630
+ :'5.7.10' => 'securityerror', # Encryption Needed
631
+ :'5.7.11' => 'securityerror', # Encryption required for requested authentication mechanism
632
+ :'5.7.13' => 'suspend', # User Account Disabled
633
+ :'5.7.14' => 'securityerror', # Trust relationship required
634
+ :'5.7.15' => 'securityerror', # Priority Level is too low
635
+ :'5.7.16' => 'mesgtoobig', # Message is too big for the specified priority
636
+ :'5.7.17' => 'hasmoved', # Mailbox owner has changed
637
+ :'5.7.18' => 'hasmoved', # Domain owner has changed
638
+ :'5.7.19' => 'securityerror', # RRVS test cannot be completed
639
+ :'5.7.20' => 'securityerror', # No passing DKIM signature found
640
+ :'5.7.21' => 'securityerror', # No acceptable DKIM signature found
641
+ :'5.7.22' => 'securityerror', # No valid author-matched DKIM signature found
642
+ :'5.7.23' => 'securityerror', # SPF validation failed
643
+ :'5.7.24' => 'securityerror', # SPF validation error
644
+ :'5.7.25' => 'blocked', # Reverse DNS validation failed
645
+ :'5.7.26' => 'securityerror', # Multiple authentication checks failed
646
+ :'5.7.27' => 'rejected', # Sender address has null MX
647
647
  }
648
648
 
649
649
  InternalCode = {
650
- 'temporary' => {
651
- 'blocked' => '4.0.971',
652
- 'contenterror' => '4.0.960',
653
- # 'exceedlimit' => '4.0.923',
654
- 'expired' => '4.0.947',
655
- 'filtered' => '4.0.924',
656
- # 'hasmoved' => '4.0.916',
657
- # 'hostunknown' => '4.0.912',
658
- 'mailboxfull' => '4.0.922',
659
- # 'mailererror' => '4.0.939',
660
- # 'mesgtoobig' => '4.0.934',
661
- 'networkerror' => '4.0.944',
662
- # 'norelaying' => '4.0.909',
663
- 'notaccept' => '4.0.932',
664
- 'onhold' => '4.0.901',
665
- 'rejected' => '4.0.918',
666
- 'securityerror' => '4.0.970',
667
- 'spamdetected' => '4.0.980',
668
- # 'suspend' => '4.0.921',
669
- 'systemerror' => '4.0.930',
670
- 'systemfull' => '4.0.931',
671
- 'toomanyconn' => '4.0.945',
672
- # 'userunknown' => '4.0.911',
673
- 'undefined' => '4.0.900',
650
+ :temporary => {
651
+ :blocked => '4.0.971',
652
+ :contenterror => '4.0.960',
653
+ # :exceedlimit => '4.0.923',
654
+ :expired => '4.0.947',
655
+ :filtered => '4.0.924',
656
+ # :hasmoved => '4.0.916',
657
+ # :hostunknown => '4.0.912',
658
+ :mailboxfull => '4.0.922',
659
+ # :mailererror => '4.0.939',
660
+ # :mesgtoobig => '4.0.934',
661
+ :networkerror => '4.0.944',
662
+ # :norelaying => '4.0.909',
663
+ :notaccept => '4.0.932',
664
+ :onhold => '4.0.901',
665
+ :rejected => '4.0.918',
666
+ :securityerror => '4.0.970',
667
+ :spamdetected => '4.0.980',
668
+ # :suspend => '4.0.921',
669
+ :systemerror => '4.0.930',
670
+ :systemfull => '4.0.931',
671
+ :toomanyconn => '4.0.945',
672
+ # :userunknown => '4.0.911',
673
+ :undefined => '4.0.900',
674
674
  },
675
- 'permanent' => {
676
- 'blocked' => '5.0.971',
677
- 'contenterror' => '5.0.960',
678
- 'exceedlimit' => '5.0.923',
679
- 'expired' => '5.0.947',
680
- 'filtered' => '5.0.910',
681
- 'hasmoved' => '5.0.916',
682
- 'hostunknown' => '5.0.912',
683
- 'mailboxfull' => '5.0.922',
684
- 'mailererror' => '5.0.939',
685
- 'mesgtoobig' => '5.0.934',
686
- 'networkerror' => '5.0.944',
687
- 'norelaying' => '5.0.909',
688
- 'notaccept' => '5.0.932',
689
- 'onhold' => '5.0.901',
690
- 'rejected' => '5.0.918',
691
- 'securityerror' => '5.0.970',
692
- 'spamdetected' => '5.0.980',
693
- 'suspend' => '5.0.921',
694
- 'systemerror' => '5.0.930',
695
- 'systemfull' => '5.0.931',
696
- 'toomanyconn' => '5.0.945',
697
- 'userunknown' => '5.0.911',
698
- 'undefined' => '5.0.900',
675
+ :permanent => {
676
+ :blocked => '5.0.971',
677
+ :contenterror => '5.0.960',
678
+ :exceedlimit => '5.0.923',
679
+ :expired => '5.0.947',
680
+ :filtered => '5.0.910',
681
+ :hasmoved => '5.0.916',
682
+ :hostunknown => '5.0.912',
683
+ :mailboxfull => '5.0.922',
684
+ :mailererror => '5.0.939',
685
+ :mesgtoobig => '5.0.934',
686
+ :networkerror => '5.0.944',
687
+ :norelaying => '5.0.909',
688
+ :notaccept => '5.0.932',
689
+ :onhold => '5.0.901',
690
+ :rejected => '5.0.918',
691
+ :securityerror => '5.0.970',
692
+ :spamdetected => '5.0.980',
693
+ :suspend => '5.0.921',
694
+ :systemerror => '5.0.930',
695
+ :systemfull => '5.0.931',
696
+ :syntaxerror => '5.0.902',
697
+ :toomanyconn => '5.0.945',
698
+ :userunknown => '5.0.911',
699
+ :undefined => '5.0.900',
699
700
  },
700
701
  }
701
702
 
@@ -709,8 +710,8 @@ module Sisimai
709
710
  return '' unless argv1
710
711
  return '' unless argv1.size > 0
711
712
 
712
- table = argv2 ? InternalCode['temporary'] : InternalCode['permanent']
713
- code0 = table[argv1] || InternalCode['permanent'][argv1] || ''
713
+ table = argv2 ? InternalCode[:temporary] : InternalCode[:permanent]
714
+ code0 = table[argv1.to_sym] || InternalCode[:permanent][argv1.to_sym] || ''
714
715
  return code0
715
716
  end
716
717
 
@@ -723,7 +724,7 @@ module Sisimai
723
724
  return '' unless argv1
724
725
  return '' unless argv1.size > 0
725
726
  return '' unless argv1 =~ /\A[245][.]\d[.]\d+\z/
726
- return StandardCode[argv1] || ''
727
+ return StandardCode[argv1.to_sym] || ''
727
728
  end
728
729
 
729
730
  # Get a DSN code value from given string including DSN
@@ -751,6 +752,7 @@ module Sisimai
751
752
 
752
753
  return foundvalue
753
754
  end
755
+
754
756
  end
755
757
  end
756
758
  end
@@ -52,9 +52,8 @@ module Sisimai
52
52
 
53
53
  argv1 = argv1.chomp
54
54
  argv1 = argv1.squeeze(' ')
55
- argv1 = argv1.gsub(/\t/, '')
56
- argv1 = argv1.gsub(/\A /, '')
57
- argv1 = argv1.gsub(/ \z/, '')
55
+ argv1 = argv1.delete("\t")
56
+ argv1 = argv1.gsub(/\A /, '').gsub(/ \z/, '')
58
57
  argv1 = argv1.sub(/ [-]{2,}[^ \t].+\z/, '')
59
58
 
60
59
  return argv1
@@ -1,4 +1,4 @@
1
1
  # Define the version number of Sisimai
2
2
  module Sisimai
3
- VERSION = '4.16.0'
3
+ VERSION = '4.17.0'
4
4
  end
@@ -0,0 +1,60 @@
1
+ eturn-path: <>
2
+ Envelope-to: sironeko@example.org
3
+ Delivery-date: Thu, 29 Apr 2012 23:34:45 +0100
4
+ From: postmaster@example.com
5
+ To: nekochan@example.com
6
+ Date: Thu, 2 Apr 2012 23:34:45 +0900
7
+ MIME-Version: 1.0
8
+ Content-Type: multipart/report; report-type=delivery-status;
9
+ boundary="FFFFFFFF.00000222.EEFFEEE"
10
+ Message-ID: <neko22222@nyaan.neko.example.com>
11
+ Subject: Delivery Status Notification (Failure)
12
+ X-OriginalArrivalTime: 29 Apr 2012 23:34:45.0273 (UTC)
13
+
14
+ This is a MIME-formatted message.
15
+ Portions of this message may be unreadable without a MIME-capable mail
16
+ program.
17
+
18
+ --FFFFFFFF.00000222.EEFFEEE
19
+ Content-Type: text/plain; charset=unicode-1-1-utf-7
20
+
21
+ This is an automatically generated Delivery Status Notification.
22
+
23
+ Delivery to the following recipients failed.
24
+
25
+ kijitora@example.com
26
+
27
+
28
+
29
+
30
+ --FFFFFFFF.00000222.EEFFEEE
31
+ Content-Type: message/delivery-status
32
+
33
+ Reporting-MTA: dns;nyaan.neko.example.com
34
+ Received-From-MTA: dns;example.org
35
+ Arrival-Date: Thu, 2 Apr 2012 23:34:45 +0900
36
+
37
+ Final-Recipient: rfc822;kijitora@example.com
38
+ Action: failed
39
+ Status: 5.5.0
40
+ Diagnostic-Code: smtp;503 Improper sequence of commands
41
+
42
+ --FFFFFFFF.00000222.EEFFEEE
43
+ Content-Type: message/rfc822
44
+
45
+ To: kijitora@example.com
46
+ Subject: Nyaan
47
+ From: Sironenko <sironeko@example.com>
48
+ Content-Type: text/plain; charset=iso-8859-1
49
+ MIME-Version: 1.0
50
+ Content-Transfer-Encoding: 8bit
51
+ Precedence: bulk
52
+ Message-Id: <neko-nyaan-cats@example.org>
53
+ Date: Thu, 29 Apr 2012 23:34:45 +0100
54
+ Return-Path: nekochan@example.com
55
+ X-OriginalArrivalTime: 29 Apr 2012 23:34:45.0547 (UTC)
56
+
57
+ Nyaan
58
+
59
+ --FFFFFFFF.00000222.EEFFEEE--
60
+
@@ -0,0 +1,156 @@
1
+ Return-Path: <>
2
+ Received: from a27-6.smtp-out.us-west-2.amazonses.com
3
+ (a27-6.smtp-out.us-west-2.amazonses.com [54.240.27.6]) by
4
+ inbound-smtp.us-west-2.amazonaws.com with SMTP id
5
+ 090kjjcmrusqn64c1juca10jqgqlluo3nqe0uc81 for ak@nyaan.awsapps.com; Mon, 29
6
+ Feb 2016 18:04:12 +0000
7
+ Received-SPF: none (spfCheck: 54.240.27.6 is neither permitted nor denied by
8
+ domain of a27-6.smtp-out.us-west-2.amazonses.com) client-ip=54.240.27.6;
9
+ envelope-from=postmaster@a27-6.smtp-out.us-west-2.amazonses.com;
10
+ helo=a27-6.smtp-out.us-west-2.amazonses.com;
11
+ Subject: =?iso-8859-15?Q?Delivery_Status_Notification_=28Failure=29?=
12
+ From: MAILER-DAEMON@us-west-2.amazonses.com
13
+ To: =?iso-8859-15?Q?azumakuniyuki?= <ak@nyaan.awsapps.com>
14
+ Date: Mon, 29 Feb 2016 18:04:11 +0000
15
+ Mime-Version: 1.0
16
+ Content-Type: multipart/mixed;
17
+ boundary="=_KA8Rj1PuBApEAMkjYZsMAnd7ZKC7clQck2E2diTvXjdLZGGg"
18
+ X-Mailer: Amazon WorkMail
19
+ X-Ses-Outgoing: 2016.02.29-54.240.27.6
20
+ Message-Id:
21
+ <010101532e33aa52-a750d864-7ff8-4a2a-97e9-6414dc572d36-000000@us-west-2.amazonses.com>
22
+
23
+ This is a multi-part message in MIME format. Your mail reader does not
24
+ understand MIME message format.
25
+ --=_KA8Rj1PuBApEAMkjYZsMAnd7ZKC7clQck2E2diTvXjdLZGGg
26
+ Content-Type: text/plain; charset=iso-8859-15
27
+ Content-Transfer-Encoding: quoted-printable
28
+
29
+ An error occurred while trying to deliver the mail to the following recip=
30
+ ients:
31
+ mailboxfull@bouncehammer.jp
32
+
33
+ Technical report:
34
+
35
+ Reporting-MTA=
36
+ : dsn; a27-125.smtp-out.us-west-2.amazonses.com
37
+
38
+ Action: failed
39
+ Final-=
40
+ Recipient: rfc822; mailboxfull@bouncehammer.jp
41
+ Diagnostic-Code: smtp; 55=
42
+ 0 5.2.2 <mailboxfull@bouncehammer.jp>... Mailbox Full
43
+ Status: 5.2.2
44
+
45
+
46
+ --=_KA8Rj1PuBApEAMkjYZsMAnd7ZKC7clQck2E2diTvXjdLZGGg
47
+ Content-Type: message/rfc822
48
+ Content-Disposition: attachment
49
+
50
+ Subject: Nyaan
51
+ From: =?utf-8?Q?azumakuniyuki?= <ak@nyaan.awsapps.com>
52
+ To: =?utf-8?Q?mailboxfull=40bouncehammer=2Ejp?= <mailboxfull@bouncehammer.jp>
53
+ Date: Mon, 29 Feb 2016 18:04:09 +0000
54
+ Mime-Version: 1.0
55
+ Content-Type: multipart/alternative;
56
+ boundary="=_KA8Rp2qxgPFYNKh5T5gPxKO67slPhO83ne8U1WOTDsxpO5wu"
57
+ Message-Id:
58
+ <010101532e33a516-7bf47ce2-745e-436a-977d-b95d518e0cbc-000000@us-west-2.amazonses.com>
59
+ X-Priority: 3 (Normal)
60
+ X-Mailer: Amazon WorkMail
61
+ X-Original-Mailer: Amazon WorkMail
62
+ X-Ses-Outgoing: 2016.02.29-54.240.27.125
63
+
64
+ This is a multi-part message in MIME format. Your mail reader does not
65
+ understand MIME message format.
66
+ --=_KA8Rp2qxgPFYNKh5T5gPxKO67slPhO83ne8U1WOTDsxpO5wu
67
+ Content-Type: text/plain; charset=utf-8
68
+ Content-Transfer-Encoding: 7bit
69
+
70
+ Leap year
71
+ --=_KA8Rp2qxgPFYNKh5T5gPxKO67slPhO83ne8U1WOTDsxpO5wu
72
+ Content-Type: text/html; charset=utf-8
73
+ Content-Transfer-Encoding: 7bit
74
+
75
+ <!DOCTYPE HTML><html>
76
+ <head>
77
+ <meta name="Generator" content="Amazon WorkMail v3.0-2047">
78
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
79
+ <title>Nyaan</title>
80
+ </head>
81
+ <body>
82
+ <font face="Arial, Tahoma, Helvetica, sans-serif" size="2">Leap year</font>
83
+ </body>
84
+ </html>
85
+ --=_KA8Rp2qxgPFYNKh5T5gPxKO67slPhO83ne8U1WOTDsxpO5wu--
86
+
87
+ --=_KA8Rj1PuBApEAMkjYZsMAnd7ZKC7clQck2E2diTvXjdLZGGg
88
+ Content-Type: application/ms-tnef; name=winmail.dat
89
+ Content-Transfer-Encoding: base64
90
+ Content-Disposition: attachment; filename=winmail.dat
91
+
92
+ eJ8+IgAAAQOQBgBMDQAAJwAAAAMAFw4AAAAAAwAPNP0/BQAUAEtmAgDWHQUABgAUAEhnAQAA
93
+ AAAAAAkUAEpnAQAAAAAAAH4UAKRnAQAAAAAAANECAcJnAQAAABAAAADdICKau0tGUbpO/TRr
94
+ a8DfHwAIhQjx9QA/jsdGr3JeIBwjSecAAAAAAQAAAAEAAAAMAwAAIgBNAG8AbgAsACAAMgA5
95
+ ACAARgBlAGIAIAAyADAAMQA2ACAAMQA4ADoAMAA0ADoAMQAxACAAKwAwADAAMAAwACIAIAAi
96
+ AEQAZQBsAGkAdgBlAHIAeQAgAFMAdABhAHQAdQBzACAATgBvAHQAaQBmAGkAYwBhAHQAaQBv
97
+ AG4AIAAoAEYAYQBpAGwAdQByAGUAKQAiACAAKAAoAE4ASQBMACAATgBJAEwAIAAiAE0AQQBJ
98
+ AEwARQBSAC0ARABBAEUATQBPAE4AIgAgACIAdQBzAC0AdwBlAHMAdAAtADIALgBhAG0AYQB6
99
+ AG8AbgBzAGUAcwAuAGMAbwBtACIAKQApACAAKAAoAE4ASQBMACAATgBJAEwAIAAiAE0AQQBJ
100
+ AEwARQBSAC0ARABBAEUATQBPAE4AIgAgACIAdQBzAC0AdwBlAHMAdAAtADIALgBhAG0AYQB6
101
+ AG8AbgBzAGUAcwAuAGMAbwBtACIAKQApACAAKAAoAE4ASQBMACAATgBJAEwAIAAiAE0AQQBJ
102
+ AEwARQBSAC0ARABBAEUATQBPAE4AIgAgACIAdQBzAC0AdwBlAHMAdAAtADIALgBhAG0AYQB6
103
+ AG8AbgBzAGUAcwAuAGMAbwBtACIAKQApACAAKAAoACIAYQB6AHUAbQBhAGsAdQBuAGkAeQB1
104
+ AGsAaQAiACAATgBJAEwAIAAiAGEAawAiACAAIgBuAHkAYQBhAG4ALgBhAHcAcwBhAHAAcABz
105
+ AC4AYwBvAG0AIgApACkAIABOAEkATAAgAE4ASQBMACAATgBJAEwAIAAiAA0ACgAgADwAMAAx
106
+ ADAAMQAwADEANQAzADIAZQAzADMAYQBhADUAMgAtAGEANwA1ADAAZAA4ADYANAAtADcAZgBm
107
+ ADgALQA0AGEAMgBhAC0AOQA3AGUAOQAtADYANAAxADQAZABjADUANwAyAGQAMwA2AC0AMAAw
108
+ ADAAMAAwADAAQAB1AHMALQB3AGUAcwB0AC0AMgAuAGEAbQBhAHoAbwBuAHMAZQBzAC4AYwBv
109
+ AG0APgAiAAAAHwALhYYDAgAAAAAAwAAAAAAAAEYBAAAAHgAAAHgALQBzAGUAcwAtAG8AdQB0
110
+ AGcAbwBpAG4AZwAAAAAAAQAAAC4AAAAyADAAMQA2AC4AMAAyAC4AMgA5AC0ANQA0AC4AMgA0
111
+ ADAALgAyADcALgA2AAAAAAAfABoAAQAAACgAAABSAEUAUABPAFIAVAAuAEkAUABNAC4ATgBv
112
+ AHQAZQAuAE4ARABSAAAAAgE/AAEAAACUAAAAAAAAANynQMjAQhAatLkIACsv4YIBAAAAAAAA
113
+ AC9PPW0tYTA5NTVjNDZmMDA1NDMwMjhjMzM3NjFmZmQ5ZjdiYjMvT1U9QW1hem9uIFdvcmtN
114
+ YWlsL0NOPVJlY2lwaWVudHMvQ049Uy0xLTUtMjEtMzExMjY2NDk5OC0zNTIzNjc0NDUxLTMz
115
+ MTgxODA5Ny0xMTA4AB8AQAABAAAAHAAAAGEAegB1AG0AYQBrAHUAbgBpAHkAdQBrAGkAAAAf
116
+ AEkAAQAAAAwAAABOAHkAYQBhAG4AAABAAE4AgDIZlhtz0QECAVEAAQAAAHsAAABFWDovTz1N
117
+ LUEwOTU1QzQ2RjAwNTQzMDI4QzMzNzYxRkZEOUY3QkIzL09VPUFNQVpPTiBXT1JLTUFJTC9D
118
+ Tj1SRUNJUElFTlRTL0NOPVMtMS01LTIxLTMxMTI2NjQ5OTgtMzUyMzY3NDQ1MS0zMzE4MTgw
119
+ OTctMTEwOAAACwBXAAEAAAALAFgAAAAAAAsAWQABAAAAHwBaAAEAAAAcAAAAYQB6AHUAbQBh
120
+ AGsAdQBuAGkAeQB1AGsAaQAAAAIBWwABAAAAlAAAAAAAAADcp0DIwEIQGrS5CAArL+GCAQAA
121
+ AAAAAAAvTz1tLWEwOTU1YzQ2ZjAwNTQzMDI4YzMzNzYxZmZkOWY3YmIzL09VPUFtYXpvbiBX
122
+ b3JrTWFpbC9DTj1SZWNpcGllbnRzL0NOPVMtMS01LTIxLTMxMTI2NjQ5OTgtMzUyMzY3NDQ1
123
+ MS0zMzE4MTgwOTctMTEwOAACAVwAAQAAAHsAAABFWDovTz1NLUEwOTU1QzQ2RjAwNTQzMDI4
124
+ QzMzNzYxRkZEOUY3QkIzL09VPUFNQVpPTiBXT1JLTUFJTC9DTj1SRUNJUElFTlRTL0NOPVMt
125
+ MS01LTIxLTMxMTI2NjQ5OTgtMzUyMzY3NDQ1MS0zMzE4MTgwOTctMTEwOAAAHwBdAAEAAAAc
126
+ AAAAYQB6AHUAbQBhAGsAdQBuAGkAeQB1AGsAaQAAAAIBXgABAAAAlAAAAAAAAADcp0DIwEIQ
127
+ GrS5CAArL+GCAQAAAAAAAAAvTz1tLWEwOTU1YzQ2ZjAwNTQzMDI4YzMzNzYxZmZkOWY3YmIz
128
+ L09VPUFtYXpvbiBXb3JrTWFpbC9DTj1SZWNpcGllbnRzL0NOPVMtMS01LTIxLTMxMTI2NjQ5
129
+ OTgtMzUyMzY3NDQ1MS0zMzE4MTgwOTctMTEwOAACAV8AAQAAAHsAAABFWDovTz1NLUEwOTU1
130
+ QzQ2RjAwNTQzMDI4QzMzNzYxRkZEOUY3QkIzL09VPUFNQVpPTiBXT1JLTUFJTC9DTj1SRUNJ
131
+ UElFTlRTL0NOPVMtMS01LTIxLTMxMTI2NjQ5OTgtMzUyMzY3NDQ1MS0zMzE4MTgwOTctMTEw
132
+ OAAAHwBmAAEAAAAGAAAARQBYAAAAAAAfAGcAAQAAAPAAAAAvAE8APQBtAC0AYQAwADkANQA1
133
+ AGMANAA2AGYAMAAwADUANAAzADAAMgA4AGMAMwAzADcANgAxAGYAZgBkADkAZgA3AGIAYgAz
134
+ AC8ATwBVAD0AQQBtAGEAegBvAG4AIABXAG8AcgBrAE0AYQBpAGwALwBDAE4APQBSAGUAYwBp
135
+ AHAAaQBlAG4AdABzAC8AQwBOAD0AUwAtADEALQA1AC0AMgAxAC0AMwAxADEAMgA2ADYANAA5
136
+ ADkAOAAtADMANQAyADMANgA3ADQANAA1ADEALQAzADMAMQA4ADEAOAAwADkANwAtADEAMQAw
137
+ ADgAAAAfAGgAAQAAAAYAAABFAFgAAAAAAB8AaQABAAAA8AAAAC8ATwA9AG0ALQBhADAAOQA1
138
+ ADUAYwA0ADYAZgAwADAANQA0ADMAMAAyADgAYwAzADMANwA2ADEAZgBmAGQAOQBmADcAYgBi
139
+ ADMALwBPAFUAPQBBAG0AYQB6AG8AbgAgAFcAbwByAGsATQBhAGkAbAAvAEMATgA9AFIAZQBj
140
+ AGkAcABpAGUAbgB0AHMALwBDAE4APQBTAC0AMQAtADUALQAyADEALQAzADEAMQAyADYANgA0
141
+ ADkAOQA4AC0AMwA1ADIAMwA2ADcANAA0ADUAMQAtADMAMwAxADgAMQA4ADAAOQA3AC0AMQAx
142
+ ADAAOAAAAB8AcAABAAAATgAAAEQAZQBsAGkAdgBlAHIAeQAgAFMAdABhAHQAdQBzACAATgBv
143
+ AHQAaQBmAGkAYwBhAHQAaQBvAG4AIAAoAEYAYQBpAGwAdQByAGUAKQAAAAAAHwByAAEAAAAC
144
+ AAAAAAAAAB8AcwABAAAAAgAAAAAAAAAfAHQAAQAAADgAAABtAGEAaQBsAGIAbwB4AGYAdQBs
145
+ AGwAQABiAG8AdQBuAGMAZQBoAGEAbQBtAGUAcgAuAGoAcAAAAB8AdQABAAAABgAAAEUAWAAA
146
+ AAAAHwB2AAEAAADwAAAALwBPAD0AbQAtAGEAMAA5ADUANQBjADQANgBmADAAMAA1ADQAMwAw
147
+ ADIAOABjADMAMwA3ADYAMQBmAGYAZAA5AGYANwBiAGIAMwAvAE8AVQA9AEEAbQBhAHoAbwBu
148
+ ACAAVwBvAHIAawBNAGEAaQBsAC8AQwBOAD0AUgBlAGMAaQBwAGkAZQBuAHQAcwAvAEMATgA9
149
+ AFMALQAxAC0ANQAtADIAMQAtADMAMQAxADIANgA2ADQAOQA5ADgALQAzADUAMgAzADYANwA0
150
+ ADQANQAxAC0AMwAzADEAOAAxADgAMAA5ADcALQAxADEAMAA4AAAAHwA1EAEAAACuAAAAPAAw
151
+ ADEAMAAxADAAMQA1ADMAMgBlADMAMwBhAGEANQAyAC0AYQA3ADUAMABkADgANgA0AC0ANwBm
152
+ AGYAOAAtADQAYQAyAGEALQA5ADcAZQA5AC0ANgA0ADEANABkAGMANQA3ADIAZAAzADYALQAw
153
+ ADAAMAAwADAAMABAAHUAcwAtAHcAZQBzAHQALQAyAC4AYQBtAGEAegBvAG4AcwBlAHMALgBj
154
+ AG8AbQA+AAAAAAACARQ6AQAAABAAAAAe+fyfYUZJ2YrHAk720VqbAwDeP71vAABAAIZnAIDf
155
+ IYRy0QFAAIdnAIDfIYRy0QFVMg==
156
+ --=_KA8Rj1PuBApEAMkjYZsMAnd7ZKC7clQck2E2diTvXjdLZGGg--