sisimai 5.1.0-java → 5.2.0-java
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: java
|
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
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,15 +106,11 @@ files:
|
|
106
106
|
- lib/sisimai/fact.rb
|
107
107
|
- lib/sisimai/fact/json.rb
|
108
108
|
- lib/sisimai/fact/yaml.rb
|
109
|
+
- lib/sisimai/lda.rb
|
109
110
|
- lib/sisimai/lhost.rb
|
110
111
|
- lib/sisimai/lhost/activehunter.rb
|
111
|
-
- lib/sisimai/lhost/amavis.rb
|
112
112
|
- lib/sisimai/lhost/amazonses.rb
|
113
|
-
- lib/sisimai/lhost/amazonworkmail.rb
|
114
|
-
- lib/sisimai/lhost/aol.rb
|
115
113
|
- lib/sisimai/lhost/apachejames.rb
|
116
|
-
- lib/sisimai/lhost/barracuda.rb
|
117
|
-
- lib/sisimai/lhost/bigfoot.rb
|
118
114
|
- lib/sisimai/lhost/biglobe.rb
|
119
115
|
- lib/sisimai/lhost/courier.rb
|
120
116
|
- lib/sisimai/lhost/domino.rb
|
@@ -124,51 +120,35 @@ files:
|
|
124
120
|
- lib/sisimai/lhost/exchange2007.rb
|
125
121
|
- lib/sisimai/lhost/exim.rb
|
126
122
|
- lib/sisimai/lhost/ezweb.rb
|
127
|
-
- lib/sisimai/lhost/facebook.rb
|
128
123
|
- lib/sisimai/lhost/fml.rb
|
129
124
|
- lib/sisimai/lhost/gmail.rb
|
130
125
|
- lib/sisimai/lhost/gmx.rb
|
131
126
|
- lib/sisimai/lhost/googlegroups.rb
|
132
|
-
- lib/sisimai/lhost/
|
127
|
+
- lib/sisimai/lhost/googleworkspace.rb
|
133
128
|
- lib/sisimai/lhost/imailserver.rb
|
134
129
|
- lib/sisimai/lhost/interscanmss.rb
|
135
130
|
- lib/sisimai/lhost/kddi.rb
|
136
131
|
- lib/sisimai/lhost/mailfoundry.rb
|
137
132
|
- lib/sisimai/lhost/mailmarshalsmtp.rb
|
138
|
-
- lib/sisimai/lhost/mailru.rb
|
139
|
-
- lib/sisimai/lhost/mcafee.rb
|
140
|
-
- lib/sisimai/lhost/messagelabs.rb
|
141
133
|
- lib/sisimai/lhost/messagingserver.rb
|
142
134
|
- lib/sisimai/lhost/mfilter.rb
|
143
|
-
- lib/sisimai/lhost/mxlogic.rb
|
144
135
|
- lib/sisimai/lhost/notes.rb
|
145
|
-
- lib/sisimai/lhost/office365.rb
|
146
136
|
- lib/sisimai/lhost/opensmtpd.rb
|
147
|
-
- lib/sisimai/lhost/outlook.rb
|
148
137
|
- lib/sisimai/lhost/postfix.rb
|
149
|
-
- lib/sisimai/lhost/powermta.rb
|
150
138
|
- lib/sisimai/lhost/qmail.rb
|
151
|
-
- lib/sisimai/lhost/receivingses.rb
|
152
|
-
- lib/sisimai/lhost/sendgrid.rb
|
153
139
|
- lib/sisimai/lhost/sendmail.rb
|
154
|
-
- lib/sisimai/lhost/surfcontrol.rb
|
155
140
|
- lib/sisimai/lhost/v5sendmail.rb
|
156
141
|
- lib/sisimai/lhost/verizon.rb
|
157
142
|
- lib/sisimai/lhost/x1.rb
|
158
143
|
- lib/sisimai/lhost/x2.rb
|
159
144
|
- lib/sisimai/lhost/x3.rb
|
160
|
-
- lib/sisimai/lhost/x4.rb
|
161
|
-
- lib/sisimai/lhost/x5.rb
|
162
145
|
- lib/sisimai/lhost/x6.rb
|
163
|
-
- lib/sisimai/lhost/yahoo.rb
|
164
|
-
- lib/sisimai/lhost/yandex.rb
|
165
146
|
- lib/sisimai/lhost/zoho.rb
|
166
147
|
- lib/sisimai/mail.rb
|
167
148
|
- lib/sisimai/mail/maildir.rb
|
168
149
|
- lib/sisimai/mail/mbox.rb
|
169
150
|
- lib/sisimai/mail/memory.rb
|
170
151
|
- lib/sisimai/mail/stdin.rb
|
171
|
-
- lib/sisimai/mda.rb
|
172
152
|
- lib/sisimai/message.rb
|
173
153
|
- lib/sisimai/order.rb
|
174
154
|
- lib/sisimai/reason.rb
|
@@ -179,6 +159,7 @@ files:
|
|
179
159
|
- lib/sisimai/reason/delivered.rb
|
180
160
|
- lib/sisimai/reason/exceedlimit.rb
|
181
161
|
- lib/sisimai/reason/expired.rb
|
162
|
+
- lib/sisimai/reason/failedstarttls.rb
|
182
163
|
- lib/sisimai/reason/feedback.rb
|
183
164
|
- lib/sisimai/reason/filtered.rb
|
184
165
|
- lib/sisimai/reason/hasmoved.rb
|
@@ -197,6 +178,7 @@ files:
|
|
197
178
|
- lib/sisimai/reason/securityerror.rb
|
198
179
|
- lib/sisimai/reason/spamdetected.rb
|
199
180
|
- lib/sisimai/reason/speeding.rb
|
181
|
+
- lib/sisimai/reason/suppressed.rb
|
200
182
|
- lib/sisimai/reason/suspend.rb
|
201
183
|
- lib/sisimai/reason/syntaxerror.rb
|
202
184
|
- lib/sisimai/reason/systemerror.rb
|
@@ -206,29 +188,37 @@ files:
|
|
206
188
|
- lib/sisimai/reason/userunknown.rb
|
207
189
|
- lib/sisimai/reason/vacation.rb
|
208
190
|
- lib/sisimai/reason/virusdetected.rb
|
191
|
+
- lib/sisimai/rfc1123.rb
|
209
192
|
- lib/sisimai/rfc1894.rb
|
210
193
|
- lib/sisimai/rfc2045.rb
|
211
194
|
- lib/sisimai/rfc3464.rb
|
195
|
+
- lib/sisimai/rfc3464/thirdparty.rb
|
212
196
|
- lib/sisimai/rfc3834.rb
|
213
197
|
- lib/sisimai/rfc5322.rb
|
214
198
|
- lib/sisimai/rfc5965.rb
|
199
|
+
- lib/sisimai/rfc791.rb
|
215
200
|
- lib/sisimai/rhost.rb
|
201
|
+
- lib/sisimai/rhost/aol.rb
|
216
202
|
- lib/sisimai/rhost/apple.rb
|
217
203
|
- lib/sisimai/rhost/cox.rb
|
204
|
+
- lib/sisimai/rhost/facebook.rb
|
218
205
|
- lib/sisimai/rhost/franceptt.rb
|
219
206
|
- lib/sisimai/rhost/godaddy.rb
|
220
207
|
- lib/sisimai/rhost/google.rb
|
208
|
+
- lib/sisimai/rhost/gsuite.rb
|
221
209
|
- lib/sisimai/rhost/iua.rb
|
222
210
|
- lib/sisimai/rhost/kddi.rb
|
211
|
+
- lib/sisimai/rhost/messagelabs.rb
|
223
212
|
- lib/sisimai/rhost/microsoft.rb
|
224
213
|
- lib/sisimai/rhost/mimecast.rb
|
225
214
|
- lib/sisimai/rhost/nttdocomo.rb
|
215
|
+
- lib/sisimai/rhost/outlook.rb
|
226
216
|
- lib/sisimai/rhost/spectrum.rb
|
227
217
|
- lib/sisimai/rhost/tencent.rb
|
228
218
|
- lib/sisimai/rhost/yahooinc.rb
|
229
219
|
- lib/sisimai/smtp.rb
|
230
220
|
- lib/sisimai/smtp/command.rb
|
231
|
-
- lib/sisimai/smtp/
|
221
|
+
- lib/sisimai/smtp/failure.rb
|
232
222
|
- lib/sisimai/smtp/reply.rb
|
233
223
|
- lib/sisimai/smtp/status.rb
|
234
224
|
- lib/sisimai/smtp/transcript.rb
|
@@ -287,12 +277,6 @@ files:
|
|
287
277
|
- set-of-emails/maildir/bsd/lhost-amazonworkmail-05.eml
|
288
278
|
- set-of-emails/maildir/bsd/lhost-amazonworkmail-07.eml
|
289
279
|
- set-of-emails/maildir/bsd/lhost-amazonworkmail-08.eml
|
290
|
-
- set-of-emails/maildir/bsd/lhost-aol-01.eml
|
291
|
-
- set-of-emails/maildir/bsd/lhost-aol-02.eml
|
292
|
-
- set-of-emails/maildir/bsd/lhost-aol-03.eml
|
293
|
-
- set-of-emails/maildir/bsd/lhost-aol-04.eml
|
294
|
-
- set-of-emails/maildir/bsd/lhost-aol-05.eml
|
295
|
-
- set-of-emails/maildir/bsd/lhost-aol-06.eml
|
296
280
|
- set-of-emails/maildir/bsd/lhost-apachejames-01.eml
|
297
281
|
- set-of-emails/maildir/bsd/lhost-barracuda-01.eml
|
298
282
|
- set-of-emails/maildir/bsd/lhost-barracuda-02.eml
|
@@ -398,8 +382,6 @@ files:
|
|
398
382
|
- set-of-emails/maildir/bsd/lhost-ezweb-05.eml
|
399
383
|
- set-of-emails/maildir/bsd/lhost-ezweb-07.eml
|
400
384
|
- set-of-emails/maildir/bsd/lhost-ezweb-08.eml
|
401
|
-
- set-of-emails/maildir/bsd/lhost-facebook-03.eml
|
402
|
-
- set-of-emails/maildir/bsd/lhost-facebook-04.eml
|
403
385
|
- set-of-emails/maildir/bsd/lhost-fml-02.eml
|
404
386
|
- set-of-emails/maildir/bsd/lhost-fml-03.eml
|
405
387
|
- set-of-emails/maildir/bsd/lhost-gmail-01.eml
|
@@ -435,22 +417,7 @@ files:
|
|
435
417
|
- set-of-emails/maildir/bsd/lhost-googlegroups-12.eml
|
436
418
|
- set-of-emails/maildir/bsd/lhost-googlegroups-13.eml
|
437
419
|
- set-of-emails/maildir/bsd/lhost-googlegroups-14.eml
|
438
|
-
- set-of-emails/maildir/bsd/lhost-
|
439
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-01.eml
|
440
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-02.eml
|
441
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-03.eml
|
442
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-04.eml
|
443
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-05.eml
|
444
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-06.eml
|
445
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-07.eml
|
446
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-08.eml
|
447
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-09.eml
|
448
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-10.eml
|
449
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-11.eml
|
450
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-12.eml
|
451
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-13.eml
|
452
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-14.eml
|
453
|
-
- set-of-emails/maildir/bsd/lhost-gsuite-15.eml
|
420
|
+
- set-of-emails/maildir/bsd/lhost-googleworkspace-01.eml
|
454
421
|
- set-of-emails/maildir/bsd/lhost-imailserver-01.eml
|
455
422
|
- set-of-emails/maildir/bsd/lhost-imailserver-02.eml
|
456
423
|
- set-of-emails/maildir/bsd/lhost-imailserver-03.eml
|
@@ -480,9 +447,6 @@ files:
|
|
480
447
|
- set-of-emails/maildir/bsd/lhost-mcafee-03.eml
|
481
448
|
- set-of-emails/maildir/bsd/lhost-mcafee-04.eml
|
482
449
|
- set-of-emails/maildir/bsd/lhost-mcafee-05.eml
|
483
|
-
- set-of-emails/maildir/bsd/lhost-messagelabs-01.eml
|
484
|
-
- set-of-emails/maildir/bsd/lhost-messagelabs-02.eml
|
485
|
-
- set-of-emails/maildir/bsd/lhost-messagelabs-03.eml
|
486
450
|
- set-of-emails/maildir/bsd/lhost-messagingserver-01.eml
|
487
451
|
- set-of-emails/maildir/bsd/lhost-messagingserver-02.eml
|
488
452
|
- set-of-emails/maildir/bsd/lhost-messagingserver-03.eml
|
@@ -724,13 +688,13 @@ files:
|
|
724
688
|
- set-of-emails/maildir/bsd/lhost-x2-03.eml
|
725
689
|
- set-of-emails/maildir/bsd/lhost-x2-04.eml
|
726
690
|
- set-of-emails/maildir/bsd/lhost-x2-05.eml
|
691
|
+
- set-of-emails/maildir/bsd/lhost-x2-06.eml
|
727
692
|
- set-of-emails/maildir/bsd/lhost-x3-01.eml
|
728
693
|
- set-of-emails/maildir/bsd/lhost-x3-02.eml
|
729
694
|
- set-of-emails/maildir/bsd/lhost-x3-03.eml
|
730
695
|
- set-of-emails/maildir/bsd/lhost-x3-05.eml
|
731
696
|
- set-of-emails/maildir/bsd/lhost-x3-06.eml
|
732
697
|
- set-of-emails/maildir/bsd/lhost-x4-01.eml
|
733
|
-
- set-of-emails/maildir/bsd/lhost-x4-08.eml
|
734
698
|
- set-of-emails/maildir/bsd/lhost-x5-01.eml
|
735
699
|
- set-of-emails/maildir/bsd/lhost-x6-01.eml
|
736
700
|
- set-of-emails/maildir/bsd/lhost-x6-02.eml
|
@@ -770,22 +734,42 @@ files:
|
|
770
734
|
- set-of-emails/maildir/bsd/rfc3464-34.eml
|
771
735
|
- set-of-emails/maildir/bsd/rfc3464-35.eml
|
772
736
|
- set-of-emails/maildir/bsd/rfc3464-36.eml
|
773
|
-
- set-of-emails/maildir/bsd/rfc3464-37.eml
|
774
|
-
- set-of-emails/maildir/bsd/rfc3464-38.eml
|
775
|
-
- set-of-emails/maildir/bsd/rfc3464-39.eml
|
776
737
|
- set-of-emails/maildir/bsd/rfc3464-40.eml
|
777
738
|
- set-of-emails/maildir/bsd/rfc3464-42.eml
|
778
739
|
- set-of-emails/maildir/bsd/rfc3464-43.eml
|
740
|
+
- set-of-emails/maildir/bsd/rfc3464-51.eml
|
741
|
+
- set-of-emails/maildir/bsd/rfc3464-52.eml
|
742
|
+
- set-of-emails/maildir/bsd/rfc3464-53.eml
|
743
|
+
- set-of-emails/maildir/bsd/rfc3464-54.eml
|
744
|
+
- set-of-emails/maildir/bsd/rfc3464-55.eml
|
745
|
+
- set-of-emails/maildir/bsd/rfc3464-56.eml
|
746
|
+
- set-of-emails/maildir/bsd/rfc3464-57.eml
|
747
|
+
- set-of-emails/maildir/bsd/rfc3464-58.eml
|
748
|
+
- set-of-emails/maildir/bsd/rfc3464-59.eml
|
749
|
+
- set-of-emails/maildir/bsd/rfc3464-60.eml
|
750
|
+
- set-of-emails/maildir/bsd/rfc3464-61.eml
|
751
|
+
- set-of-emails/maildir/bsd/rfc3464-62.eml
|
752
|
+
- set-of-emails/maildir/bsd/rfc3464-63.eml
|
753
|
+
- set-of-emails/maildir/bsd/rfc3464-64.eml
|
754
|
+
- set-of-emails/maildir/bsd/rfc3464-65.eml
|
779
755
|
- set-of-emails/maildir/bsd/rfc3834-01.eml
|
780
756
|
- set-of-emails/maildir/bsd/rfc3834-02.eml
|
781
757
|
- set-of-emails/maildir/bsd/rfc3834-03.eml
|
782
758
|
- set-of-emails/maildir/bsd/rfc3834-04.eml
|
783
759
|
- set-of-emails/maildir/bsd/rfc3834-05.eml
|
760
|
+
- set-of-emails/maildir/bsd/rhost-aol-01.eml
|
761
|
+
- set-of-emails/maildir/bsd/rhost-aol-02.eml
|
762
|
+
- set-of-emails/maildir/bsd/rhost-aol-03.eml
|
763
|
+
- set-of-emails/maildir/bsd/rhost-aol-04.eml
|
764
|
+
- set-of-emails/maildir/bsd/rhost-aol-05.eml
|
765
|
+
- set-of-emails/maildir/bsd/rhost-aol-06.eml
|
784
766
|
- set-of-emails/maildir/bsd/rhost-apple-01.eml
|
785
767
|
- set-of-emails/maildir/bsd/rhost-apple-02.eml
|
786
768
|
- set-of-emails/maildir/bsd/rhost-apple-03.eml
|
787
769
|
- set-of-emails/maildir/bsd/rhost-apple-04.eml
|
788
770
|
- set-of-emails/maildir/bsd/rhost-cox-01.eml
|
771
|
+
- set-of-emails/maildir/bsd/rhost-facebook-03.eml
|
772
|
+
- set-of-emails/maildir/bsd/rhost-facebook-04.eml
|
789
773
|
- set-of-emails/maildir/bsd/rhost-franceptt-01.eml
|
790
774
|
- set-of-emails/maildir/bsd/rhost-franceptt-02.eml
|
791
775
|
- set-of-emails/maildir/bsd/rhost-franceptt-03.eml
|
@@ -807,9 +791,27 @@ files:
|
|
807
791
|
- set-of-emails/maildir/bsd/rhost-google-06.eml
|
808
792
|
- set-of-emails/maildir/bsd/rhost-google-07.eml
|
809
793
|
- set-of-emails/maildir/bsd/rhost-google-08.eml
|
794
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-01.eml
|
795
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-02.eml
|
796
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-03.eml
|
797
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-04.eml
|
798
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-05.eml
|
799
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-06.eml
|
800
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-07.eml
|
801
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-08.eml
|
802
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-09.eml
|
803
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-10.eml
|
804
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-11.eml
|
805
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-12.eml
|
806
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-13.eml
|
807
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-14.eml
|
808
|
+
- set-of-emails/maildir/bsd/rhost-gsuite-15.eml
|
810
809
|
- set-of-emails/maildir/bsd/rhost-iua-01.eml
|
811
810
|
- set-of-emails/maildir/bsd/rhost-kddi-01.eml
|
812
811
|
- set-of-emails/maildir/bsd/rhost-kddi-02.eml
|
812
|
+
- set-of-emails/maildir/bsd/rhost-messagelabs-01.eml
|
813
|
+
- set-of-emails/maildir/bsd/rhost-messagelabs-02.eml
|
814
|
+
- set-of-emails/maildir/bsd/rhost-messagelabs-03.eml
|
813
815
|
- set-of-emails/maildir/bsd/rhost-microsoft-01.eml
|
814
816
|
- set-of-emails/maildir/bsd/rhost-microsoft-02.eml
|
815
817
|
- set-of-emails/maildir/bsd/rhost-microsoft-03.eml
|
@@ -820,6 +822,14 @@ files:
|
|
820
822
|
- set-of-emails/maildir/bsd/rhost-nttdocomo-01.eml
|
821
823
|
- set-of-emails/maildir/bsd/rhost-nttdocomo-02.eml
|
822
824
|
- set-of-emails/maildir/bsd/rhost-nttdocomo-03.eml
|
825
|
+
- set-of-emails/maildir/bsd/rhost-outlook-01.eml
|
826
|
+
- set-of-emails/maildir/bsd/rhost-outlook-02.eml
|
827
|
+
- set-of-emails/maildir/bsd/rhost-outlook-03.eml
|
828
|
+
- set-of-emails/maildir/bsd/rhost-outlook-04.eml
|
829
|
+
- set-of-emails/maildir/bsd/rhost-outlook-06.eml
|
830
|
+
- set-of-emails/maildir/bsd/rhost-outlook-07.eml
|
831
|
+
- set-of-emails/maildir/bsd/rhost-outlook-08.eml
|
832
|
+
- set-of-emails/maildir/bsd/rhost-outlook-09.eml
|
823
833
|
- set-of-emails/maildir/bsd/rhost-spectrum-01.eml
|
824
834
|
- set-of-emails/maildir/bsd/rhost-tencent-01.eml
|
825
835
|
- set-of-emails/maildir/bsd/rhost-tencent-02.eml
|
@@ -994,6 +1004,13 @@ files:
|
|
994
1004
|
- set-of-emails/maildir/mac/rhost-tencentqq-01.eml
|
995
1005
|
- set-of-emails/maildir/not/is-not-bounce-01.eml
|
996
1006
|
- set-of-emails/maildir/not/is-not-bounce-02.eml
|
1007
|
+
- set-of-emails/maildir/tmp/arf-22.eml
|
1008
|
+
- set-of-emails/maildir/tmp/arf-23.eml
|
1009
|
+
- set-of-emails/maildir/tmp/arf-24.eml
|
1010
|
+
- set-of-emails/maildir/tmp/lhost-exim-07.eml
|
1011
|
+
- set-of-emails/maildir/tmp/rfc3464-37.eml
|
1012
|
+
- set-of-emails/maildir/tmp/rfc3464-38.eml
|
1013
|
+
- set-of-emails/maildir/tmp/rfc3464-39.eml
|
997
1014
|
- set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-01.eml
|
998
1015
|
- set-of-emails/to-be-debugged-because/something-is-wrong/issue-106-02.eml
|
999
1016
|
- 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
|
-
|