sisimai 5.0.3-java → 5.1.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/codecovio.yml +3 -1
- data/.github/workflows/rake-test.yml +6 -2
- data/ChangeLog.md +34 -0
- data/README-JA.md +20 -17
- data/README.md +20 -17
- data/lib/sisimai/arf.rb +3 -3
- data/lib/sisimai/fact/json.rb +2 -2
- data/lib/sisimai/fact/yaml.rb +2 -2
- data/lib/sisimai/fact.rb +4 -19
- data/lib/sisimai/lhost/activehunter.rb +4 -3
- data/lib/sisimai/lhost/amavis.rb +4 -4
- data/lib/sisimai/lhost/amazonses.rb +6 -6
- data/lib/sisimai/lhost/amazonworkmail.rb +4 -4
- data/lib/sisimai/lhost/aol.rb +4 -4
- data/lib/sisimai/lhost/apachejames.rb +4 -4
- data/lib/sisimai/lhost/barracuda.rb +4 -4
- data/lib/sisimai/lhost/bigfoot.rb +4 -4
- data/lib/sisimai/lhost/biglobe.rb +4 -4
- data/lib/sisimai/lhost/courier.rb +4 -4
- data/lib/sisimai/lhost/domino.rb +4 -4
- data/lib/sisimai/lhost/dragonfly.rb +114 -0
- data/lib/sisimai/lhost/einsundeins.rb +4 -4
- data/lib/sisimai/lhost/exchange2003.rb +4 -3
- data/lib/sisimai/lhost/exchange2007.rb +4 -3
- data/lib/sisimai/lhost/exim.rb +4 -4
- data/lib/sisimai/lhost/ezweb.rb +4 -4
- data/lib/sisimai/lhost/facebook.rb +4 -4
- data/lib/sisimai/lhost/fml.rb +4 -4
- data/lib/sisimai/lhost/gmail.rb +4 -4
- data/lib/sisimai/lhost/gmx.rb +4 -4
- data/lib/sisimai/lhost/googlegroups.rb +4 -4
- data/lib/sisimai/lhost/gsuite.rb +4 -4
- data/lib/sisimai/lhost/imailserver.rb +4 -3
- data/lib/sisimai/lhost/interscanmss.rb +5 -4
- data/lib/sisimai/lhost/kddi.rb +4 -4
- data/lib/sisimai/lhost/mailfoundry.rb +4 -4
- data/lib/sisimai/lhost/mailmarshalsmtp.rb +5 -4
- data/lib/sisimai/lhost/mailru.rb +4 -4
- data/lib/sisimai/lhost/mcafee.rb +4 -4
- data/lib/sisimai/lhost/messagelabs.rb +4 -3
- data/lib/sisimai/lhost/messagingserver.rb +5 -4
- data/lib/sisimai/lhost/mfilter.rb +4 -4
- data/lib/sisimai/lhost/mxlogic.rb +3 -3
- data/lib/sisimai/lhost/notes.rb +4 -4
- data/lib/sisimai/lhost/office365.rb +4 -4
- data/lib/sisimai/lhost/opensmtpd.rb +9 -7
- data/lib/sisimai/lhost/outlook.rb +4 -4
- data/lib/sisimai/lhost/postfix.rb +4 -4
- data/lib/sisimai/lhost/powermta.rb +4 -4
- data/lib/sisimai/lhost/qmail.rb +10 -10
- data/lib/sisimai/lhost/receivingses.rb +4 -4
- data/lib/sisimai/lhost/sendgrid.rb +4 -4
- data/lib/sisimai/lhost/sendmail.rb +4 -4
- data/lib/sisimai/lhost/surfcontrol.rb +4 -4
- data/lib/sisimai/lhost/v5sendmail.rb +5 -4
- data/lib/sisimai/lhost/verizon.rb +4 -4
- data/lib/sisimai/lhost/x1.rb +3 -3
- data/lib/sisimai/lhost/x2.rb +3 -3
- data/lib/sisimai/lhost/x3.rb +3 -3
- data/lib/sisimai/lhost/x4.rb +3 -3
- data/lib/sisimai/lhost/x5.rb +3 -3
- data/lib/sisimai/lhost/x6.rb +3 -3
- data/lib/sisimai/lhost/yahoo.rb +4 -4
- data/lib/sisimai/lhost/yandex.rb +4 -4
- data/lib/sisimai/lhost/zoho.rb +4 -4
- data/lib/sisimai/lhost.rb +5 -5
- data/lib/sisimai/mail/maildir.rb +1 -1
- data/lib/sisimai/mail/stdin.rb +1 -1
- data/lib/sisimai/mda.rb +3 -3
- data/lib/sisimai/message.rb +8 -8
- data/lib/sisimai/order.rb +1 -0
- data/lib/sisimai/reason/badreputation.rb +1 -1
- data/lib/sisimai/reason/norelaying.rb +1 -0
- data/lib/sisimai/reason/rejected.rb +1 -0
- data/lib/sisimai/reason.rb +8 -8
- data/lib/sisimai/rfc3464.rb +3 -3
- data/lib/sisimai/rfc3834.rb +2 -2
- data/lib/sisimai/rhost/apple.rb +92 -0
- data/lib/sisimai/rhost/cox.rb +81 -32
- data/lib/sisimai/rhost/franceptt.rb +84 -81
- data/lib/sisimai/rhost/godaddy.rb +205 -43
- data/lib/sisimai/rhost/google.rb +3 -5
- data/lib/sisimai/rhost/iua.rb +2 -2
- data/lib/sisimai/rhost/kddi.rb +6 -5
- data/lib/sisimai/rhost/microsoft.rb +4 -5
- data/lib/sisimai/rhost/mimecast.rb +15 -4
- data/lib/sisimai/rhost/nttdocomo.rb +1 -1
- data/lib/sisimai/rhost/spectrum.rb +100 -40
- data/lib/sisimai/rhost/tencent.rb +46 -25
- data/lib/sisimai/rhost/yahooinc.rb +110 -0
- data/lib/sisimai/rhost.rb +28 -35
- data/lib/sisimai/smtp/reply.rb +4 -3
- data/lib/sisimai/smtp/transcript.rb +3 -3
- data/lib/sisimai/version.rb +1 -1
- data/lib/sisimai.rb +0 -6
- data/set-of-emails/maildir/bsd/lhost-dragonfly-01.eml +36 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-02.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-03.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-04.eml +31 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-05.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-06.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-07.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-08.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-09.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-10.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-11.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-12.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-13.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-14.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-15.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-16.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-17.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-18.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-19.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-20.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-21.eml +33 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-22.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-23.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-24.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-25.eml +33 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-26.eml +33 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-27.eml +47 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-28.eml +47 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-29.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-dragonfly-30.eml +32 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-10.eml +58 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-11.eml +58 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-12.eml +62 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-13.eml +62 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-14.eml +58 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-15.eml +63 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-16.eml +62 -0
- data/set-of-emails/maildir/bsd/lhost-opensmtpd-17.eml +63 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-11.eml +29 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-12.eml +29 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-13.eml +29 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-14.eml +34 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-15.eml +30 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-16.eml +31 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-17.eml +38 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-18.eml +31 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-19.eml +31 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-20.eml +46 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-21.eml +41 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-22.eml +42 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-23.eml +43 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-24.eml +43 -0
- data/set-of-emails/maildir/bsd/lhost-qmail-25.eml +54 -0
- data/set-of-emails/maildir/bsd/rhost-apple-01.eml +79 -0
- data/set-of-emails/maildir/bsd/rhost-apple-02.eml +81 -0
- data/set-of-emails/maildir/bsd/rhost-apple-03.eml +75 -0
- data/set-of-emails/maildir/bsd/rhost-apple-04.eml +74 -0
- data/set-of-emails/maildir/bsd/rhost-yahooinc-01.eml +80 -0
- data/set-of-emails/maildir/bsd/rhost-yahooinc-02.eml +83 -0
- data/set-of-emails/maildir/bsd/rhost-yahooinc-03.eml +125 -0
- metadata +65 -2
@@ -6,144 +6,147 @@ module Sisimai
|
|
6
6
|
module FrancePTT
|
7
7
|
class << self
|
8
8
|
ErrorCodes = {
|
9
|
-
# 550 5.7.1 Service unavailable; client [
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
9
|
+
# - 550 5.7.1 Service unavailable; client [192.0.2.1] blocked using Spamhaus
|
10
|
+
# Les emails envoyes vers la messagerie Laposte.net ont ete bloques par nos services.
|
11
|
+
# Afin de regulariser votre situation, nous vous invitons a cliquer sur le lien ci-dessous
|
12
|
+
# et a suivre la procedure.
|
13
|
+
# - The emails sent to the mail host Laposte.net were blocked by our services. To regularize
|
14
|
+
# your situation please click on the link below and follow the procedure
|
15
|
+
# https://www.spamhaus.org/lookup/ LPNAAA_101 (in reply to RCPT TO command))
|
15
16
|
'101' => 'blocked',
|
16
17
|
|
17
|
-
# 550 mwinf5c04 ME Adresse IP source bloquee pour incident de spam.
|
18
|
-
# Client host blocked for spamming issues. OFR006_102 Ref
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# The emails sent to the mail host Laposte.net were blocked by our services.
|
23
|
-
#
|
24
|
-
#
|
18
|
+
# - 550 mwinf5c04 ME Adresse IP source bloquee pour incident de spam.
|
19
|
+
# - Client host blocked for spamming issues. OFR006_102 Ref http://csi.cloudmark.com ...
|
20
|
+
# - 550 5.5.0 Les emails envoyes vers la messagerie Laposte.net ont ete bloques par nos
|
21
|
+
# services. Afin de regulariser votre situation, nous vous invitons a cliquer sur le lien
|
22
|
+
# ci-dessous et a suivre la procedure.
|
23
|
+
# - The emails sent to the mail host Laposte.net were blocked by our services. To regularize
|
24
|
+
# your situation please click on the link below and follow the procedure
|
25
|
+
# https://senderscore.org/blacklistlookup/ LPN007_102
|
25
26
|
'102' => 'blocked',
|
26
27
|
|
27
|
-
#
|
28
|
-
# Service refused, please try later. OFR006_103
|
28
|
+
# - 550 mwinf5c10 ME Service refuse. Veuillez essayer plus tard.
|
29
|
+
# - Service refused, please try later. OFR006_103 192.0.2.1 [103]
|
29
30
|
'103' => 'blocked',
|
30
31
|
|
31
|
-
#
|
32
|
-
# Too many connections, slow down. OFR005_104 [104]
|
33
|
-
# Too many connections, slow down. LPN105_104
|
32
|
+
# - 421 mwinf5c79 ME Trop de connexions, veuillez verifier votre configuration.
|
33
|
+
# - Too many connections, slow down. OFR005_104 [104]
|
34
|
+
# - Too many connections, slow down. LPN105_104
|
34
35
|
'104' => 'toomanyconn',
|
35
36
|
|
36
|
-
# Veuillez essayer plus tard.
|
37
|
-
'
|
37
|
+
'105' => nil, # Veuillez essayer plus tard.
|
38
|
+
'107' => nil, # Service refused, please try later. LPN006_107
|
39
|
+
'108' => nil, # service refused, please try later. LPN001_108
|
40
|
+
'109' => nil, # Veuillez essayer plus tard. LPN003_109
|
41
|
+
'201' => nil, # Veuillez essayer plus tard. OFR004_201
|
38
42
|
|
39
|
-
#
|
40
|
-
# Service refused, please try later. LPN006_107)
|
41
|
-
'107' => nil,
|
42
|
-
|
43
|
-
# refused to talk to me: 550 5.5.0 Service refuse. Veuillez essayer plus tard.
|
44
|
-
# service refused, please try later. LPN001_108
|
45
|
-
'108' => nil,
|
46
|
-
|
47
|
-
# Veuillez essayer plus tard. LPN003_109
|
48
|
-
'109' => nil,
|
49
|
-
|
50
|
-
# Veuillez essayer plus tard. OFR004_201
|
51
|
-
'201' => nil,
|
52
|
-
|
53
|
-
# 550 5.7.0 Code d'authentification invalide OFR_305
|
43
|
+
# - 550 5.7.0 Code d'authentification invalide OFR_305
|
54
44
|
'305' => 'securityerror',
|
55
45
|
|
56
|
-
# 550 5.5.0 SPF: *** is not allowed to send mail. LPN004_401
|
57
|
-
'401' => '
|
46
|
+
# - 550 5.5.0 SPF: *** is not allowed to send mail. LPN004_401
|
47
|
+
'401' => 'authfailure',
|
58
48
|
|
59
|
-
# 550 5.5.0 Authentification requise. Authentication Required. LPN105_402
|
49
|
+
# - 550 5.5.0 Authentification requise. Authentication Required. LPN105_402
|
60
50
|
'402' => 'securityerror',
|
61
51
|
|
62
|
-
# 5.0.1 Emetteur invalide. Invalid Sender.
|
52
|
+
# - 5.0.1 Emetteur invalide. Invalid Sender.
|
63
53
|
'403' => 'rejected',
|
64
54
|
|
65
|
-
# 5.0.1 Emetteur invalide. Invalid Sender. LPN105_405
|
66
|
-
# 501 5.1.0 Emetteur invalide. Invalid Sender. OFR004_405 [405] (in reply to MAIL FROM command))
|
55
|
+
# - 5.0.1 Emetteur invalide. Invalid Sender. LPN105_405
|
56
|
+
# - 501 5.1.0 Emetteur invalide. Invalid Sender. OFR004_405 [405] (in reply to MAIL FROM command))
|
67
57
|
'405' => 'rejected',
|
68
58
|
|
69
59
|
# Emetteur invalide. Invalid Sender. OFR_415
|
70
60
|
'415' => 'rejected',
|
71
61
|
|
72
|
-
# 550 5.1.1 Adresse d au moins un destinataire invalide.
|
73
|
-
# Invalid recipient. LPN416 (in reply to RCPT TO command)
|
74
|
-
# Invalid recipient. OFR_416 [416] (in reply to RCPT TO command)
|
62
|
+
# - 550 5.1.1 Adresse d au moins un destinataire invalide.
|
63
|
+
# - Invalid recipient. LPN416 (in reply to RCPT TO command)
|
64
|
+
# - Invalid recipient. OFR_416 [416] (in reply to RCPT TO command)
|
75
65
|
'416' => 'userunknown',
|
76
66
|
|
77
|
-
# 552 5.1.1 Boite du destinataire pleine.
|
78
|
-
# Recipient overquota. OFR_417 [417] (in reply to RCPT TO command))
|
67
|
+
# - 552 5.1.1 Boite du destinataire pleine.
|
68
|
+
# - Recipient overquota. OFR_417 [417] (in reply to RCPT TO command))
|
79
69
|
'417' => 'mailboxfull',
|
80
70
|
|
81
|
-
# Adresse d au moins un destinataire invalide
|
82
|
-
'418' => 'userunknown',
|
71
|
+
# - Adresse d au moins un destinataire invalide
|
83
72
|
|
84
|
-
# 550 5.5.0 Boite du destinataire archivee.
|
85
|
-
# Archived recipient. LPN007_420 (in reply to RCPT TO command)
|
73
|
+
# - 550 5.5.0 Boite du destinataire archivee.
|
74
|
+
# - Archived recipient. LPN007_420 (in reply to RCPT TO command)
|
86
75
|
'420' => 'suspend',
|
87
76
|
|
88
|
-
# 5.5.3 Mail from not owned by user. LPN105_421.
|
77
|
+
# - 5.5.3 Mail from not owned by user. LPN105_421.
|
89
78
|
'421' => 'rejected',
|
90
79
|
|
91
|
-
# Service refused, please try later. LPN105_423
|
92
|
-
'
|
80
|
+
'423' => nil, # Service refused, please try later. LPN105_423
|
81
|
+
'424' => nil, # Veuillez essayer plus tard. LPN105_424
|
93
82
|
|
94
|
-
#
|
95
|
-
|
96
|
-
|
97
|
-
# 550 5.5.0 Le compte du destinataire est bloque. The recipient account isblocked. LPN007_426 (in reply to RCPT TO command)
|
83
|
+
# - 550 5.5.0 Le compte du destinataire est bloque. The recipient account isblocked.
|
84
|
+
# LPN007_426 (in reply to RCPT TO command)
|
98
85
|
'426' => 'suspend',
|
99
86
|
|
100
|
-
# 421 4.2.0 Service refuse. Veuillez essayer plus tard.
|
101
|
-
#
|
102
|
-
#
|
103
|
-
#
|
104
|
-
# Service refused, please try later. LPN007_505 (in reply to end of DATA command)
|
87
|
+
# - 421 4.2.0 Service refuse. Veuillez essayer plus tard. Service refused, please try later.
|
88
|
+
# OFR005_505 [505] (in reply to end of DATA command)
|
89
|
+
# - 421 4.2.1 Service refuse. Veuillez essayer plus tard. Service refused, please try later.
|
90
|
+
# LPN007_505 (in reply to end of DATA command)
|
105
91
|
'505' => 'systemerror',
|
106
92
|
|
107
|
-
# Mail rejete. Mail rejected. OFR_506 [506]
|
93
|
+
# - Mail rejete. Mail rejected. OFR_506 [506]
|
108
94
|
'506' => 'spamdetected',
|
109
95
|
|
110
|
-
# 550 5.5.0 Service refuse. Veuillez essayer plus tard.
|
111
|
-
#
|
96
|
+
# - 550 5.5.0 Service refuse. Veuillez essayer plus tard. service refused, please try later.
|
97
|
+
# LPN005_510 (in reply to end of DATA command)
|
112
98
|
'510' => 'blocked',
|
113
99
|
|
114
|
-
# Mail rejete. Mail rejected. OUK_513
|
115
|
-
'513' => nil,
|
100
|
+
'513' => nil, # Mail rejete. Mail rejected. OUK_513
|
116
101
|
|
117
|
-
# Taille limite du message atteinte
|
102
|
+
# - Taille limite du message atteinte
|
118
103
|
'514' => 'mesgtoobig',
|
119
104
|
|
120
|
-
# 571 5.7.1 Message refused, DMARC verification Failed.
|
121
|
-
# Message refuse, verification DMARC en echec LPN007_517
|
122
|
-
'517' => '
|
105
|
+
# - 571 5.7.1 Message refused, DMARC verification Failed.
|
106
|
+
# - Message refuse, verification DMARC en echec LPN007_517
|
107
|
+
'517' => 'authfailure',
|
123
108
|
|
124
|
-
# 554 5.7.1 Client host rejected
|
125
|
-
# LPN000_630
|
109
|
+
# - 554 5.7.1 Client host rejected LPN000_630
|
126
110
|
'630' => 'policyviolation',
|
127
111
|
|
128
|
-
# 421 mwinf5c77 ME Service refuse. Veuillez essayer plus tard.
|
129
|
-
#
|
112
|
+
# - 421 mwinf5c77 ME Service refuse. Veuillez essayer plus tard. Service refused, please try
|
113
|
+
# later. OFR_999 [999]
|
130
114
|
'999' => 'blocked',
|
131
115
|
}.freeze
|
116
|
+
MessagesOf = {
|
117
|
+
'authfailure' => [
|
118
|
+
# - 421 smtp.orange.fr [192.0.2.1] Emetteur invalide, Veuillez verifier la configuration
|
119
|
+
# SPF/DNS de votre nom de domaine. Invalid Sender. SPF check failed, please verify the
|
120
|
+
# SPF/DNS configuration for your domain name.
|
121
|
+
'spf/dns de votre nom de domaine',
|
122
|
+
],
|
123
|
+
}.freeze
|
132
124
|
|
133
125
|
# Detect bounce reason from Oranage or La Poste
|
134
|
-
# @param [Sisimai::Fact] argvs
|
126
|
+
# @param [Sisimai::Fact] argvs Decoded email object
|
135
127
|
# @return [String] The bounce reason for Orange or La Poste
|
128
|
+
# @see https://www.postmastery.com/orange-postmaster-smtp-error-codes-ofr/
|
129
|
+
# https://smtpfieldmanual.com/provider/orange
|
136
130
|
def get(argvs)
|
137
|
-
|
138
|
-
|
139
|
-
statusmesg = argvs['diagnosticcode']
|
131
|
+
issuedcode = argvs['diagnosticcode']
|
140
132
|
reasontext = ''
|
141
133
|
|
142
|
-
if cv =
|
134
|
+
if cv = issuedcode.match(/\b(LPN|LPNAAA|OFR|OUK)(_[0-9]{3}|[0-9]{3}[-_][0-9]{3})\b/i)
|
143
135
|
# OUK_513, LPN105-104, OFR102-104, ofr_506
|
144
136
|
v = sprintf("%03d", (cv[1] + cv[2])[-3, 3])
|
145
137
|
reasontext = ErrorCodes[v] || 'undefined'
|
146
138
|
end
|
139
|
+
return reasontext if reasontext.size > 0
|
140
|
+
|
141
|
+
issuedcode = issuedcode.downcase
|
142
|
+
MessagesOf.each_key do |e|
|
143
|
+
MessagesOf[e].each do |f|
|
144
|
+
next unless issuedcode.include?(f)
|
145
|
+
reasontext = e
|
146
|
+
break
|
147
|
+
end
|
148
|
+
break if reasontext.size > 0
|
149
|
+
end
|
147
150
|
return reasontext
|
148
151
|
end
|
149
152
|
|
@@ -7,59 +7,221 @@ module Sisimai
|
|
7
7
|
class << self
|
8
8
|
# https://www.godaddy.com/help/what-does-my-email-bounceback-mean-3568
|
9
9
|
ErrorCodes = {
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
'
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
'
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
'
|
29
|
-
|
30
|
-
|
10
|
+
# Sender bounces
|
11
|
+
# ---------------------------------------------------------------------------------------
|
12
|
+
# - 535 Authentication not allowed on IBSMTP Servers. IB401
|
13
|
+
# - Authentication is not allowed on inbound mail. This happens when you have incorrect
|
14
|
+
# outgoing SMTP server settings set up in your email client, like Outlook or Gmail.
|
15
|
+
# - Set up your email client using the SMTP server setting smtpout.secureserver.net.
|
16
|
+
'IB401' => 'securityerror',
|
17
|
+
|
18
|
+
# - 550 jane@coolexample.com Blank From: addresses are not allowed. Provide a valid From.
|
19
|
+
# IB501
|
20
|
+
# - The email message "from" field is blank.
|
21
|
+
# - Add a valid "from" address and try to send the email again.
|
22
|
+
'IB501' => 'notcompliantrfc',
|
23
|
+
|
24
|
+
# - 550 jane@coolexample.com IP addresses are not allowed as a From: Address. Provide a
|
25
|
+
# valid From. IB502
|
26
|
+
# - Email messages can't be sent "from" an IP address.
|
27
|
+
# - Add a valid "from" address and try to send the email again.
|
28
|
+
'IB502' => 'notcompliantrfc',
|
29
|
+
|
30
|
+
# - 550 coolexample.com From: Domain is invalid. Provide a valid From: IB506
|
31
|
+
# - The domain doesn't have valid MX Records, an IP address, or there were issues during
|
32
|
+
# the DNS lookup when the email was sent.
|
33
|
+
# - Verify that you're sending from a valid domain. Then verify that the domain has valid
|
34
|
+
# DNS records by checking your zone file. If the DNS isn't valid, it must be fixed
|
35
|
+
# before you resend the email.
|
36
|
+
'IB506' => 'rejected',
|
37
|
+
|
38
|
+
# - 550 jane@coolexample.com Invalid SPF record. Inspect your SPF settings, and try again.
|
39
|
+
# IB508
|
40
|
+
# - The sending email address's domain has an SPF record that does not authorize the
|
41
|
+
# sending email server to send email from the domain.
|
42
|
+
# - Modify the SPF record to include the server you're trying to send from or remove the
|
43
|
+
# SPF record from the domain.
|
44
|
+
'IB508' => 'authfailure',
|
45
|
+
|
46
|
+
# - 421 Temporarily rejected. Reverse DNS for this IP failed. IB108
|
47
|
+
# - The IP address attempting to send mail does not have reverse DNS setup, or the DNS
|
48
|
+
# lookup failed.
|
49
|
+
# - Verify the sending IP address has reverse DNS set up before resending the email.
|
50
|
+
# GoDaddy manages reverse DNS when using our email services. We do not support custom
|
51
|
+
# reverse DNS.
|
52
|
+
'IB108' => 'requireptr',
|
53
|
+
|
54
|
+
# Content bounces
|
55
|
+
# ---------------------------------------------------------------------------------------
|
56
|
+
# - 552 This message has been rejected due to content judged to be spam by the internet
|
57
|
+
# community. IB212
|
58
|
+
# - The email message contains a link, attachment or pattern caught by our filters as spam.
|
59
|
+
'IB212' => 'spamdetected',
|
60
|
+
|
61
|
+
# - 552 Virus infected message rejected. IB705
|
62
|
+
# - The email message containing a link, attachment or pattern caught by our filters as a
|
63
|
+
# possible virus.
|
64
|
+
'IB705' => 'virusdetected',
|
65
|
+
|
66
|
+
# Rate limiting bounces
|
67
|
+
# ---------------------------------------------------------------------------------------
|
68
|
+
# - 452 This message contains too many recipients. Reduce the number of recipients and
|
69
|
+
# retry. IB605
|
70
|
+
# - The message has attempted to mail too many recipients.
|
71
|
+
# - Reduce the number of recipients and try again.
|
72
|
+
'IB605' => 'toomanyconn',
|
73
|
+
|
74
|
+
# - 421 Connection refused, too many sessions from This IP. Lower the number of concurrent
|
75
|
+
# sessions. IB007
|
76
|
+
# - This IP address currently has too many sessions open.
|
77
|
+
# - Check with your email provider to reduce the number of open sessions on your IP
|
78
|
+
# address and then try again.
|
79
|
+
'IB007' => 'toomanyconn',
|
80
|
+
|
81
|
+
# - 421 Server temporarily unavailable. Try again later. IB101
|
82
|
+
# - The email queue is experiencing higher than normal email volume.
|
83
|
+
# - Try again later.
|
84
|
+
'IB101' => 'speeding',
|
85
|
+
|
86
|
+
# - 554 This IP has been temporarily blocked for attempting to send too many messages
|
87
|
+
# containing content judged to be spam by the Internet community. IB110
|
88
|
+
# - This IP address has attempted to send too many messages containing content judged to
|
89
|
+
# be spam and has been blocked for an hour.
|
90
|
+
# - If you're not sending spam, you'll need to contact your Internet Service Provider
|
91
|
+
# (ISP) to see why your IP address is sending so many emails. Something in your system
|
92
|
+
# is causing the issue, and you'll need to troubleshoot.
|
93
|
+
'IB110' => 'blocked',
|
94
|
+
|
95
|
+
# - 554 This IP has been blocked for the day, for attempting to send too many messages
|
96
|
+
# containing content judged to be spam by the Internet community. IB111
|
97
|
+
# - This IP address has attempted to send too many messages containing content judged to
|
98
|
+
# be spam and has been blocked for the remainder of the day.
|
99
|
+
'IB111' => 'blocked',
|
100
|
+
|
101
|
+
# - 554 This IP has been temporarily blocked for attempting to mail too many invalid
|
102
|
+
# recipients. IB112
|
103
|
+
# - This IP address has attempted to email too many invalid recipients and has been
|
104
|
+
# blocked for an hour.
|
105
|
+
'IB112' => 'blocked',
|
106
|
+
|
107
|
+
# - 554 This IP has been blocked for the day, for attempting to mail too many invalid
|
108
|
+
# recipients. IB113
|
109
|
+
# - This IP address has attempted to email too many invalid recipients and has been
|
110
|
+
# blocked for the remainder of the day.
|
111
|
+
'IB113' => 'blocked',
|
112
|
+
|
113
|
+
# - 550 This IP has sent too many messages this hour. IB504
|
114
|
+
# - This IP address has reached the maximum allowed messages for that hour.
|
115
|
+
'IB504' => 'speeding',
|
116
|
+
|
117
|
+
# - 550 This message has exceeded the max number of messages per session. Open a new
|
118
|
+
# session and try again. IB510
|
119
|
+
# - This IP address has reached the maximum allowed messages for that session.
|
120
|
+
'IB510' => 'speeding',
|
121
|
+
|
122
|
+
# - 550 This IP has sent too many to too many recipients this hour. IB607
|
123
|
+
# - This IP address has reached the maximum allowed recipients for that hour.
|
124
|
+
'IB607' => 'speeding',
|
125
|
+
|
126
|
+
# Remote block list (RBL) bounces
|
127
|
+
# ---------------------------------------------------------------------------------------
|
128
|
+
# - 554 Connection refused. This IP has a poor reputation on Cloudmark Sender Intelligence
|
129
|
+
# (CSI). IB103
|
130
|
+
# - This IP address has a poor reputation on Cloudmark Sender Intelligence (CSI).
|
131
|
+
'IB103' => 'badreputation',
|
132
|
+
|
133
|
+
# - 554 Connection refused. This IP address is listed on the Spamhaus Block List (SBL). IB104
|
134
|
+
# - This IP address is listed on the Spamhaus Block List.
|
135
|
+
'IB104' => 'blocked',
|
136
|
+
|
137
|
+
# - 554 Connection refused. This IP address is listed on the Exploits Block List (XBL). IB105
|
138
|
+
# - This IP address is listed on the Spamhaus Exploits Block List.
|
139
|
+
'IB105' => 'blocked',
|
140
|
+
|
141
|
+
# - 554 Connection refused. This IP address is listed on the Policy Block List (PBL). IB106
|
142
|
+
# - This IP address is listed on the Spamhaus Policy Block List.
|
143
|
+
'IB106' => 'blocked',
|
31
144
|
}.freeze
|
32
145
|
MessagesOf = {
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
'
|
146
|
+
'blocked' => [
|
147
|
+
# - 554 RBL Reject.
|
148
|
+
# - This IP address was blocked from our internal RBL.
|
149
|
+
# - Use the link provided in the bounceback to submit a request to remove this IP address.
|
150
|
+
'rbl reject',
|
151
|
+
'www.spamhaus.org/query/bl?ip='
|
152
|
+
],
|
153
|
+
'expired' => [
|
154
|
+
# - 451 Sorry, I wasn't able to establish an SMTP connection.
|
155
|
+
# I'm not going to try again; this message has been in the queue too long.
|
156
|
+
# - The recipient's email address has been misspelled or the recipient's email provider
|
157
|
+
# has blocked sending from your address.
|
158
|
+
'has been in the queue too long',
|
159
|
+
|
160
|
+
# - Delivery timeout
|
161
|
+
# - This could happen for several reasons.
|
162
|
+
'delivery timeout',
|
163
|
+
],
|
164
|
+
'mailboxfull' => [
|
165
|
+
# - Account storage limit
|
166
|
+
# - The recipient's account has reached its storage limit and can't receive email right
|
167
|
+
# now.
|
168
|
+
# - The recipient needs to delete messages from their inbox or the receiving folder to
|
169
|
+
# make space for more email.
|
170
|
+
'account storage limit',
|
171
|
+
],
|
172
|
+
'spamdetected' => [
|
173
|
+
# - 552 Message rejected for spam or virus content
|
174
|
+
# - The email message contains a link, attachment, or pattern caught by our filters as spam.
|
175
|
+
'message rejected for spam or virus content',
|
176
|
+
],
|
177
|
+
'suspend' => [
|
178
|
+
# - Account disabled
|
179
|
+
# - The recipient account exists but its ability to receive mail was disabled.
|
180
|
+
# - Typically, these accounts remain permanently disabled, but you can try sending the
|
181
|
+
# email again later.
|
182
|
+
'account disabled',
|
183
|
+
],
|
184
|
+
'systemerror' => [
|
185
|
+
# - This message is looping: it already has my Delivered-To line. (#5.4.6)
|
186
|
+
# - The recipient account is forwarding the message in a loop.
|
187
|
+
# - This is oftentimes because the receiver has two addresses that forward to each
|
188
|
+
# other. They need to correct their forwarding settings.
|
189
|
+
'message is looping',
|
190
|
+
],
|
191
|
+
'userunknown' => [
|
192
|
+
# - 550 Recipient not found
|
193
|
+
# - The recipient is not a valid email address.
|
194
|
+
# - Remove the invalid recipient from your email.
|
195
|
+
'recipient not found',
|
196
|
+
|
197
|
+
# - Account does not exist
|
198
|
+
# - The email address that you sent to does not exist.
|
199
|
+
# - Verify that the recipient email address was entered correctly.
|
200
|
+
'account does not exist'
|
201
|
+
],
|
38
202
|
}.freeze
|
39
203
|
|
40
204
|
# Detect bounce reason from GoDaddy
|
41
|
-
# @param [Sisimai::Fact] argvs
|
205
|
+
# @param [Sisimai::Fact] argvs Decoded email object
|
42
206
|
# @return [String] The bounce reason for GoDaddy
|
43
|
-
# @see https://
|
207
|
+
# @see https://ca.godaddy.com/help/fix-rejected-email-with-a-bounce-error-40685
|
208
|
+
# @since v4.22.2
|
44
209
|
def get(argvs)
|
45
|
-
|
46
|
-
|
47
|
-
statusmesg = argvs['diagnosticcode']
|
48
|
-
positionib = statusmesg.index(' IB') || -1
|
210
|
+
issuedcode = argvs['diagnosticcode']
|
211
|
+
positionib = issuedcode.index(' IB') || -1
|
49
212
|
reasontext = ''
|
50
213
|
|
51
|
-
|
52
|
-
reasontext
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
61
|
-
break unless reasontext.empty?
|
214
|
+
reasontext = ErrorCodes[issuedcode[positionib + 1, 5]] || '' if positionib > 1
|
215
|
+
return reasontext if reasontext.size > 0
|
216
|
+
|
217
|
+
issuedcode = issuedcode.downcase
|
218
|
+
MessagesOf.each_key do |e|
|
219
|
+
MessagesOf[e].each do |f|
|
220
|
+
next unless issuedcode.include?(f)
|
221
|
+
reasontext = e
|
222
|
+
break
|
62
223
|
end
|
224
|
+
break if reasontext.size > 0
|
63
225
|
end
|
64
226
|
|
65
227
|
return reasontext
|
data/lib/sisimai/rhost/google.rb
CHANGED
@@ -509,25 +509,23 @@ module Sisimai
|
|
509
509
|
}.freeze
|
510
510
|
|
511
511
|
# Detect bounce reason from Google Workspace
|
512
|
-
# @param [Sisimai::Fact] argvs
|
512
|
+
# @param [Sisimai::Fact] argvs Decoded email object
|
513
513
|
# @return [String] The bounce reason for Google Workspace
|
514
514
|
# @see https://support.google.com/a/answer/3726730?hl=en
|
515
515
|
def get(argvs)
|
516
|
-
return argvs['reason'] unless argvs['reason'].empty?
|
517
|
-
return '' if argvs['diagnosticcode'].empty?
|
518
516
|
return '' unless Sisimai::SMTP::Reply.test(argvs['replycode'])
|
519
517
|
return '' unless Sisimai::SMTP::Status.test(argvs['deliverystatus'])
|
520
518
|
|
521
519
|
statuscode = argvs['deliverystatus'][2,6]
|
522
520
|
esmtpreply = argvs['replycode'][1,2]
|
523
|
-
|
521
|
+
issuedcode = argvs['diagnosticcode'].downcase
|
524
522
|
reasontext = ''
|
525
523
|
|
526
524
|
MessagesOf.each_key do |e|
|
527
525
|
# Each key is a reason name
|
528
526
|
MessagesOf[e].each do |f|
|
529
527
|
# Try to match an SMTP reply code, a D.S.N, and an error message
|
530
|
-
next unless
|
528
|
+
next unless issuedcode.include?(f[2])
|
531
529
|
next unless f[0].end_with?(esmtpreply)
|
532
530
|
next unless f[1].end_with?(statuscode)
|
533
531
|
reasontext = e
|
data/lib/sisimai/rhost/iua.rb
CHANGED
@@ -6,7 +6,7 @@ module Sisimai
|
|
6
6
|
module IUA
|
7
7
|
class << self
|
8
8
|
ErrorCodes = {
|
9
|
-
#
|
9
|
+
# https://mail.i.ua/err/$(CODE)
|
10
10
|
'1' => 'norelaying', # The use of SMTP as mail gate is forbidden.
|
11
11
|
'2' => 'userunknown', # User is not found.
|
12
12
|
'3' => 'suspend', # Mailbox was not used for more than 3 months
|
@@ -20,7 +20,7 @@ module Sisimai
|
|
20
20
|
}.freeze
|
21
21
|
|
22
22
|
# Detect bounce reason from https://www.i.ua/
|
23
|
-
# @param [Sisimai::Fact] argvs
|
23
|
+
# @param [Sisimai::Fact] argvs Decoded email object
|
24
24
|
# @return [String] The bounce reason at https://www.i.ua/
|
25
25
|
def get(argvs)
|
26
26
|
return argvs['reason'] unless argvs['reason'].empty?
|
data/lib/sisimai/rhost/kddi.rb
CHANGED
@@ -6,20 +6,21 @@ module Sisimai
|
|
6
6
|
module KDDI
|
7
7
|
class << self
|
8
8
|
MessagesOf = {
|
9
|
-
'filtered' => '550 :
|
10
|
-
'userunknown' => '>:
|
9
|
+
'filtered' => '550 : user unknown', # The response was: 550 : User unknown
|
10
|
+
'userunknown' => '>: user unknown', # The response was: 550 <...>: User unknown
|
11
11
|
}.freeze
|
12
12
|
|
13
13
|
# Detect bounce reason from au (KDDI)
|
14
|
-
# @param [Sisimai::Fact] argvs
|
14
|
+
# @param [Sisimai::Fact] argvs Decoded email object
|
15
15
|
# @return [String] The bounce reason for au.com or ezweb.ne.jp
|
16
|
+
# @since v4.22.6
|
16
17
|
def get(argvs)
|
17
|
-
|
18
|
+
issuedcode = argvs['diagnosticcode'].downcase
|
18
19
|
reasontext = ''
|
19
20
|
|
20
21
|
MessagesOf.each_key do |e|
|
21
22
|
# Try to match the error message with message patterns defined in $MessagesOf
|
22
|
-
next unless
|
23
|
+
next unless issuedcode.include?(MessagesOf[e])
|
23
24
|
reasontext = e
|
24
25
|
break
|
25
26
|
end
|
@@ -711,16 +711,15 @@ module Sisimai
|
|
711
711
|
}.freeze
|
712
712
|
|
713
713
|
# Detect bounce reason from Exchange Server 2019 or older and Exchange Online
|
714
|
-
# @param [Sisimai::Fact] argvs
|
714
|
+
# @param [Sisimai::Fact] argvs Decoded email object
|
715
715
|
# @return [String] The bounce reason for Exchange Online
|
716
|
+
# @since v4.17.2
|
716
717
|
def get(argvs)
|
717
|
-
return argvs['reason'] unless argvs['reason'].empty?
|
718
|
-
return '' if argvs['diagnosticcode'].empty?
|
719
718
|
return '' if argvs['deliverystatus'].empty?
|
720
719
|
return '' unless Sisimai::SMTP::Status.test(argvs['deliverystatus'])
|
721
720
|
|
722
721
|
statuscode = argvs['deliverystatus']
|
723
|
-
|
722
|
+
issuedcode = argvs['diagnosticcode'].downcase
|
724
723
|
thirddigit = statuscode.split('.')[-1].to_i
|
725
724
|
reasontext = ''
|
726
725
|
|
@@ -738,7 +737,7 @@ module Sisimai
|
|
738
737
|
next if thirddigit > f[2]
|
739
738
|
end
|
740
739
|
|
741
|
-
next unless
|
740
|
+
next unless issuedcode.include?(f[3])
|
742
741
|
reasontext = e
|
743
742
|
break
|
744
743
|
end
|