sisimai 5.1.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake-test.yml +1 -1
- data/ChangeLog.md +102 -0
- data/Makefile +4 -2
- data/README-JA.md +23 -16
- data/README.md +22 -15
- data/lib/sisimai/arf.rb +121 -210
- data/lib/sisimai/fact.rb +208 -158
- data/lib/sisimai/lda.rb +98 -0
- data/lib/sisimai/lhost/activehunter.rb +1 -1
- data/lib/sisimai/lhost/amazonses.rb +185 -301
- data/lib/sisimai/lhost/apachejames.rb +48 -51
- data/lib/sisimai/lhost/biglobe.rb +1 -2
- data/lib/sisimai/lhost/courier.rb +10 -8
- data/lib/sisimai/lhost/domino.rb +25 -25
- data/lib/sisimai/lhost/dragonfly.rb +3 -4
- data/lib/sisimai/lhost/einsundeins.rb +3 -4
- data/lib/sisimai/lhost/exchange2003.rb +6 -8
- data/lib/sisimai/lhost/exchange2007.rb +111 -101
- data/lib/sisimai/lhost/exim.rb +232 -242
- data/lib/sisimai/lhost/ezweb.rb +43 -51
- data/lib/sisimai/lhost/fml.rb +2 -3
- data/lib/sisimai/lhost/gmail.rb +32 -28
- data/lib/sisimai/lhost/gmx.rb +4 -16
- data/lib/sisimai/lhost/googlegroups.rb +9 -8
- data/lib/sisimai/lhost/googleworkspace.rb +94 -0
- data/lib/sisimai/lhost/imailserver.rb +7 -16
- data/lib/sisimai/lhost/interscanmss.rb +1 -1
- data/lib/sisimai/lhost/kddi.rb +3 -4
- data/lib/sisimai/lhost/mailfoundry.rb +2 -5
- data/lib/sisimai/lhost/mailmarshalsmtp.rb +1 -2
- data/lib/sisimai/lhost/messagingserver.rb +14 -13
- data/lib/sisimai/lhost/mfilter.rb +4 -3
- data/lib/sisimai/lhost/notes.rb +2 -4
- data/lib/sisimai/lhost/opensmtpd.rb +2 -2
- data/lib/sisimai/lhost/postfix.rb +25 -27
- data/lib/sisimai/lhost/qmail.rb +130 -106
- data/lib/sisimai/lhost/sendmail.rb +19 -18
- data/lib/sisimai/lhost/v5sendmail.rb +88 -60
- data/lib/sisimai/lhost/verizon.rb +2 -2
- data/lib/sisimai/lhost/x1.rb +1 -1
- data/lib/sisimai/lhost/x2.rb +1 -2
- data/lib/sisimai/lhost/x3.rb +2 -2
- data/lib/sisimai/lhost/x6.rb +1 -1
- data/lib/sisimai/lhost/zoho.rb +2 -2
- data/lib/sisimai/lhost.rb +18 -21
- data/lib/sisimai/message.rb +93 -146
- data/lib/sisimai/order.rb +21 -77
- data/lib/sisimai/reason/authfailure.rb +1 -4
- data/lib/sisimai/reason/badreputation.rb +2 -2
- data/lib/sisimai/reason/blocked.rb +7 -10
- data/lib/sisimai/reason/contenterror.rb +7 -1
- data/lib/sisimai/reason/exceedlimit.rb +1 -4
- data/lib/sisimai/reason/failedstarttls.rb +42 -0
- data/lib/sisimai/reason/filtered.rb +5 -4
- data/lib/sisimai/reason/hasmoved.rb +1 -2
- data/lib/sisimai/reason/hostunknown.rb +3 -3
- data/lib/sisimai/reason/mailboxfull.rb +2 -4
- data/lib/sisimai/reason/mailererror.rb +1 -2
- data/lib/sisimai/reason/mesgtoobig.rb +2 -4
- data/lib/sisimai/reason/norelaying.rb +2 -3
- data/lib/sisimai/reason/notaccept.rb +2 -3
- data/lib/sisimai/reason/notcompliantrfc.rb +10 -4
- data/lib/sisimai/reason/rejected.rb +1 -1
- data/lib/sisimai/reason/requireptr.rb +2 -2
- data/lib/sisimai/reason/securityerror.rb +1 -3
- data/lib/sisimai/reason/spamdetected.rb +6 -8
- data/lib/sisimai/reason/speeding.rb +1 -2
- data/lib/sisimai/reason/suppressed.rb +36 -0
- data/lib/sisimai/reason/suspend.rb +1 -3
- data/lib/sisimai/reason/systemerror.rb +5 -0
- data/lib/sisimai/reason/toomanyconn.rb +1 -2
- data/lib/sisimai/reason/userunknown.rb +1 -1
- data/lib/sisimai/reason/virusdetected.rb +5 -6
- data/lib/sisimai/reason.rb +77 -73
- data/lib/sisimai/rfc1123.rb +152 -0
- data/lib/sisimai/rfc1894.rb +102 -62
- data/lib/sisimai/rfc2045.rb +2 -1
- data/lib/sisimai/rfc3464/thirdparty.rb +102 -0
- data/lib/sisimai/rfc3464.rb +222 -343
- data/lib/sisimai/rfc3834.rb +1 -1
- data/lib/sisimai/rfc5322.rb +7 -17
- data/lib/sisimai/rfc791.rb +69 -0
- data/lib/sisimai/rhost/aol.rb +36 -0
- data/lib/sisimai/rhost/apple.rb +5 -2
- data/lib/sisimai/rhost/cox.rb +3 -2
- data/lib/sisimai/rhost/facebook.rb +100 -0
- data/lib/sisimai/rhost/franceptt.rb +3 -2
- data/lib/sisimai/rhost/godaddy.rb +3 -2
- data/lib/sisimai/rhost/google.rb +19 -17
- data/lib/sisimai/rhost/gsuite.rb +42 -0
- data/lib/sisimai/rhost/iua.rb +3 -3
- data/lib/sisimai/rhost/kddi.rb +3 -2
- data/lib/sisimai/rhost/messagelabs.rb +37 -0
- data/lib/sisimai/rhost/microsoft.rb +56 -49
- data/lib/sisimai/rhost/mimecast.rb +29 -27
- data/lib/sisimai/rhost/nttdocomo.rb +4 -3
- data/lib/sisimai/rhost/outlook.rb +36 -0
- data/lib/sisimai/rhost/spectrum.rb +3 -2
- data/lib/sisimai/rhost/tencent.rb +3 -2
- data/lib/sisimai/rhost/yahooinc.rb +4 -3
- data/lib/sisimai/rhost.rb +69 -39
- data/lib/sisimai/smtp/command.rb +31 -21
- data/lib/sisimai/smtp/failure.rb +103 -0
- data/lib/sisimai/smtp/reply.rb +29 -25
- data/lib/sisimai/smtp/status.rb +36 -19
- data/lib/sisimai/smtp/transcript.rb +15 -15
- data/lib/sisimai/string.rb +0 -46
- data/lib/sisimai/version.rb +1 -1
- data/set-of-emails/maildir/bsd/lhost-postfix-30.eml +81 -81
- data/set-of-emails/maildir/bsd/{lhost-aol-03.eml → rhost-aol-03.eml} +1264 -1264
- data/set-of-emails/maildir/bsd/{lhost-aol-04.eml → rhost-aol-04.eml} +1260 -1260
- data/set-of-emails/maildir/bsd/{lhost-aol-05.eml → rhost-aol-05.eml} +105 -105
- data/set-of-emails/maildir/bsd/{lhost-aol-06.eml → rhost-aol-06.eml} +105 -105
- data/set-of-emails/maildir/bsd/rhost-gsuite-01.eml +189 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-02.eml +180 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-03.eml +251 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-04.eml +211 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-05.eml +226 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-06.eml +257 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-07.eml +289 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-08.eml +231 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-09.eml +231 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-10.eml +254 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-11.eml +228 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-12.eml +271 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-13.eml +261 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-14.eml +273 -0
- data/set-of-emails/maildir/bsd/rhost-gsuite-15.eml +229 -0
- data/set-of-emails/maildir/bsd/{lhost-messagelabs-01.eml → rhost-messagelabs-01.eml} +93 -93
- data/set-of-emails/maildir/bsd/rhost-outlook-01.eml +72 -0
- data/set-of-emails/maildir/bsd/rhost-outlook-02.eml +72 -0
- data/set-of-emails/maildir/bsd/rhost-outlook-03.eml +72 -0
- data/set-of-emails/maildir/bsd/rhost-outlook-04.eml +79 -0
- data/set-of-emails/maildir/bsd/rhost-outlook-06.eml +75 -0
- data/set-of-emails/maildir/bsd/rhost-outlook-07.eml +70 -0
- data/set-of-emails/maildir/bsd/rhost-outlook-08.eml +70 -0
- data/set-of-emails/maildir/bsd/rhost-outlook-09.eml +56 -0
- data/set-of-emails/maildir/tmp/arf-22.eml +49 -0
- data/set-of-emails/maildir/tmp/arf-23.eml +49 -0
- data/set-of-emails/maildir/tmp/arf-24.eml +50 -0
- data/set-of-emails/maildir/tmp/lhost-exim-07.eml +28 -0
- metadata +73 -56
- data/lib/sisimai/lhost/amavis.rb +0 -163
- data/lib/sisimai/lhost/amazonworkmail.rb +0 -127
- data/lib/sisimai/lhost/aol.rb +0 -125
- data/lib/sisimai/lhost/barracuda.rb +0 -92
- data/lib/sisimai/lhost/bigfoot.rb +0 -125
- data/lib/sisimai/lhost/facebook.rb +0 -188
- data/lib/sisimai/lhost/gsuite.rb +0 -194
- data/lib/sisimai/lhost/mailru.rb +0 -214
- data/lib/sisimai/lhost/mcafee.rb +0 -109
- data/lib/sisimai/lhost/messagelabs.rb +0 -120
- data/lib/sisimai/lhost/mxlogic.rb +0 -198
- data/lib/sisimai/lhost/office365.rb +0 -252
- data/lib/sisimai/lhost/outlook.rb +0 -129
- data/lib/sisimai/lhost/powermta.rb +0 -118
- data/lib/sisimai/lhost/receivingses.rb +0 -126
- data/lib/sisimai/lhost/sendgrid.rb +0 -150
- data/lib/sisimai/lhost/surfcontrol.rb +0 -105
- data/lib/sisimai/lhost/x4.rb +0 -269
- data/lib/sisimai/lhost/x5.rb +0 -112
- data/lib/sisimai/lhost/yahoo.rb +0 -102
- data/lib/sisimai/lhost/yandex.rb +0 -118
- data/lib/sisimai/mda.rb +0 -121
- data/lib/sisimai/smtp/error.rb +0 -119
- /data/set-of-emails/maildir/bsd/{lhost-googlegroups-15.eml → lhost-googleworkspace-01.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-x4-08.eml → lhost-x2-06.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-01.eml → rfc3464-51.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-03.eml → rfc3464-52.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-04.eml → rfc3464-53.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-05.eml → rfc3464-54.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-06.eml → rfc3464-55.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-07.eml → rfc3464-56.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-08.eml → rfc3464-57.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-09.eml → rfc3464-58.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-10.eml → rfc3464-59.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-11.eml → rfc3464-60.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-12.eml → rfc3464-61.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-13.eml → rfc3464-62.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-14.eml → rfc3464-63.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-15.eml → rfc3464-64.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-gsuite-02.eml → rfc3464-65.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-aol-01.eml → rhost-aol-01.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-aol-02.eml → rhost-aol-02.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-facebook-03.eml → rhost-facebook-03.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-facebook-04.eml → rhost-facebook-04.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-messagelabs-02.eml → rhost-messagelabs-02.eml} +0 -0
- /data/set-of-emails/maildir/bsd/{lhost-messagelabs-03.eml → rhost-messagelabs-03.eml} +0 -0
- /data/set-of-emails/maildir/{bsd → tmp}/rfc3464-37.eml +0 -0
- /data/set-of-emails/maildir/{bsd → tmp}/rfc3464-38.eml +0 -0
- /data/set-of-emails/maildir/{bsd → tmp}/rfc3464-39.eml +0 -0
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sisimai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- azumakuniyuki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,15 +100,11 @@ files:
|
|
100
100
|
- lib/sisimai/fact.rb
|
101
101
|
- lib/sisimai/fact/json.rb
|
102
102
|
- lib/sisimai/fact/yaml.rb
|
103
|
+
- lib/sisimai/lda.rb
|
103
104
|
- lib/sisimai/lhost.rb
|
104
105
|
- lib/sisimai/lhost/activehunter.rb
|
105
|
-
- lib/sisimai/lhost/amavis.rb
|
106
106
|
- lib/sisimai/lhost/amazonses.rb
|
107
|
-
- lib/sisimai/lhost/amazonworkmail.rb
|
108
|
-
- lib/sisimai/lhost/aol.rb
|
109
107
|
- lib/sisimai/lhost/apachejames.rb
|
110
|
-
- lib/sisimai/lhost/barracuda.rb
|
111
|
-
- lib/sisimai/lhost/bigfoot.rb
|
112
108
|
- lib/sisimai/lhost/biglobe.rb
|
113
109
|
- lib/sisimai/lhost/courier.rb
|
114
110
|
- lib/sisimai/lhost/domino.rb
|
@@ -118,51 +114,35 @@ files:
|
|
118
114
|
- lib/sisimai/lhost/exchange2007.rb
|
119
115
|
- lib/sisimai/lhost/exim.rb
|
120
116
|
- lib/sisimai/lhost/ezweb.rb
|
121
|
-
- lib/sisimai/lhost/facebook.rb
|
122
117
|
- lib/sisimai/lhost/fml.rb
|
123
118
|
- lib/sisimai/lhost/gmail.rb
|
124
119
|
- lib/sisimai/lhost/gmx.rb
|
125
120
|
- lib/sisimai/lhost/googlegroups.rb
|
126
|
-
- lib/sisimai/lhost/
|
121
|
+
- lib/sisimai/lhost/googleworkspace.rb
|
127
122
|
- lib/sisimai/lhost/imailserver.rb
|
128
123
|
- lib/sisimai/lhost/interscanmss.rb
|
129
124
|
- lib/sisimai/lhost/kddi.rb
|
130
125
|
- lib/sisimai/lhost/mailfoundry.rb
|
131
126
|
- lib/sisimai/lhost/mailmarshalsmtp.rb
|
132
|
-
- lib/sisimai/lhost/mailru.rb
|
133
|
-
- lib/sisimai/lhost/mcafee.rb
|
134
|
-
- lib/sisimai/lhost/messagelabs.rb
|
135
127
|
- lib/sisimai/lhost/messagingserver.rb
|
136
128
|
- lib/sisimai/lhost/mfilter.rb
|
137
|
-
- lib/sisimai/lhost/mxlogic.rb
|
138
129
|
- lib/sisimai/lhost/notes.rb
|
139
|
-
- lib/sisimai/lhost/office365.rb
|
140
130
|
- lib/sisimai/lhost/opensmtpd.rb
|
141
|
-
- lib/sisimai/lhost/outlook.rb
|
142
131
|
- lib/sisimai/lhost/postfix.rb
|
143
|
-
- lib/sisimai/lhost/powermta.rb
|
144
132
|
- lib/sisimai/lhost/qmail.rb
|
145
|
-
- lib/sisimai/lhost/receivingses.rb
|
146
|
-
- lib/sisimai/lhost/sendgrid.rb
|
147
133
|
- lib/sisimai/lhost/sendmail.rb
|
148
|
-
- lib/sisimai/lhost/surfcontrol.rb
|
149
134
|
- lib/sisimai/lhost/v5sendmail.rb
|
150
135
|
- lib/sisimai/lhost/verizon.rb
|
151
136
|
- lib/sisimai/lhost/x1.rb
|
152
137
|
- lib/sisimai/lhost/x2.rb
|
153
138
|
- lib/sisimai/lhost/x3.rb
|
154
|
-
- lib/sisimai/lhost/x4.rb
|
155
|
-
- lib/sisimai/lhost/x5.rb
|
156
139
|
- lib/sisimai/lhost/x6.rb
|
157
|
-
- lib/sisimai/lhost/yahoo.rb
|
158
|
-
- lib/sisimai/lhost/yandex.rb
|
159
140
|
- lib/sisimai/lhost/zoho.rb
|
160
141
|
- lib/sisimai/mail.rb
|
161
142
|
- lib/sisimai/mail/maildir.rb
|
162
143
|
- lib/sisimai/mail/mbox.rb
|
163
144
|
- lib/sisimai/mail/memory.rb
|
164
145
|
- lib/sisimai/mail/stdin.rb
|
165
|
-
- lib/sisimai/mda.rb
|
166
146
|
- lib/sisimai/message.rb
|
167
147
|
- lib/sisimai/order.rb
|
168
148
|
- lib/sisimai/reason.rb
|
@@ -173,6 +153,7 @@ files:
|
|
173
153
|
- lib/sisimai/reason/delivered.rb
|
174
154
|
- lib/sisimai/reason/exceedlimit.rb
|
175
155
|
- lib/sisimai/reason/expired.rb
|
156
|
+
- lib/sisimai/reason/failedstarttls.rb
|
176
157
|
- lib/sisimai/reason/feedback.rb
|
177
158
|
- lib/sisimai/reason/filtered.rb
|
178
159
|
- lib/sisimai/reason/hasmoved.rb
|
@@ -191,6 +172,7 @@ files:
|
|
191
172
|
- lib/sisimai/reason/securityerror.rb
|
192
173
|
- lib/sisimai/reason/spamdetected.rb
|
193
174
|
- lib/sisimai/reason/speeding.rb
|
175
|
+
- lib/sisimai/reason/suppressed.rb
|
194
176
|
- lib/sisimai/reason/suspend.rb
|
195
177
|
- lib/sisimai/reason/syntaxerror.rb
|
196
178
|
- lib/sisimai/reason/systemerror.rb
|
@@ -200,29 +182,37 @@ files:
|
|
200
182
|
- lib/sisimai/reason/userunknown.rb
|
201
183
|
- lib/sisimai/reason/vacation.rb
|
202
184
|
- lib/sisimai/reason/virusdetected.rb
|
185
|
+
- lib/sisimai/rfc1123.rb
|
203
186
|
- lib/sisimai/rfc1894.rb
|
204
187
|
- lib/sisimai/rfc2045.rb
|
205
188
|
- lib/sisimai/rfc3464.rb
|
189
|
+
- lib/sisimai/rfc3464/thirdparty.rb
|
206
190
|
- lib/sisimai/rfc3834.rb
|
207
191
|
- lib/sisimai/rfc5322.rb
|
208
192
|
- lib/sisimai/rfc5965.rb
|
193
|
+
- lib/sisimai/rfc791.rb
|
209
194
|
- lib/sisimai/rhost.rb
|
195
|
+
- lib/sisimai/rhost/aol.rb
|
210
196
|
- lib/sisimai/rhost/apple.rb
|
211
197
|
- lib/sisimai/rhost/cox.rb
|
198
|
+
- lib/sisimai/rhost/facebook.rb
|
212
199
|
- lib/sisimai/rhost/franceptt.rb
|
213
200
|
- lib/sisimai/rhost/godaddy.rb
|
214
201
|
- lib/sisimai/rhost/google.rb
|
202
|
+
- lib/sisimai/rhost/gsuite.rb
|
215
203
|
- lib/sisimai/rhost/iua.rb
|
216
204
|
- lib/sisimai/rhost/kddi.rb
|
205
|
+
- lib/sisimai/rhost/messagelabs.rb
|
217
206
|
- lib/sisimai/rhost/microsoft.rb
|
218
207
|
- lib/sisimai/rhost/mimecast.rb
|
219
208
|
- lib/sisimai/rhost/nttdocomo.rb
|
209
|
+
- lib/sisimai/rhost/outlook.rb
|
220
210
|
- lib/sisimai/rhost/spectrum.rb
|
221
211
|
- lib/sisimai/rhost/tencent.rb
|
222
212
|
- lib/sisimai/rhost/yahooinc.rb
|
223
213
|
- lib/sisimai/smtp.rb
|
224
214
|
- lib/sisimai/smtp/command.rb
|
225
|
-
- lib/sisimai/smtp/
|
215
|
+
- lib/sisimai/smtp/failure.rb
|
226
216
|
- lib/sisimai/smtp/reply.rb
|
227
217
|
- lib/sisimai/smtp/status.rb
|
228
218
|
- lib/sisimai/smtp/transcript.rb
|
@@ -281,12 +271,6 @@ files:
|
|
281
271
|
- set-of-emails/maildir/bsd/lhost-amazonworkmail-05.eml
|
282
272
|
- set-of-emails/maildir/bsd/lhost-amazonworkmail-07.eml
|
283
273
|
- set-of-emails/maildir/bsd/lhost-amazonworkmail-08.eml
|
284
|
-
- set-of-emails/maildir/bsd/lhost-aol-01.eml
|
285
|
-
- set-of-emails/maildir/bsd/lhost-aol-02.eml
|
286
|
-
- set-of-emails/maildir/bsd/lhost-aol-03.eml
|
287
|
-
- set-of-emails/maildir/bsd/lhost-aol-04.eml
|
288
|
-
- set-of-emails/maildir/bsd/lhost-aol-05.eml
|
289
|
-
- set-of-emails/maildir/bsd/lhost-aol-06.eml
|
290
274
|
- set-of-emails/maildir/bsd/lhost-apachejames-01.eml
|
291
275
|
- set-of-emails/maildir/bsd/lhost-barracuda-01.eml
|
292
276
|
- set-of-emails/maildir/bsd/lhost-barracuda-02.eml
|
@@ -392,8 +376,6 @@ files:
|
|
392
376
|
- set-of-emails/maildir/bsd/lhost-ezweb-05.eml
|
393
377
|
- set-of-emails/maildir/bsd/lhost-ezweb-07.eml
|
394
378
|
- set-of-emails/maildir/bsd/lhost-ezweb-08.eml
|
395
|
-
- set-of-emails/maildir/bsd/lhost-facebook-03.eml
|
396
|
-
- set-of-emails/maildir/bsd/lhost-facebook-04.eml
|
397
379
|
- set-of-emails/maildir/bsd/lhost-fml-02.eml
|
398
380
|
- set-of-emails/maildir/bsd/lhost-fml-03.eml
|
399
381
|
- set-of-emails/maildir/bsd/lhost-gmail-01.eml
|
@@ -429,22 +411,7 @@ files:
|
|
429
411
|
- set-of-emails/maildir/bsd/lhost-googlegroups-12.eml
|
430
412
|
- set-of-emails/maildir/bsd/lhost-googlegroups-13.eml
|
431
413
|
- set-of-emails/maildir/bsd/lhost-googlegroups-14.eml
|
432
|
-
- set-of-emails/maildir/bsd/lhost-
|
433
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-01.eml
|
434
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-02.eml
|
435
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-03.eml
|
436
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-04.eml
|
437
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-05.eml
|
438
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-06.eml
|
439
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-07.eml
|
440
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-08.eml
|
441
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-09.eml
|
442
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-10.eml
|
443
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-11.eml
|
444
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-12.eml
|
445
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-13.eml
|
446
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-14.eml
|
447
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-15.eml
|
414
|
+
- set-of-emails/maildir/bsd/lhost-googleworkspace-01.eml
|
448
415
|
- set-of-emails/maildir/bsd/lhost-imailserver-01.eml
|
449
416
|
- set-of-emails/maildir/bsd/lhost-imailserver-02.eml
|
450
417
|
- set-of-emails/maildir/bsd/lhost-imailserver-03.eml
|
@@ -474,9 +441,6 @@ files:
|
|
474
441
|
- set-of-emails/maildir/bsd/lhost-mcafee-03.eml
|
475
442
|
- set-of-emails/maildir/bsd/lhost-mcafee-04.eml
|
476
443
|
- set-of-emails/maildir/bsd/lhost-mcafee-05.eml
|
477
|
-
- set-of-emails/maildir/bsd/lhost-messagelabs-01.eml
|
478
|
-
- set-of-emails/maildir/bsd/lhost-messagelabs-02.eml
|
479
|
-
- set-of-emails/maildir/bsd/lhost-messagelabs-03.eml
|
480
444
|
- set-of-emails/maildir/bsd/lhost-messagingserver-01.eml
|
481
445
|
- set-of-emails/maildir/bsd/lhost-messagingserver-02.eml
|
482
446
|
- set-of-emails/maildir/bsd/lhost-messagingserver-03.eml
|
@@ -718,13 +682,13 @@ files:
|
|
718
682
|
- set-of-emails/maildir/bsd/lhost-x2-03.eml
|
719
683
|
- set-of-emails/maildir/bsd/lhost-x2-04.eml
|
720
684
|
- set-of-emails/maildir/bsd/lhost-x2-05.eml
|
685
|
+
- set-of-emails/maildir/bsd/lhost-x2-06.eml
|
721
686
|
- set-of-emails/maildir/bsd/lhost-x3-01.eml
|
722
687
|
- set-of-emails/maildir/bsd/lhost-x3-02.eml
|
723
688
|
- set-of-emails/maildir/bsd/lhost-x3-03.eml
|
724
689
|
- set-of-emails/maildir/bsd/lhost-x3-05.eml
|
725
690
|
- set-of-emails/maildir/bsd/lhost-x3-06.eml
|
726
691
|
- set-of-emails/maildir/bsd/lhost-x4-01.eml
|
727
|
-
- set-of-emails/maildir/bsd/lhost-x4-08.eml
|
728
692
|
- set-of-emails/maildir/bsd/lhost-x5-01.eml
|
729
693
|
- set-of-emails/maildir/bsd/lhost-x6-01.eml
|
730
694
|
- set-of-emails/maildir/bsd/lhost-x6-02.eml
|
@@ -764,22 +728,42 @@ files:
|
|
764
728
|
- set-of-emails/maildir/bsd/rfc3464-34.eml
|
765
729
|
- set-of-emails/maildir/bsd/rfc3464-35.eml
|
766
730
|
- set-of-emails/maildir/bsd/rfc3464-36.eml
|
767
|
-
- set-of-emails/maildir/bsd/rfc3464-37.eml
|
768
|
-
- set-of-emails/maildir/bsd/rfc3464-38.eml
|
769
|
-
- set-of-emails/maildir/bsd/rfc3464-39.eml
|
770
731
|
- set-of-emails/maildir/bsd/rfc3464-40.eml
|
771
732
|
- set-of-emails/maildir/bsd/rfc3464-42.eml
|
772
733
|
- set-of-emails/maildir/bsd/rfc3464-43.eml
|
734
|
+
- set-of-emails/maildir/bsd/rfc3464-51.eml
|
735
|
+
- set-of-emails/maildir/bsd/rfc3464-52.eml
|
736
|
+
- set-of-emails/maildir/bsd/rfc3464-53.eml
|
737
|
+
- set-of-emails/maildir/bsd/rfc3464-54.eml
|
738
|
+
- set-of-emails/maildir/bsd/rfc3464-55.eml
|
739
|
+
- set-of-emails/maildir/bsd/rfc3464-56.eml
|
740
|
+
- set-of-emails/maildir/bsd/rfc3464-57.eml
|
741
|
+
- set-of-emails/maildir/bsd/rfc3464-58.eml
|
742
|
+
- set-of-emails/maildir/bsd/rfc3464-59.eml
|
743
|
+
- set-of-emails/maildir/bsd/rfc3464-60.eml
|
744
|
+
- set-of-emails/maildir/bsd/rfc3464-61.eml
|
745
|
+
- set-of-emails/maildir/bsd/rfc3464-62.eml
|
746
|
+
- set-of-emails/maildir/bsd/rfc3464-63.eml
|
747
|
+
- set-of-emails/maildir/bsd/rfc3464-64.eml
|
748
|
+
- set-of-emails/maildir/bsd/rfc3464-65.eml
|
773
749
|
- set-of-emails/maildir/bsd/rfc3834-01.eml
|
774
750
|
- set-of-emails/maildir/bsd/rfc3834-02.eml
|
775
751
|
- set-of-emails/maildir/bsd/rfc3834-03.eml
|
776
752
|
- set-of-emails/maildir/bsd/rfc3834-04.eml
|
777
753
|
- set-of-emails/maildir/bsd/rfc3834-05.eml
|
754
|
+
- set-of-emails/maildir/bsd/rhost-aol-01.eml
|
755
|
+
- set-of-emails/maildir/bsd/rhost-aol-02.eml
|
756
|
+
- set-of-emails/maildir/bsd/rhost-aol-03.eml
|
757
|
+
- set-of-emails/maildir/bsd/rhost-aol-04.eml
|
758
|
+
- set-of-emails/maildir/bsd/rhost-aol-05.eml
|
759
|
+
- set-of-emails/maildir/bsd/rhost-aol-06.eml
|
778
760
|
- set-of-emails/maildir/bsd/rhost-apple-01.eml
|
779
761
|
- set-of-emails/maildir/bsd/rhost-apple-02.eml
|
780
762
|
- set-of-emails/maildir/bsd/rhost-apple-03.eml
|
781
763
|
- set-of-emails/maildir/bsd/rhost-apple-04.eml
|
782
764
|
- set-of-emails/maildir/bsd/rhost-cox-01.eml
|
765
|
+
- set-of-emails/maildir/bsd/rhost-facebook-03.eml
|
766
|
+
- set-of-emails/maildir/bsd/rhost-facebook-04.eml
|
783
767
|
- set-of-emails/maildir/bsd/rhost-franceptt-01.eml
|
784
768
|
- set-of-emails/maildir/bsd/rhost-franceptt-02.eml
|
785
769
|
- set-of-emails/maildir/bsd/rhost-franceptt-03.eml
|
@@ -801,9 +785,27 @@ files:
|
|
801
785
|
- set-of-emails/maildir/bsd/rhost-google-06.eml
|
802
786
|
- set-of-emails/maildir/bsd/rhost-google-07.eml
|
803
787
|
- set-of-emails/maildir/bsd/rhost-google-08.eml
|
788
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-01.eml
|
789
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-02.eml
|
790
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-03.eml
|
791
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-04.eml
|
792
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-05.eml
|
793
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-06.eml
|
794
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-07.eml
|
795
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-08.eml
|
796
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-09.eml
|
797
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-10.eml
|
798
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-11.eml
|
799
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-12.eml
|
800
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-13.eml
|
801
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-14.eml
|
802
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-15.eml
|
804
803
|
- set-of-emails/maildir/bsd/rhost-iua-01.eml
|
805
804
|
- set-of-emails/maildir/bsd/rhost-kddi-01.eml
|
806
805
|
- set-of-emails/maildir/bsd/rhost-kddi-02.eml
|
806
|
+
- set-of-emails/maildir/bsd/rhost-messagelabs-01.eml
|
807
|
+
- set-of-emails/maildir/bsd/rhost-messagelabs-02.eml
|
808
|
+
- set-of-emails/maildir/bsd/rhost-messagelabs-03.eml
|
807
809
|
- set-of-emails/maildir/bsd/rhost-microsoft-01.eml
|
808
810
|
- set-of-emails/maildir/bsd/rhost-microsoft-02.eml
|
809
811
|
- set-of-emails/maildir/bsd/rhost-microsoft-03.eml
|
@@ -814,6 +816,14 @@ files:
|
|
814
816
|
- set-of-emails/maildir/bsd/rhost-nttdocomo-01.eml
|
815
817
|
- set-of-emails/maildir/bsd/rhost-nttdocomo-02.eml
|
816
818
|
- set-of-emails/maildir/bsd/rhost-nttdocomo-03.eml
|
819
|
+
- set-of-emails/maildir/bsd/rhost-outlook-01.eml
|
820
|
+
- set-of-emails/maildir/bsd/rhost-outlook-02.eml
|
821
|
+
- set-of-emails/maildir/bsd/rhost-outlook-03.eml
|
822
|
+
- set-of-emails/maildir/bsd/rhost-outlook-04.eml
|
823
|
+
- set-of-emails/maildir/bsd/rhost-outlook-06.eml
|
824
|
+
- set-of-emails/maildir/bsd/rhost-outlook-07.eml
|
825
|
+
- set-of-emails/maildir/bsd/rhost-outlook-08.eml
|
826
|
+
- set-of-emails/maildir/bsd/rhost-outlook-09.eml
|
817
827
|
- set-of-emails/maildir/bsd/rhost-spectrum-01.eml
|
818
828
|
- set-of-emails/maildir/bsd/rhost-tencent-01.eml
|
819
829
|
- set-of-emails/maildir/bsd/rhost-tencent-02.eml
|
@@ -988,6 +998,13 @@ files:
|
|
988
998
|
- set-of-emails/maildir/mac/rhost-tencentqq-01.eml
|
989
999
|
- set-of-emails/maildir/not/is-not-bounce-01.eml
|
990
1000
|
- set-of-emails/maildir/not/is-not-bounce-02.eml
|
1001
|
+
- set-of-emails/maildir/tmp/arf-22.eml
|
1002
|
+
- set-of-emails/maildir/tmp/arf-23.eml
|
1003
|
+
- set-of-emails/maildir/tmp/arf-24.eml
|
1004
|
+
- set-of-emails/maildir/tmp/lhost-exim-07.eml
|
1005
|
+
- set-of-emails/maildir/tmp/rfc3464-37.eml
|
1006
|
+
- set-of-emails/maildir/tmp/rfc3464-38.eml
|
1007
|
+
- set-of-emails/maildir/tmp/rfc3464-39.eml
|
991
1008
|
- set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-01.eml
|
992
1009
|
- set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-02.eml
|
993
1010
|
- set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-03.eml
|
data/lib/sisimai/lhost/amavis.rb
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
module Sisimai::Lhost
|
2
|
-
# Sisimai::Lhost::Amavis decodes a bounce email which created by amavsid-new.
|
3
|
-
# Methods in the module are called from only Sisimai::Message.
|
4
|
-
module Amavis
|
5
|
-
class << self
|
6
|
-
require 'sisimai/lhost'
|
7
|
-
|
8
|
-
Indicators = Sisimai::Lhost.INDICATORS
|
9
|
-
Boundaries = ['Content-Type: text/rfc822-headers'].freeze
|
10
|
-
StartingOf = { message: ['The message '] }.freeze
|
11
|
-
MessagesOf = {
|
12
|
-
# amavisd-new-2.11.1/amavisd:1840|%smtp_reason_by_ccat = (
|
13
|
-
# amavisd-new-2.11.1/amavisd:1840| # currently only used for blocked messages only, status 5xx
|
14
|
-
# amavisd-new-2.11.1/amavisd:1840| # a multiline message will produce a valid multiline SMTP response
|
15
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_VIRUS, 'id=%n - INFECTED: %V',
|
16
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BANNED, 'id=%n - BANNED: %F',
|
17
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_UNCHECKED.',1', 'id=%n - UNCHECKED: encrypted',
|
18
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_UNCHECKED.',2', 'id=%n - UNCHECKED: over limits',
|
19
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_UNCHECKED, 'id=%n - UNCHECKED',
|
20
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_SPAM, 'id=%n - spam',
|
21
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_SPAMMY.',1', 'id=%n - spammy (tag3)',
|
22
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_SPAMMY, 'id=%n - spammy',
|
23
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',1', 'id=%n - BAD HEADER: MIME error',
|
24
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',2', 'id=%n - BAD HEADER: nonencoded 8-bit character',
|
25
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',3', 'id=%n - BAD HEADER: contains invalid control character',
|
26
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',4', 'id=%n - BAD HEADER: line made up entirely of whitespace',
|
27
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',5', 'id=%n - BAD HEADER: line longer than RFC 5322 limit',
|
28
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',6', 'id=%n - BAD HEADER: syntax error',
|
29
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',7', 'id=%n - BAD HEADER: missing required header field',
|
30
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH.',8', 'id=%n - BAD HEADER: duplicate header field',
|
31
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_BADH, 'id=%n - BAD HEADER',
|
32
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_OVERSIZED, 'id=%n - Message size exceeds recipient\'s size limit',
|
33
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_MTA.',1', 'id=%n - Temporary MTA failure on relaying',
|
34
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_MTA.',2', 'id=%n - Rejected by next-hop MTA on relaying',
|
35
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_MTA, 'id=%n - Unable to relay message back to MTA',
|
36
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_CLEAN, 'id=%n - CLEAN',
|
37
|
-
# amavisd-new-2.11.1/amavisd:1840| CC_CATCHALL, 'id=%n - OTHER', # should not happen
|
38
|
-
# ...
|
39
|
-
# amavisd-new-2.11.1/amavisd:15289|my $status = setting_by_given_contents_category(
|
40
|
-
# amavisd-new-2.11.1/amavisd:15289| $blocking_ccat,
|
41
|
-
# amavisd-new-2.11.1/amavisd:15289| { CC_VIRUS, "554 5.7.0",
|
42
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_BANNED, "554 5.7.0",
|
43
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_UNCHECKED, "554 5.7.0",
|
44
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_SPAM, "554 5.7.0",
|
45
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_SPAMMY, "554 5.7.0",
|
46
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_BADH.",2", "554 5.6.3", # nonencoded 8-bit character
|
47
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_BADH, "554 5.6.0",
|
48
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_OVERSIZED, "552 5.3.4",
|
49
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_MTA, "550 5.3.5",
|
50
|
-
# amavisd-new-2.11.1/amavisd:15289| CC_CATCHALL, "554 5.7.0",
|
51
|
-
# amavisd-new-2.11.1/amavisd:15289| });
|
52
|
-
# ...
|
53
|
-
# amavisd-new-2.11.1/amavisd:15332|my $response = sprintf("%s %s%s%s", $status,
|
54
|
-
# amavisd-new-2.11.1/amavisd:15333| ($final_destiny == D_PASS ? "Ok" :
|
55
|
-
# amavisd-new-2.11.1/amavisd:15334| $final_destiny == D_DISCARD ? "Ok, discarded" :
|
56
|
-
# amavisd-new-2.11.1/amavisd:15335| $final_destiny == D_REJECT ? "Reject" :
|
57
|
-
# amavisd-new-2.11.1/amavisd:15336| $final_destiny == D_BOUNCE ? "Bounce" :
|
58
|
-
# amavisd-new-2.11.1/amavisd:15337| $final_destiny == D_TEMPFAIL ? "Temporary failure" :
|
59
|
-
# amavisd-new-2.11.1/amavisd:15338| "Not ok ($final_destiny)" ),
|
60
|
-
'spamdetected' => [' - spam'],
|
61
|
-
'virusdetected' => [' - infected'],
|
62
|
-
'contenterror' => [' - bad header:'],
|
63
|
-
'exceedlimit' => [' - message size exceeds recipient'],
|
64
|
-
'systemerror' => [
|
65
|
-
' - temporary mta failure on relaying',
|
66
|
-
' - rejected by next-hop mta on relaying',
|
67
|
-
' - unable to relay message back to mta',
|
68
|
-
],
|
69
|
-
}.freeze
|
70
|
-
|
71
|
-
# @abstract Decodes the bounce message from amavisd-new
|
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 [Nil] it failed to decode or the arguments are missing
|
76
|
-
# @since v4.25.0
|
77
|
-
def inquire(mhead, mbody)
|
78
|
-
# From: "Content-filter at neko1.example.jp" <postmaster@neko1.example.jp>
|
79
|
-
# Subject: Undeliverable mail, MTA-BLOCKED
|
80
|
-
return nil unless mhead['from'].to_s.start_with?('"Content-filter at ')
|
81
|
-
|
82
|
-
fieldtable = Sisimai::RFC1894.FIELDTABLE
|
83
|
-
permessage = {} # (Hash) Store values of each Per-Message field
|
84
|
-
|
85
|
-
dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
|
86
|
-
emailparts = Sisimai::RFC5322.part(mbody, Boundaries)
|
87
|
-
bodyslices = emailparts[0].split("\n")
|
88
|
-
readcursor = 0 # (Integer) Points the current cursor position
|
89
|
-
recipients = 0 # (Integer) The number of 'Final-Recipient' header
|
90
|
-
v = nil
|
91
|
-
|
92
|
-
while e = bodyslices.shift do
|
93
|
-
# Read error messages and delivery status lines from the head of the email to the previous
|
94
|
-
# line of the beginning of the original message.
|
95
|
-
|
96
|
-
if readcursor == 0
|
97
|
-
# Beginning of the bounce message or message/delivery-status part
|
98
|
-
readcursor |= Indicators[:deliverystatus] if e.start_with?(StartingOf[:message][0])
|
99
|
-
next
|
100
|
-
end
|
101
|
-
next if (readcursor & Indicators[:deliverystatus]) == 0
|
102
|
-
next if e.empty?
|
103
|
-
next unless f = Sisimai::RFC1894.match(e)
|
104
|
-
|
105
|
-
# "e" matched with any field defined in RFC3464
|
106
|
-
next unless o = Sisimai::RFC1894.field(e)
|
107
|
-
v = dscontents[-1]
|
108
|
-
|
109
|
-
if o[-1] == 'addr'
|
110
|
-
# Final-Recipient: rfc822; kijitora@example.jp
|
111
|
-
# X-Actual-Recipient: rfc822; kijitora@example.co.jp
|
112
|
-
if o[0] == 'final-recipient'
|
113
|
-
# Final-Recipient: rfc822; kijitora@example.jp
|
114
|
-
if v['recipient']
|
115
|
-
# There are multiple recipient addresses in the message body.
|
116
|
-
dscontents << Sisimai::Lhost.DELIVERYSTATUS
|
117
|
-
v = dscontents[-1]
|
118
|
-
end
|
119
|
-
v['recipient'] = o[2]
|
120
|
-
recipients += 1
|
121
|
-
else
|
122
|
-
# X-Actual-Recipient: rfc822; kijitora@example.co.jp
|
123
|
-
v['alias'] = o[2]
|
124
|
-
end
|
125
|
-
elsif o[-1] == 'code'
|
126
|
-
# Diagnostic-Code: SMTP; 550 5.1.1 <userunknown@example.jp>... User Unknown
|
127
|
-
v['spec'] = o[1]
|
128
|
-
v['diagnosis'] = o[2]
|
129
|
-
else
|
130
|
-
# Other DSN fields defined in RFC3464
|
131
|
-
next unless fieldtable[o[0]]
|
132
|
-
v[fieldtable[o[0]]] = o[2]
|
133
|
-
|
134
|
-
next unless f
|
135
|
-
permessage[fieldtable[o[0]]] = o[2]
|
136
|
-
end
|
137
|
-
end
|
138
|
-
return nil unless recipients > 0
|
139
|
-
|
140
|
-
dscontents.each do |e|
|
141
|
-
# Set default values if each value is empty.
|
142
|
-
permessage.each_key { |a| e[a] ||= permessage[a] || '' }
|
143
|
-
e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'].to_s.tr("\n", ' '))
|
144
|
-
q = e['diagnosis'].downcase
|
145
|
-
catch :DETECT_REASON do
|
146
|
-
MessagesOf.each_key do |p|
|
147
|
-
# Try to detect an error reason
|
148
|
-
MessagesOf[p].each do |r|
|
149
|
-
# Try to find an error message including lower-cased string defined in MessagesOf constant
|
150
|
-
next unless q.include?(r)
|
151
|
-
e['reason'] = p
|
152
|
-
throw :DETECT_REASON
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
157
|
-
return { 'ds' => dscontents, 'rfc822' => emailparts[1] }
|
158
|
-
end
|
159
|
-
def description; return 'amavisd-new: https://www.amavis.org/'; end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
@@ -1,127 +0,0 @@
|
|
1
|
-
module Sisimai::Lhost
|
2
|
-
# Sisimai::Lhost::AmazonWorkMail decodes a bounce email which created by Amazon WorkMail https://aws.amazon.com/workmail/.
|
3
|
-
# Methods in the module are called from only Sisimai::Message.
|
4
|
-
module AmazonWorkMail
|
5
|
-
class << self
|
6
|
-
require 'sisimai/lhost'
|
7
|
-
|
8
|
-
# https://aws.amazon.com/workmail/
|
9
|
-
Indicators = Sisimai::Lhost.INDICATORS
|
10
|
-
Boundaries = ['Content-Type: message/rfc822'].freeze
|
11
|
-
StartingOf = { message: ['Technical report:'] }.freeze
|
12
|
-
|
13
|
-
# @abstract Decodes the bounce message from Amazon WorkMail
|
14
|
-
# @param [Hash] mhead Message headers of a bounce email
|
15
|
-
# @param [String] mbody Message body of a bounce email
|
16
|
-
# @return [Hash] Bounce data list and message/rfc822 part
|
17
|
-
# @return [Nil] it failed to decode or the arguments are missing
|
18
|
-
def inquire(mhead, mbody)
|
19
|
-
# X-Mailer: Amazon WorkMail
|
20
|
-
# X-Original-Mailer: Amazon WorkMail
|
21
|
-
# X-Ses-Outgoing: 2016.01.14-54.240.27.159
|
22
|
-
match = 0
|
23
|
-
xmail = mhead['x-original-mailer'] || mhead['x-mailer'] || ''
|
24
|
-
|
25
|
-
match += 1 if mhead['x-ses-outgoing']
|
26
|
-
unless xmail.empty?
|
27
|
-
# X-Mailer: Amazon WorkMail
|
28
|
-
# X-Original-Mailer: Amazon WorkMail
|
29
|
-
match += 1 if xmail == 'Amazon WorkMail'
|
30
|
-
end
|
31
|
-
return nil if match < 2
|
32
|
-
|
33
|
-
require 'sisimai/rfc1894'
|
34
|
-
fieldtable = Sisimai::RFC1894.FIELDTABLE
|
35
|
-
permessage = {} # (Hash) Store values of each Per-Message field
|
36
|
-
|
37
|
-
dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
|
38
|
-
emailparts = Sisimai::RFC5322.part(mbody, Boundaries)
|
39
|
-
bodyslices = emailparts[0].split("\n")
|
40
|
-
readcursor = 0 # (Integer) Points the current cursor position
|
41
|
-
recipients = 0 # (Integer) The number of 'Final-Recipient' header
|
42
|
-
v = nil
|
43
|
-
|
44
|
-
while e = bodyslices.shift do
|
45
|
-
# Read error messages and delivery status lines from the head of the email to the previous
|
46
|
-
# line of the beginning of the original message.
|
47
|
-
|
48
|
-
if readcursor == 0
|
49
|
-
# Beginning of the bounce message or message/delivery-status part
|
50
|
-
readcursor |= Indicators[:deliverystatus] if e == StartingOf[:message][0]
|
51
|
-
next
|
52
|
-
end
|
53
|
-
next if (readcursor & Indicators[:deliverystatus]) == 0
|
54
|
-
next if e.empty?
|
55
|
-
|
56
|
-
if f = Sisimai::RFC1894.match(e)
|
57
|
-
# "e" matched with any field defined in RFC3464
|
58
|
-
o = Sisimai::RFC1894.field(e) || next
|
59
|
-
v = dscontents[-1]
|
60
|
-
|
61
|
-
if o[-1] == 'addr'
|
62
|
-
# Final-Recipient: rfc822; kijitora@example.jp
|
63
|
-
# X-Actual-Recipient: rfc822; kijitora@example.co.jp
|
64
|
-
if o[0] == 'final-recipient'
|
65
|
-
# Final-Recipient: rfc822; kijitora@example.jp
|
66
|
-
if v['recipient']
|
67
|
-
# There are multiple recipient addresses in the message body.
|
68
|
-
dscontents << Sisimai::Lhost.DELIVERYSTATUS
|
69
|
-
v = dscontents[-1]
|
70
|
-
end
|
71
|
-
v['recipient'] = o[2]
|
72
|
-
recipients += 1
|
73
|
-
else
|
74
|
-
# X-Actual-Recipient: rfc822; kijitora@example.co.jp
|
75
|
-
v['alias'] = o[2]
|
76
|
-
end
|
77
|
-
elsif o[-1] == 'code'
|
78
|
-
# Diagnostic-Code: SMTP; 550 5.1.1 <userunknown@example.jp>... User Unknown
|
79
|
-
v['spec'] = o[1]
|
80
|
-
v['diagnosis'] = o[2]
|
81
|
-
else
|
82
|
-
# Other DSN fields defined in RFC3464
|
83
|
-
next unless fieldtable[o[0]]
|
84
|
-
v[fieldtable[o[0]]] = o[2]
|
85
|
-
|
86
|
-
next unless f
|
87
|
-
permessage[fieldtable[o[0]]] = o[2]
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
# <!DOCTYPE HTML><html>
|
92
|
-
# <head>
|
93
|
-
# <meta name="Generator" content="Amazon WorkMail v3.0-2023.77">
|
94
|
-
# <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
95
|
-
break if e.start_with?('<!DOCTYPE HTML><html>')
|
96
|
-
end
|
97
|
-
return nil unless recipients > 0
|
98
|
-
|
99
|
-
dscontents.each do |e|
|
100
|
-
# Set default values if each value is empty.
|
101
|
-
permessage.each_key { |a| e[a] ||= permessage[a] || '' }
|
102
|
-
|
103
|
-
e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
|
104
|
-
if e['status'].to_s.end_with?('.0.0', '.1.0')
|
105
|
-
# Get other D.S.N. value from the error message
|
106
|
-
errormessage = e['diagnosis']
|
107
|
-
|
108
|
-
if cv = e['diagnosis'].match(/["'](\d[.]\d[.]\d.+)['"]/)
|
109
|
-
# 5.1.0 - Unknown address error 550-'5.7.1 ...
|
110
|
-
errormessage = cv[1]
|
111
|
-
end
|
112
|
-
e['status'] = Sisimai::SMTP::Status.find(errormessage) || e['status']
|
113
|
-
end
|
114
|
-
|
115
|
-
# 554 4.4.7 Message expired: unable to deliver in 840 minutes.
|
116
|
-
# <421 4.4.2 Connection timed out>
|
117
|
-
e['replycode'] = Sisimai::SMTP::Reply.find(e['diagnosis']) || ''
|
118
|
-
e['reason'] ||= Sisimai::SMTP::Status.name(e['status']) || ''
|
119
|
-
end
|
120
|
-
|
121
|
-
return { 'ds' => dscontents, 'rfc822' => emailparts[1] }
|
122
|
-
end
|
123
|
-
def description; return 'Amazon WorkMail: https://aws.amazon.com/workmail/'; end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|