sisimai 5.0.3-java → 5.1.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/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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ddf0430c212f7bed1058a268f5dbbff54ecbcfdf7560259647552b6edf082e94
|
|
4
|
+
data.tar.gz: 978bceb01352802bc8c2f597a2eacca31309fd9b8be107229ca3e4598d849f04
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dc57b195ed29e0644c63a0217f8a4e0f6f7d055aef63e638c7ed484a575b61d4991a194ced77be9c8bf6520aebab565ac1aa33879b065a3695bd3635ceb6b478
|
|
7
|
+
data.tar.gz: 4217c94e42e8805db27369da7d1f4f5f052f8865cf28ae38910fe2262cd37073d5c8f938e2b774d2f352b21eea96999e7537c314b02751588ffae263476dc9ea
|
|
@@ -3,13 +3,15 @@ on:
|
|
|
3
3
|
push:
|
|
4
4
|
branches: ["5-stable"]
|
|
5
5
|
pull_request:
|
|
6
|
-
branches: ["
|
|
6
|
+
branches: ["*"]
|
|
7
7
|
jobs:
|
|
8
8
|
codecov:
|
|
9
9
|
runs-on: ubuntu-latest
|
|
10
10
|
steps:
|
|
11
11
|
- name: Checkout the repository(CRuby)
|
|
12
12
|
uses: actions/checkout@v4
|
|
13
|
+
with:
|
|
14
|
+
ref: ${{ github.event.pull_request.head.ref }}
|
|
13
15
|
- name: Setup CRuby
|
|
14
16
|
uses: ruby/setup-ruby@v1
|
|
15
17
|
with:
|
|
@@ -3,7 +3,7 @@ on:
|
|
|
3
3
|
push:
|
|
4
4
|
branches: ["5-stable"]
|
|
5
5
|
pull_request:
|
|
6
|
-
branches: ["
|
|
6
|
+
branches: ["*"]
|
|
7
7
|
jobs:
|
|
8
8
|
test-cruby:
|
|
9
9
|
name: rake test with CRuby ${{ matrix.cruby }}
|
|
@@ -15,6 +15,8 @@ jobs:
|
|
|
15
15
|
steps:
|
|
16
16
|
- name: Checkout the repository(CRuby)
|
|
17
17
|
uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
ref: ${{ github.event.pull_request.head.ref }}
|
|
18
20
|
- name: Setup CRuby
|
|
19
21
|
uses: ruby/setup-ruby@v1
|
|
20
22
|
with:
|
|
@@ -38,7 +40,9 @@ jobs:
|
|
|
38
40
|
jruby: ["jruby-9.2", "jruby-9.4"]
|
|
39
41
|
steps:
|
|
40
42
|
- name: Checkout the repository(JRuby)
|
|
41
|
-
uses: actions/checkout@
|
|
43
|
+
uses: actions/checkout@v4
|
|
44
|
+
with:
|
|
45
|
+
ref: ${{ github.event.pull_request.head.ref }}
|
|
42
46
|
- name: Setup JRuby
|
|
43
47
|
uses: ruby/setup-ruby@v1
|
|
44
48
|
with:
|
data/ChangeLog.md
CHANGED
|
@@ -3,6 +3,40 @@ RELEASE NOTES for Ruby version of Sisimai
|
|
|
3
3
|
- releases: "https://github.com/sisimai/rb-sisimai/releases"
|
|
4
4
|
- download: "https://rubygems.org/gems/sisimai"
|
|
5
5
|
|
|
6
|
+
v5.1.0
|
|
7
|
+
---------------------------------------------------------------------------------------------------
|
|
8
|
+
- release: "Mon, 1 Jul 2024 12:02:22 +0900 (JST)"
|
|
9
|
+
- version: "5.1.0"
|
|
10
|
+
- changes:
|
|
11
|
+
- #297 #300 Remove v4 compatible features
|
|
12
|
+
- `Sisimai.make()`
|
|
13
|
+
- `Sisimai::Fact.softbounce()`
|
|
14
|
+
- #292 #293 Implement `Sisimai::Lhost::DragonFly`
|
|
15
|
+
- Add 30 sample emails generated by DMA: DrangonFly Mail Agent (lhost-dragonfly-*.eml)
|
|
16
|
+
- #288 Consolidate error messages scattered under `Sisimai::Reason::*` into `Sisimai::Rhost::*`
|
|
17
|
+
classes for each email service #289
|
|
18
|
+
- `Sisimai::Rhost::YahooInc` for https://senders.yahooinc.com/smtp-error-codes/
|
|
19
|
+
- `Sisimai::Rhost::Apple` for iCloud Mail
|
|
20
|
+
- The following sample emails in `set-of-emails/maildir/bsd`:
|
|
21
|
+
- 3 sample emails (rhost-yahooinc-0[1-3].eml)
|
|
22
|
+
- 4 sample emails (rhost-apple-0[1-4].eml)
|
|
23
|
+
- #290 #291 #295 Sisimai::Rhost improvements
|
|
24
|
+
- Update the error code list and error message patterns in the following classes:
|
|
25
|
+
- `Sisimai::Rhost::Cox`
|
|
26
|
+
- `Sisimai::Rhost::FrancePTT`
|
|
27
|
+
- `Sisimai::Rhost::GoDaddy`
|
|
28
|
+
- `Sisimai::Rhost::Mimecast`
|
|
29
|
+
- `Sisimai::Rhost::Spectrum`
|
|
30
|
+
- `Sisimai::Rhost::Tencent`
|
|
31
|
+
- Each error message should be compared with the lowercased string
|
|
32
|
+
- Follow any updates of the SMTP error code and message list in each email services related to
|
|
33
|
+
`AuthFailure`, `BadReputation`, `RequirePTR`, and other error reasons added at v5
|
|
34
|
+
- No longer needed method `Sisimai::Rhost.match` method has been removed
|
|
35
|
+
- #296 Add 8 sample emails (lhost-opensmtpd-1[0-7].eml)generated by OpenSMTPD 6.8.0p2
|
|
36
|
+
- #298 Add 9 sample emails (lhost-qmail-1[1-9].eml) generated by notqmail 1.08
|
|
37
|
+
- #299 Add 6 sample emails (lhost-qmail-2[0-5].eml) generated by indimail 3.0.7
|
|
38
|
+
- Sisimai works on Ruby 3.3.3
|
|
39
|
+
|
|
6
40
|
v5.0.3
|
|
7
41
|
---------------------------------------------------------------------------------------------------
|
|
8
42
|
- release: "Wed, 22 May 2024 14:12:22 +0900 (JST)"
|
data/README-JA.md
CHANGED
|
@@ -78,7 +78,7 @@ The key features of Sisimai
|
|
|
78
78
|
* `gem install`
|
|
79
79
|
* `git clone && make`
|
|
80
80
|
* __高い解析精度__
|
|
81
|
-
* [
|
|
81
|
+
* [73種類のMTAs/MDAs/ESPs](https://libsisimai.org/en/engine/)に対応
|
|
82
82
|
* Feedback Loop(ARF)にも対応
|
|
83
83
|
* [34種類のバウンス理由](https://libsisimai.org/en/reason/)を検出
|
|
84
84
|
|
|
@@ -110,10 +110,10 @@ Install
|
|
|
110
110
|
### From RubyGems.org
|
|
111
111
|
```shell
|
|
112
112
|
$ sudo gem install sisimai
|
|
113
|
-
Fetching: sisimai-5.0.
|
|
114
|
-
Successfully installed sisimai-5.0
|
|
115
|
-
Parsing documentation for sisimai-5.0
|
|
116
|
-
Installing ri documentation for sisimai-5.0
|
|
113
|
+
Fetching: sisimai-5.1.0.gem (100%)
|
|
114
|
+
Successfully installed sisimai-5.1.0
|
|
115
|
+
Parsing documentation for sisimai-5.1.0
|
|
116
|
+
Installing ri documentation for sisimai-5.1.0
|
|
117
117
|
Done installing documentation for sisimai after 6 seconds
|
|
118
118
|
1 gem installed
|
|
119
119
|
```
|
|
@@ -141,13 +141,13 @@ if [ -d "/usr/local/jr" ]; then \
|
|
|
141
141
|
...
|
|
142
142
|
3 gems installed
|
|
143
143
|
/opt/local/bin/rake install
|
|
144
|
-
sisimai 5.0
|
|
145
|
-
sisimai (5.0
|
|
144
|
+
sisimai 5.1.0 built to pkg/sisimai-5.1.0.gem.
|
|
145
|
+
sisimai (5.1.0) installed.
|
|
146
146
|
if [ -d "/usr/local/jr" ]; then \
|
|
147
147
|
PATH="/usr/local/jr/bin:$PATH" /usr/local/jr/bin/rake install; \
|
|
148
148
|
fi
|
|
149
|
-
sisimai 5.0
|
|
150
|
-
sisimai (5.0
|
|
149
|
+
sisimai 5.1.0 built to pkg/sisimai-5.1.0-java.gem.
|
|
150
|
+
sisimai (5.1.0) installed.
|
|
151
151
|
```
|
|
152
152
|
|
|
153
153
|
Usage
|
|
@@ -351,12 +351,12 @@ Sisimai 5.0.0から**Ruby 2.4以上**が必要になります。
|
|
|
351
351
|
| 動作環境(CRuby) | 2.1 - | **2.4** or later |
|
|
352
352
|
| 動作環境(JRuby) | 9.0.4.0 - 9.1.17.0 | **9.2** or later |
|
|
353
353
|
| 元メールファイルを操作可能なコールバック機能 | なし | あり[^3] |
|
|
354
|
-
| 解析エンジン(MTA/ESPモジュール)の数 | 68 |
|
|
354
|
+
| 解析エンジン(MTA/ESPモジュール)の数 | 68 | 73 |
|
|
355
355
|
| 検出可能なバウンス理由の数 | 29 | 34 |
|
|
356
356
|
| 依存Gem数(Ruby Standard Gemsを除く) | 1 Gem | 1 Gem |
|
|
357
|
-
| ソースコードの行数 | 10,800 行 | 11,
|
|
357
|
+
| ソースコードの行数 | 10,800 行 | 11,660 行 |
|
|
358
358
|
| テストフレームワーク | rspec | minitest |
|
|
359
|
-
| テスト件数(spec/またはtest/ディレクトリ) | 311,000 件 |
|
|
359
|
+
| テスト件数(spec/またはtest/ディレクトリ) | 311,000 件 | 414,000 件 |
|
|
360
360
|
| 1秒間に解析できるバウンスメール数[^4] | 231 通 | 305 通 |
|
|
361
361
|
| ライセンス | 2条項BSD | 2条項BSD |
|
|
362
362
|
| 開発会社による商用サポート | 提供中 | 提供中 |
|
|
@@ -389,11 +389,14 @@ MTA/ESP Module Names
|
|
|
389
389
|
Sisimai 5で3個のESPモジュール名(解析エンジン)が変更になりました。詳細はMTA/ESPモジュールの一覧/
|
|
390
390
|
[LIBSISIMAI.ORG/JA/ENGINE](https://libsisimai.org/ja/engine/)を参照してください。
|
|
391
391
|
|
|
392
|
-
| `Sisimai
|
|
393
|
-
|
|
394
|
-
|
|
|
395
|
-
|
|
|
396
|
-
|
|
|
392
|
+
| `Sisimai::` | Sisimai 4 | Sisimai 5 |
|
|
393
|
+
|-------------------------------------------------|-------------------------|---------------------|
|
|
394
|
+
| Apple iCloud Mail (added at v5.1.0) | なし | `Rhost::Apple` |
|
|
395
|
+
| Microsoft Exchange Online | `Rhost::ExchangeOnline` | `Rhost::Microsoft` |
|
|
396
|
+
| Google Workspace | `Rhost::GoogleApps` | `Rhost::Google` |
|
|
397
|
+
| Tencent | `Rhost::TencentQQ` | `Rhost::Tencent` |
|
|
398
|
+
| Yahoo Mail (added at v5.1.0) | なし | `Rhost::YahooInc` |
|
|
399
|
+
| DragonFly Mail Agent (added at v5.1.0) | なし | `Lhost::DragonFly` |
|
|
397
400
|
|
|
398
401
|
Bounce Reasons
|
|
399
402
|
---------------------------------------------------------------------------------------------------
|
data/README.md
CHANGED
|
@@ -80,7 +80,7 @@ The key features of Sisimai
|
|
|
80
80
|
* `gem install`
|
|
81
81
|
* `git clone && make`
|
|
82
82
|
* __High Precision of Analysis__
|
|
83
|
-
* Support [
|
|
83
|
+
* Support [73 MTAs/MDAs/ESPs](https://libsisimai.org/en/engine/)
|
|
84
84
|
* Support Feedback Loop Message(ARF)
|
|
85
85
|
* Can detect [34 bounce reasons](https://libsisimai.org/en/reason/)
|
|
86
86
|
|
|
@@ -109,10 +109,10 @@ Install
|
|
|
109
109
|
### From RubyGems
|
|
110
110
|
```shell
|
|
111
111
|
$ sudo gem install sisimai
|
|
112
|
-
Fetching: sisimai-5.0.
|
|
113
|
-
Successfully installed sisimai-5.0
|
|
114
|
-
Parsing documentation for sisimai-5.0
|
|
115
|
-
Installing ri documentation for sisimai-5.0
|
|
112
|
+
Fetching: sisimai-5.1.0.gem (100%)
|
|
113
|
+
Successfully installed sisimai-5.1.0
|
|
114
|
+
Parsing documentation for sisimai-5.1.0
|
|
115
|
+
Installing ri documentation for sisimai-5.1.0
|
|
116
116
|
Done installing documentation for sisimai after 6 seconds
|
|
117
117
|
1 gem installed
|
|
118
118
|
```
|
|
@@ -140,13 +140,13 @@ if [ -d "/usr/local/jr" ]; then \
|
|
|
140
140
|
...
|
|
141
141
|
3 gems installed
|
|
142
142
|
/opt/local/bin/rake install
|
|
143
|
-
sisimai 5.0
|
|
144
|
-
sisimai (5.0
|
|
143
|
+
sisimai 5.1.0 built to pkg/sisimai-5.1.0.gem.
|
|
144
|
+
sisimai (5.1.0) installed.
|
|
145
145
|
if [ -d "/usr/local/jr" ]; then \
|
|
146
146
|
PATH="/usr/local/jr/bin:$PATH" /usr/local/jr/bin/rake install; \
|
|
147
147
|
fi
|
|
148
|
-
sisimai 5.0
|
|
149
|
-
sisimai (5.0
|
|
148
|
+
sisimai 5.1.0 built to pkg/sisimai-5.1.0-java.gem.
|
|
149
|
+
sisimai (5.1.0) installed.
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
Usage
|
|
@@ -350,12 +350,12 @@ Beginning with v5.0.0, Sisimai requires **Ruby 2.4.0 or later.**
|
|
|
350
350
|
| System requirements (CRuby) | 2.1 - 3.3.0 | **2.4** or later |
|
|
351
351
|
| System requirements (JRuby) | 9.0.4.0 - 9.1.17.0 | **9.2** or later |
|
|
352
352
|
| Callback feature for the original email file | N/A | Available[^3] |
|
|
353
|
-
| The number of MTA/ESP modules | 68 |
|
|
353
|
+
| The number of MTA/ESP modules | 68 | 73 |
|
|
354
354
|
| The number of detectable bounce reasons | 29 | 34 |
|
|
355
355
|
| Dependencies (Except Ruby Standard Gems) | 1 gem | 1 gem |
|
|
356
|
-
| Source lines of code | 10,300 lines | 11,
|
|
356
|
+
| Source lines of code | 10,300 lines | 11,660 lines |
|
|
357
357
|
| Test frameworks | rspec | minitest |
|
|
358
|
-
| The number of tests in spec/ or test/ directory | 311,000 tests |
|
|
358
|
+
| The number of tests in spec/ or test/ directory | 311,000 tests | 414,000 tests |
|
|
359
359
|
| The number of bounce emails decoded/sec (CRuby)[^4] | 231 emails | 305 emails |
|
|
360
360
|
| License | 2 Clause BSD | 2 Caluse BSD |
|
|
361
361
|
| Commercial support | Available | Available |
|
|
@@ -390,11 +390,14 @@ MTA/ESP Module Names
|
|
|
390
390
|
Three ESP module names have been changed at Sisimai 5. The list of the all MTA/ESP modules is
|
|
391
391
|
available at [LIBSISIMAI.ORG/EN/ENGINE](https://libsisimai.org/en/engine/)
|
|
392
392
|
|
|
393
|
-
| `Sisimai
|
|
394
|
-
|
|
395
|
-
|
|
|
396
|
-
|
|
|
397
|
-
|
|
|
393
|
+
| `Sisimai::` | Sisimai 4 | Sisimai 5 |
|
|
394
|
+
|-------------------------------------------------|-------------------------|---------------------|
|
|
395
|
+
| Apple iCloud Mail (added at v5.1.0) | None | `Rhost::Apple` |
|
|
396
|
+
| Microsoft Exchange Online | `Rhost::ExchangeOnline` | `Rhost::Microsoft` |
|
|
397
|
+
| Google Workspace | `Rhost::GoogleApps` | `Rhost::Google` |
|
|
398
|
+
| Tencent | `Rhost::TencentQQ` | `Rhost::Tencent` |
|
|
399
|
+
| Yahoo Mail (added at v5.1.0) | None | `Rhost::YahooInc` |
|
|
400
|
+
| DragonFly Mail Agent (added at v5.1.0) | None | `Lhost::DragonFly` |
|
|
398
401
|
|
|
399
402
|
Bounce Reasons
|
|
400
403
|
---------------------------------------------------------------------------------------------------
|
data/lib/sisimai/arf.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module Sisimai
|
|
2
|
-
# Sisimai::ARF is a
|
|
2
|
+
# Sisimai::ARF is a decoder for the email returned as a FeedBack Loop report message.
|
|
3
3
|
module ARF
|
|
4
4
|
class << self
|
|
5
5
|
require 'sisimai/lhost'
|
|
@@ -58,11 +58,11 @@ module Sisimai
|
|
|
58
58
|
return match
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
# Detect an error for Feedback Loop
|
|
61
|
+
# @abstract Detect an error for Feedback Loop
|
|
62
62
|
# @param [Hash] mhead Message headers of a bounce email
|
|
63
63
|
# @param [String] mbody Message body of a bounce email
|
|
64
64
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
65
|
-
# @return [Nil] it failed to
|
|
65
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
66
66
|
def inquire(mhead, mbody)
|
|
67
67
|
return nil unless self.is_arf(mhead)
|
|
68
68
|
|
data/lib/sisimai/fact/json.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Sisimai
|
|
2
2
|
class Fact
|
|
3
|
-
# Sisimai::Fact::JSON dumps
|
|
4
|
-
# called from the parent object "Sisimai::Fact".
|
|
3
|
+
# Sisimai::Fact::JSON dumps decoded data object as a JSON format. This class and method should
|
|
4
|
+
# be called from the parent object "Sisimai::Fact".
|
|
5
5
|
module JSON
|
|
6
6
|
class << self
|
|
7
7
|
# Serializer (JSON)
|
data/lib/sisimai/fact/yaml.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Sisimai
|
|
2
2
|
class Fact
|
|
3
|
-
# Sisimai::Fact::YAML dumps
|
|
4
|
-
# called from the parent object "Sisimai::Fact".
|
|
3
|
+
# Sisimai::Fact::YAML dumps decoded data object as a YAML format. This class and method should
|
|
4
|
+
# be called from the parent object "Sisimai::Fact".
|
|
5
5
|
module YAML
|
|
6
6
|
class << self
|
|
7
7
|
require 'yaml'
|
data/lib/sisimai/fact.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module Sisimai
|
|
2
|
-
# Sisimai::Fact generate
|
|
2
|
+
# Sisimai::Fact generate the list of decoded bounce data
|
|
3
3
|
class Fact
|
|
4
4
|
require 'sisimai/message'
|
|
5
5
|
require 'sisimai/rfc1894'
|
|
@@ -383,15 +383,9 @@ module Sisimai
|
|
|
383
383
|
# REASON: Decide the reason of email bounce
|
|
384
384
|
if o['reason'].empty? || RetryIndex[o['reason']]
|
|
385
385
|
# The value of "reason" is empty or is needed to check with other values again
|
|
386
|
-
re = ''
|
|
387
|
-
|
|
388
|
-
if
|
|
389
|
-
# Failed to detect a bounce reason by the value of "rhost"
|
|
390
|
-
re = Sisimai::Rhost.get(o, de) if Sisimai::Rhost.match(de)
|
|
391
|
-
re = Sisimai::Reason.get(o) if re.empty?
|
|
392
|
-
re = 'undefined' if re.empty?
|
|
393
|
-
end
|
|
394
|
-
o['reason'] = re
|
|
386
|
+
re = o['reason'].empty? ? 'undefined' : o['reason']
|
|
387
|
+
o['reason'] = Sisimai::Rhost.get(o) || Sisimai::Reason.get(o)
|
|
388
|
+
o['reason'] = re if o['reason'].empty?
|
|
395
389
|
end
|
|
396
390
|
|
|
397
391
|
# HARDBOUNCE: Set the value of "hardbounce", default value of "bouncebounce" is false
|
|
@@ -443,15 +437,6 @@ module Sisimai
|
|
|
443
437
|
return listoffact
|
|
444
438
|
end
|
|
445
439
|
|
|
446
|
-
# Emulate "softbounce" accessor for the backward compatible
|
|
447
|
-
# @return [Integer]
|
|
448
|
-
def softbounce
|
|
449
|
-
warn ' ***warning: Sisimai::Fact.softbounce will be removed at v5.1.0. Use Sisimai::Fact.hardbounce instead'
|
|
450
|
-
return 0 if self.hardbounce
|
|
451
|
-
return -1 if self.reason == 'delivered' || self.reason == 'feedback' || self.reason == 'vacation'
|
|
452
|
-
return 1
|
|
453
|
-
end
|
|
454
|
-
|
|
455
440
|
# Convert from Sisimai::Fact object to a Hash
|
|
456
441
|
# @return [Hash] Hashed data
|
|
457
442
|
def damn
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Activehunter
|
|
2
|
+
# Sisimai::Lhost::Activehunter decodes a bounce email which created by QUALITIA Active!hunter
|
|
3
|
+
# https://www.qualitia.com/jp/product/ah/function.html.
|
|
3
4
|
# Methods in the module are called from only Sisimai::Message.
|
|
4
5
|
module Activehunter
|
|
5
6
|
class << self
|
|
@@ -9,11 +10,11 @@ module Sisimai::Lhost
|
|
|
9
10
|
Boundaries = ['Content-Type: message/rfc822'].freeze
|
|
10
11
|
StartingOf = { message: [' ----- The following addresses had permanent fatal errors -----'] }.freeze
|
|
11
12
|
|
|
12
|
-
#
|
|
13
|
+
# @abstract decodes the bounce message from QUALITIA Active!hunter
|
|
13
14
|
# @param [Hash] mhead Message headers of a bounce email
|
|
14
15
|
# @param [String] mbody Message body of a bounce email
|
|
15
16
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
16
|
-
# @return [Nil] it failed to
|
|
17
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
17
18
|
def inquire(mhead, mbody)
|
|
18
19
|
# :from => %r/\A"MAILER-DAEMON"/,
|
|
19
20
|
# :subject => %r/FAILURE NOTICE :/,
|
data/lib/sisimai/lhost/amavis.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Amavis
|
|
3
|
-
# are called from only Sisimai::Message.
|
|
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
4
|
module Amavis
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -68,11 +68,11 @@ module Sisimai::Lhost
|
|
|
68
68
|
],
|
|
69
69
|
}.freeze
|
|
70
70
|
|
|
71
|
-
#
|
|
71
|
+
# @abstract Decodes the bounce message from amavisd-new
|
|
72
72
|
# @param [Hash] mhead Message headers of a bounce email
|
|
73
73
|
# @param [String] mbody Message body of a bounce email
|
|
74
74
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
75
|
-
# @return [Nil] it failed to
|
|
75
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
76
76
|
# @since v4.25.0
|
|
77
77
|
def inquire(mhead, mbody)
|
|
78
78
|
# From: "Content-filter at neko1.example.jp" <postmaster@neko1.example.jp>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::AmazonSES
|
|
3
|
-
# Methods in the module are called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::AmazonSES decodes a bounce email which created by Amazon Simple Email Service
|
|
3
|
+
# https://aws.amazon.com/ses/. Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module AmazonSES
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -13,11 +13,11 @@ module Sisimai::Lhost
|
|
|
13
13
|
}.freeze
|
|
14
14
|
MessagesOf = { 'expired' => ['Delivery expired'] }.freeze
|
|
15
15
|
|
|
16
|
-
#
|
|
16
|
+
# @abstract Decodes the bounce message from Amazon SES
|
|
17
17
|
# @param [Hash] mhead Message headers of a bounce email
|
|
18
18
|
# @param [String] mbody Message body of a bounce email
|
|
19
19
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
20
|
-
# @return [Nil] it failed to
|
|
20
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
21
21
|
def inquire(mhead, mbody)
|
|
22
22
|
dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
|
|
23
23
|
recipients = 0 # (Integer) The number of 'Final-Recipient' header
|
|
@@ -292,7 +292,7 @@ module Sisimai::Lhost
|
|
|
292
292
|
end
|
|
293
293
|
|
|
294
294
|
if recipients == 0 && mbody =~ /notificationType/
|
|
295
|
-
# Try to
|
|
295
|
+
# Try to decode with Sisimai::Lhost::AmazonSES module
|
|
296
296
|
j = Sisimai::Lhost::AmazonSES.json(mhead, mbody)
|
|
297
297
|
|
|
298
298
|
if j['ds'].is_a? Array
|
|
@@ -328,7 +328,7 @@ module Sisimai::Lhost
|
|
|
328
328
|
end
|
|
329
329
|
|
|
330
330
|
return { 'ds' => dscontents, 'rfc822' => emailparts[1] }
|
|
331
|
-
end # END of
|
|
331
|
+
end # END of the decoder for the email message
|
|
332
332
|
|
|
333
333
|
end
|
|
334
334
|
def description; return 'Amazon SES(Sending): https://aws.amazon.com/ses/'; end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::AmazonWorkMail
|
|
3
|
-
# in the module are called from only Sisimai::Message.
|
|
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
4
|
module AmazonWorkMail
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -10,11 +10,11 @@ module Sisimai::Lhost
|
|
|
10
10
|
Boundaries = ['Content-Type: message/rfc822'].freeze
|
|
11
11
|
StartingOf = { message: ['Technical report:'] }.freeze
|
|
12
12
|
|
|
13
|
-
#
|
|
13
|
+
# @abstract Decodes the bounce message from Amazon WorkMail
|
|
14
14
|
# @param [Hash] mhead Message headers of a bounce email
|
|
15
15
|
# @param [String] mbody Message body of a bounce email
|
|
16
16
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
17
|
-
# @return [Nil] it failed to
|
|
17
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
18
18
|
def inquire(mhead, mbody)
|
|
19
19
|
# X-Mailer: Amazon WorkMail
|
|
20
20
|
# X-Original-Mailer: Amazon WorkMail
|
data/lib/sisimai/lhost/aol.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Aol
|
|
3
|
-
# called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::Aol decodes a bounce email which created by Aol Mail https://mail.aol.com/.
|
|
3
|
+
# Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module Aol
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -13,11 +13,11 @@ module Sisimai::Lhost
|
|
|
13
13
|
'notaccept' => ['type=MX: Malformed or unexpected name server reply'],
|
|
14
14
|
}.freeze
|
|
15
15
|
|
|
16
|
-
#
|
|
16
|
+
# @abstract Decodes the bounce message from Aol Mail
|
|
17
17
|
# @param [Hash] mhead Message headers of a bounce email
|
|
18
18
|
# @param [String] mbody Message body of a bounce email
|
|
19
19
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
20
|
-
# @return [Nil] it failed to
|
|
20
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
21
21
|
def inquire(mhead, mbody)
|
|
22
22
|
# X-AOL-IP: 192.0.2.135
|
|
23
23
|
# X-AOL-VSS-INFO: 5600.1067/98281
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::ApacheJames
|
|
3
|
-
# module are called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::ApacheJames decodes a bounce email which created by ApacheJames https://james.apache.org/.
|
|
3
|
+
# Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module ApacheJames
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -15,11 +15,11 @@ module Sisimai::Lhost
|
|
|
15
15
|
error: ['Error message below:'],
|
|
16
16
|
}.freeze
|
|
17
17
|
|
|
18
|
-
#
|
|
18
|
+
# @abstract decodes the bounce message from Apache James
|
|
19
19
|
# @param [Hash] mhead Message headers of a bounce email
|
|
20
20
|
# @param [String] mbody Message body of a bounce email
|
|
21
21
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
22
|
-
# @return [Nil] it failed to
|
|
22
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
23
23
|
def inquire(mhead, mbody)
|
|
24
24
|
match = 0
|
|
25
25
|
match += 1 if mhead['subject'] == '[BOUNCE]'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Barracuda
|
|
3
|
-
# are called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::Barracuda decodes a bounce email which created by Barracuda https://www.barracuda.com/.
|
|
3
|
+
# Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module Barracuda
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -9,11 +9,11 @@ module Sisimai::Lhost
|
|
|
9
9
|
Boundaries = ['Content-Type: text/rfc822-headers'].freeze
|
|
10
10
|
StartingOf = { message: ['Your message to:'] }.freeze
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
# @abstract Decodes the bounce message from Barracuda
|
|
13
13
|
# @param [Hash] mhead Message headers of a bounce email
|
|
14
14
|
# @param [String] mbody Message body of a bounce email
|
|
15
15
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
16
|
-
# @return [Nil] it failed to
|
|
16
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
17
17
|
# @since v4.25.6
|
|
18
18
|
def inquire(mhead, mbody)
|
|
19
19
|
# Subject: **Message you sent blocked by our bulk email filter**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Bigfoot
|
|
3
|
-
# are called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::Bigfoot decodes a bounce email which created by Bigfoot https://www.bigfoot.com/.
|
|
3
|
+
# Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module Bigfoot
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -9,11 +9,11 @@ module Sisimai::Lhost
|
|
|
9
9
|
Boundaries = ['Content-Type: message/partial'].freeze
|
|
10
10
|
MarkingsOf = { message: ' ----- Transcript of session follows -----' }.freeze
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
# @abstract Decodes the bounce message from Bigfoot
|
|
13
13
|
# @param [Hash] mhead Message headers of a bounce email
|
|
14
14
|
# @param [String] mbody Message body of a bounce email
|
|
15
15
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
16
|
-
# @return [Nil] it failed to
|
|
16
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
17
17
|
def inquire(mhead, mbody)
|
|
18
18
|
# :subject => %r/\AReturned mail: /,
|
|
19
19
|
match = 0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Biglobe
|
|
3
|
-
# are called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::Biglobe decodes a bounce email which created by BIGLOBE https://www.biglobe.ne.jp/.
|
|
3
|
+
# Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module Biglobe
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -16,11 +16,11 @@ module Sisimai::Lhost
|
|
|
16
16
|
'mailboxfull' => ["The number of messages in recipient's mailbox exceeded the local limit."],
|
|
17
17
|
}.freeze
|
|
18
18
|
|
|
19
|
-
#
|
|
19
|
+
# @asbtract Decodes the bounce message from Biglobe
|
|
20
20
|
# @param [Hash] mhead Message headers of a bounce email
|
|
21
21
|
# @param [String] mbody Message body of a bounce email
|
|
22
22
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
23
|
-
# @return [Nil] it failed to
|
|
23
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
24
24
|
def inquire(mhead, mbody)
|
|
25
25
|
return nil unless mhead['from'].include?('postmaster@')
|
|
26
26
|
return nil unless %w[biglobe inacatv tmtv ttv].any? { |a| mhead['from'].include?('@' + a + '.ne.jp') }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Courier
|
|
3
|
-
# are called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::Courier decodes a bounce email which created by Courier MTA https://www.courier-mta.org/.
|
|
3
|
+
# Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module Courier
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -23,11 +23,11 @@ module Sisimai::Lhost
|
|
|
23
23
|
'networkerror' => ['DNS lookup failed.'],
|
|
24
24
|
}.freeze
|
|
25
25
|
|
|
26
|
-
#
|
|
26
|
+
# @abstract Decodes the bounce message from Courier MTA
|
|
27
27
|
# @param [Hash] mhead Message headers of a bounce email
|
|
28
28
|
# @param [String] mbody Message body of a bounce email
|
|
29
29
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
30
|
-
# @return [Nil] it failed to
|
|
30
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
31
31
|
def inquire(mhead, mbody)
|
|
32
32
|
match = 0
|
|
33
33
|
match += 1 if mhead['from'].include?('Courier mail server at ')
|
data/lib/sisimai/lhost/domino.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Sisimai::Lhost
|
|
2
|
-
# Sisimai::Lhost::Domino
|
|
3
|
-
# module are called from only Sisimai::Message.
|
|
2
|
+
# Sisimai::Lhost::Domino decodes a bounce email which created by HCL Domino https://www.hcl-software.com/domino.
|
|
3
|
+
# Methods in the module are called from only Sisimai::Message.
|
|
4
4
|
module Domino
|
|
5
5
|
class << self
|
|
6
6
|
require 'sisimai/lhost'
|
|
@@ -20,11 +20,11 @@ module Sisimai::Lhost
|
|
|
20
20
|
'systemerror' => ['Several matches found in Domino Directory'],
|
|
21
21
|
}.freeze
|
|
22
22
|
|
|
23
|
-
#
|
|
23
|
+
# @abstract Decodes the bounce message from HCL Domino (formerly IBM Domino Server (formerly Lotus Domino))
|
|
24
24
|
# @param [Hash] mhead Message headers of a bounce email
|
|
25
25
|
# @param [String] mbody Message body of a bounce email
|
|
26
26
|
# @return [Hash] Bounce data list and message/rfc822 part
|
|
27
|
-
# @return [Nil] it failed to
|
|
27
|
+
# @return [Nil] it failed to decode or the arguments are missing
|
|
28
28
|
def inquire(mhead, mbody)
|
|
29
29
|
return nil unless mhead['subject'].start_with?('DELIVERY FAILURE:', 'DELIVERY_FAILURE:')
|
|
30
30
|
|