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.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codecovio.yml +3 -1
  3. data/.github/workflows/rake-test.yml +6 -2
  4. data/ChangeLog.md +34 -0
  5. data/README-JA.md +20 -17
  6. data/README.md +20 -17
  7. data/lib/sisimai/arf.rb +3 -3
  8. data/lib/sisimai/fact/json.rb +2 -2
  9. data/lib/sisimai/fact/yaml.rb +2 -2
  10. data/lib/sisimai/fact.rb +4 -19
  11. data/lib/sisimai/lhost/activehunter.rb +4 -3
  12. data/lib/sisimai/lhost/amavis.rb +4 -4
  13. data/lib/sisimai/lhost/amazonses.rb +6 -6
  14. data/lib/sisimai/lhost/amazonworkmail.rb +4 -4
  15. data/lib/sisimai/lhost/aol.rb +4 -4
  16. data/lib/sisimai/lhost/apachejames.rb +4 -4
  17. data/lib/sisimai/lhost/barracuda.rb +4 -4
  18. data/lib/sisimai/lhost/bigfoot.rb +4 -4
  19. data/lib/sisimai/lhost/biglobe.rb +4 -4
  20. data/lib/sisimai/lhost/courier.rb +4 -4
  21. data/lib/sisimai/lhost/domino.rb +4 -4
  22. data/lib/sisimai/lhost/dragonfly.rb +114 -0
  23. data/lib/sisimai/lhost/einsundeins.rb +4 -4
  24. data/lib/sisimai/lhost/exchange2003.rb +4 -3
  25. data/lib/sisimai/lhost/exchange2007.rb +4 -3
  26. data/lib/sisimai/lhost/exim.rb +4 -4
  27. data/lib/sisimai/lhost/ezweb.rb +4 -4
  28. data/lib/sisimai/lhost/facebook.rb +4 -4
  29. data/lib/sisimai/lhost/fml.rb +4 -4
  30. data/lib/sisimai/lhost/gmail.rb +4 -4
  31. data/lib/sisimai/lhost/gmx.rb +4 -4
  32. data/lib/sisimai/lhost/googlegroups.rb +4 -4
  33. data/lib/sisimai/lhost/gsuite.rb +4 -4
  34. data/lib/sisimai/lhost/imailserver.rb +4 -3
  35. data/lib/sisimai/lhost/interscanmss.rb +5 -4
  36. data/lib/sisimai/lhost/kddi.rb +4 -4
  37. data/lib/sisimai/lhost/mailfoundry.rb +4 -4
  38. data/lib/sisimai/lhost/mailmarshalsmtp.rb +5 -4
  39. data/lib/sisimai/lhost/mailru.rb +4 -4
  40. data/lib/sisimai/lhost/mcafee.rb +4 -4
  41. data/lib/sisimai/lhost/messagelabs.rb +4 -3
  42. data/lib/sisimai/lhost/messagingserver.rb +5 -4
  43. data/lib/sisimai/lhost/mfilter.rb +4 -4
  44. data/lib/sisimai/lhost/mxlogic.rb +3 -3
  45. data/lib/sisimai/lhost/notes.rb +4 -4
  46. data/lib/sisimai/lhost/office365.rb +4 -4
  47. data/lib/sisimai/lhost/opensmtpd.rb +9 -7
  48. data/lib/sisimai/lhost/outlook.rb +4 -4
  49. data/lib/sisimai/lhost/postfix.rb +4 -4
  50. data/lib/sisimai/lhost/powermta.rb +4 -4
  51. data/lib/sisimai/lhost/qmail.rb +10 -10
  52. data/lib/sisimai/lhost/receivingses.rb +4 -4
  53. data/lib/sisimai/lhost/sendgrid.rb +4 -4
  54. data/lib/sisimai/lhost/sendmail.rb +4 -4
  55. data/lib/sisimai/lhost/surfcontrol.rb +4 -4
  56. data/lib/sisimai/lhost/v5sendmail.rb +5 -4
  57. data/lib/sisimai/lhost/verizon.rb +4 -4
  58. data/lib/sisimai/lhost/x1.rb +3 -3
  59. data/lib/sisimai/lhost/x2.rb +3 -3
  60. data/lib/sisimai/lhost/x3.rb +3 -3
  61. data/lib/sisimai/lhost/x4.rb +3 -3
  62. data/lib/sisimai/lhost/x5.rb +3 -3
  63. data/lib/sisimai/lhost/x6.rb +3 -3
  64. data/lib/sisimai/lhost/yahoo.rb +4 -4
  65. data/lib/sisimai/lhost/yandex.rb +4 -4
  66. data/lib/sisimai/lhost/zoho.rb +4 -4
  67. data/lib/sisimai/lhost.rb +5 -5
  68. data/lib/sisimai/mail/maildir.rb +1 -1
  69. data/lib/sisimai/mail/stdin.rb +1 -1
  70. data/lib/sisimai/mda.rb +3 -3
  71. data/lib/sisimai/message.rb +8 -8
  72. data/lib/sisimai/order.rb +1 -0
  73. data/lib/sisimai/reason/badreputation.rb +1 -1
  74. data/lib/sisimai/reason/norelaying.rb +1 -0
  75. data/lib/sisimai/reason/rejected.rb +1 -0
  76. data/lib/sisimai/reason.rb +8 -8
  77. data/lib/sisimai/rfc3464.rb +3 -3
  78. data/lib/sisimai/rfc3834.rb +2 -2
  79. data/lib/sisimai/rhost/apple.rb +92 -0
  80. data/lib/sisimai/rhost/cox.rb +81 -32
  81. data/lib/sisimai/rhost/franceptt.rb +84 -81
  82. data/lib/sisimai/rhost/godaddy.rb +205 -43
  83. data/lib/sisimai/rhost/google.rb +3 -5
  84. data/lib/sisimai/rhost/iua.rb +2 -2
  85. data/lib/sisimai/rhost/kddi.rb +6 -5
  86. data/lib/sisimai/rhost/microsoft.rb +4 -5
  87. data/lib/sisimai/rhost/mimecast.rb +15 -4
  88. data/lib/sisimai/rhost/nttdocomo.rb +1 -1
  89. data/lib/sisimai/rhost/spectrum.rb +100 -40
  90. data/lib/sisimai/rhost/tencent.rb +46 -25
  91. data/lib/sisimai/rhost/yahooinc.rb +110 -0
  92. data/lib/sisimai/rhost.rb +28 -35
  93. data/lib/sisimai/smtp/reply.rb +4 -3
  94. data/lib/sisimai/smtp/transcript.rb +3 -3
  95. data/lib/sisimai/version.rb +1 -1
  96. data/lib/sisimai.rb +0 -6
  97. data/set-of-emails/maildir/bsd/lhost-dragonfly-01.eml +36 -0
  98. data/set-of-emails/maildir/bsd/lhost-dragonfly-02.eml +32 -0
  99. data/set-of-emails/maildir/bsd/lhost-dragonfly-03.eml +32 -0
  100. data/set-of-emails/maildir/bsd/lhost-dragonfly-04.eml +31 -0
  101. data/set-of-emails/maildir/bsd/lhost-dragonfly-05.eml +32 -0
  102. data/set-of-emails/maildir/bsd/lhost-dragonfly-06.eml +32 -0
  103. data/set-of-emails/maildir/bsd/lhost-dragonfly-07.eml +32 -0
  104. data/set-of-emails/maildir/bsd/lhost-dragonfly-08.eml +32 -0
  105. data/set-of-emails/maildir/bsd/lhost-dragonfly-09.eml +32 -0
  106. data/set-of-emails/maildir/bsd/lhost-dragonfly-10.eml +32 -0
  107. data/set-of-emails/maildir/bsd/lhost-dragonfly-11.eml +32 -0
  108. data/set-of-emails/maildir/bsd/lhost-dragonfly-12.eml +32 -0
  109. data/set-of-emails/maildir/bsd/lhost-dragonfly-13.eml +32 -0
  110. data/set-of-emails/maildir/bsd/lhost-dragonfly-14.eml +32 -0
  111. data/set-of-emails/maildir/bsd/lhost-dragonfly-15.eml +32 -0
  112. data/set-of-emails/maildir/bsd/lhost-dragonfly-16.eml +32 -0
  113. data/set-of-emails/maildir/bsd/lhost-dragonfly-17.eml +32 -0
  114. data/set-of-emails/maildir/bsd/lhost-dragonfly-18.eml +32 -0
  115. data/set-of-emails/maildir/bsd/lhost-dragonfly-19.eml +32 -0
  116. data/set-of-emails/maildir/bsd/lhost-dragonfly-20.eml +32 -0
  117. data/set-of-emails/maildir/bsd/lhost-dragonfly-21.eml +33 -0
  118. data/set-of-emails/maildir/bsd/lhost-dragonfly-22.eml +32 -0
  119. data/set-of-emails/maildir/bsd/lhost-dragonfly-23.eml +32 -0
  120. data/set-of-emails/maildir/bsd/lhost-dragonfly-24.eml +32 -0
  121. data/set-of-emails/maildir/bsd/lhost-dragonfly-25.eml +33 -0
  122. data/set-of-emails/maildir/bsd/lhost-dragonfly-26.eml +33 -0
  123. data/set-of-emails/maildir/bsd/lhost-dragonfly-27.eml +47 -0
  124. data/set-of-emails/maildir/bsd/lhost-dragonfly-28.eml +47 -0
  125. data/set-of-emails/maildir/bsd/lhost-dragonfly-29.eml +32 -0
  126. data/set-of-emails/maildir/bsd/lhost-dragonfly-30.eml +32 -0
  127. data/set-of-emails/maildir/bsd/lhost-opensmtpd-10.eml +58 -0
  128. data/set-of-emails/maildir/bsd/lhost-opensmtpd-11.eml +58 -0
  129. data/set-of-emails/maildir/bsd/lhost-opensmtpd-12.eml +62 -0
  130. data/set-of-emails/maildir/bsd/lhost-opensmtpd-13.eml +62 -0
  131. data/set-of-emails/maildir/bsd/lhost-opensmtpd-14.eml +58 -0
  132. data/set-of-emails/maildir/bsd/lhost-opensmtpd-15.eml +63 -0
  133. data/set-of-emails/maildir/bsd/lhost-opensmtpd-16.eml +62 -0
  134. data/set-of-emails/maildir/bsd/lhost-opensmtpd-17.eml +63 -0
  135. data/set-of-emails/maildir/bsd/lhost-qmail-11.eml +29 -0
  136. data/set-of-emails/maildir/bsd/lhost-qmail-12.eml +29 -0
  137. data/set-of-emails/maildir/bsd/lhost-qmail-13.eml +29 -0
  138. data/set-of-emails/maildir/bsd/lhost-qmail-14.eml +34 -0
  139. data/set-of-emails/maildir/bsd/lhost-qmail-15.eml +30 -0
  140. data/set-of-emails/maildir/bsd/lhost-qmail-16.eml +31 -0
  141. data/set-of-emails/maildir/bsd/lhost-qmail-17.eml +38 -0
  142. data/set-of-emails/maildir/bsd/lhost-qmail-18.eml +31 -0
  143. data/set-of-emails/maildir/bsd/lhost-qmail-19.eml +31 -0
  144. data/set-of-emails/maildir/bsd/lhost-qmail-20.eml +46 -0
  145. data/set-of-emails/maildir/bsd/lhost-qmail-21.eml +41 -0
  146. data/set-of-emails/maildir/bsd/lhost-qmail-22.eml +42 -0
  147. data/set-of-emails/maildir/bsd/lhost-qmail-23.eml +43 -0
  148. data/set-of-emails/maildir/bsd/lhost-qmail-24.eml +43 -0
  149. data/set-of-emails/maildir/bsd/lhost-qmail-25.eml +54 -0
  150. data/set-of-emails/maildir/bsd/rhost-apple-01.eml +79 -0
  151. data/set-of-emails/maildir/bsd/rhost-apple-02.eml +81 -0
  152. data/set-of-emails/maildir/bsd/rhost-apple-03.eml +75 -0
  153. data/set-of-emails/maildir/bsd/rhost-apple-04.eml +74 -0
  154. data/set-of-emails/maildir/bsd/rhost-yahooinc-01.eml +80 -0
  155. data/set-of-emails/maildir/bsd/rhost-yahooinc-02.eml +83 -0
  156. data/set-of-emails/maildir/bsd/rhost-yahooinc-03.eml +125 -0
  157. metadata +65 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54c592e5b1c8a3be27062107f12c99a55a70e953523df5c6c575e668a71e0dde
4
- data.tar.gz: c6f726ab72d810a9447b3e7df6cccab4c458e899bd52c652c1260b7ba063fd3c
3
+ metadata.gz: ddf0430c212f7bed1058a268f5dbbff54ecbcfdf7560259647552b6edf082e94
4
+ data.tar.gz: 978bceb01352802bc8c2f597a2eacca31309fd9b8be107229ca3e4598d849f04
5
5
  SHA512:
6
- metadata.gz: 910179d9e65f229fb8775bf104e469bfb7b5c8d04d1888f2bdf1fb9e47cb00a6710e5e76cdb15118ceb4bf1358b8020cc70fecfab5c8a72ff0ab773fafd5b9fd
7
- data.tar.gz: 949e5a68e872884ad3718dbc9280107c9c59c18986994878552c3d0bd0e595ac9ced30bf79ef1db33281757956f26fee0f8fcfc7d697159abbc718073006a61a
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: ["5-stable"]
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: ["5-stable"]
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@v2
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
- * [70種類のMTAs/MDAs/ESPs](https://libsisimai.org/en/engine/)に対応
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.3.gem (100%)
114
- Successfully installed sisimai-5.0.3
115
- Parsing documentation for sisimai-5.0.3
116
- Installing ri documentation for sisimai-5.0.3
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.3 built to pkg/sisimai-5.0.3.gem.
145
- sisimai (5.0.3) installed.
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.3 built to pkg/sisimai-5.0.3-java.gem.
150
- sisimai (5.0.3) installed.
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 | 70 |
354
+ | 解析エンジン(MTA/ESPモジュール)の数 | 68 | 73 |
355
355
  | 検出可能なバウンス理由の数 | 29 | 34 |
356
356
  | 依存Gem数(Ruby Standard Gemsを除く) | 1 Gem | 1 Gem |
357
- | ソースコードの行数 | 10,800 行 | 11,370 行 |
357
+ | ソースコードの行数 | 10,800 行 | 11,660 行 |
358
358
  | テストフレームワーク | rspec | minitest |
359
- | テスト件数(spec/またはtest/ディレクトリ) | 311,000 件 | 338,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::Rhost::` | Sisimai 4 | Sisimai 5 |
393
- |------------------------------------------------------|--------------------|---------------------|
394
- | Microsoft Exchange Online | `ExchangeOnline` | `Microsoft` |
395
- | Google Workspace | `GoogleApps` | `Google` |
396
- | Tencent | `TencentQQ` | `Tencent` |
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 [70 MTAs/MDAs/ESPs](https://libsisimai.org/en/engine/)
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.3.gem (100%)
113
- Successfully installed sisimai-5.0.3
114
- Parsing documentation for sisimai-5.0.3
115
- Installing ri documentation for sisimai-5.0.3
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.3 built to pkg/sisimai-5.0.3.gem.
144
- sisimai (5.0.3) installed.
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.3 built to pkg/sisimai-5.0.3-java.gem.
149
- sisimai (5.0.3) installed.
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 | 70 |
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,370 lines |
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 | 338,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::Rhost::` | Sisimai 4 | Sisimai 5 |
394
- |------------------------------------------------------|--------------------|---------------------|
395
- | Microsoft Exchange Online | `ExchangeOnline` | `Microsoft` |
396
- | Google Workspace | `GoogleApps` | `Google` |
397
- | Tencent | `TencentQQ` | `Tencent` |
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 parser for email returned as a FeedBack Loop report message.
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 parse or the arguments are missing
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
 
@@ -1,7 +1,7 @@
1
1
  module Sisimai
2
2
  class Fact
3
- # Sisimai::Fact::JSON dumps parsed data object as a JSON format. This class and method should be
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)
@@ -1,7 +1,7 @@
1
1
  module Sisimai
2
2
  class Fact
3
- # Sisimai::Fact::YAML dumps parsed data object as a YAML format. This class and method should be
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 parsed data
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 = ''; de = o['destination']
387
- re = Sisimai::Rhost.get(o) if Sisimai::Rhost.match(o['rhost'])
388
- if re.empty?
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 parses a bounce email which created by TransWARE Active!hunter.
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
- # Parse bounce messages from TransWARE Active!hunter
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 parse or the arguments are missing
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 :/,
@@ -1,6 +1,6 @@
1
1
  module Sisimai::Lhost
2
- # Sisimai::Lhost::Amavis parses a bounce email which created by amavsid-new. Methods in the module
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
- # Parse bounce messages from amavisd-new
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 parse or the arguments are missing
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 parses a bounce email which created by Amazon Simple Email Service.
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
- # Parse bounce messages from Amazon SES
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 parse or the arguments are missing
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 parse with Sisimai::Lhost::AmazonSES module
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 a parser for email message
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 parses a bounce email which created by Amazon WorkMail. Methods
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
- # Parse bounce messages from Amazon WorkMail
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 parse or the arguments are missing
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
@@ -1,6 +1,6 @@
1
1
  module Sisimai::Lhost
2
- # Sisimai::Lhost::Aol parses a bounce email which created by Aol Mail. Methods in the module are
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
- # Parse bounce messages from Aol Mail
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 parse or the arguments are missing
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 parses a bounce email which created by ApacheJames. Methods in the
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
- # Parse bounce messages from Apache James
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 parse or the arguments are missing
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 parses a bounce email which created by Barracuda. Methods in the module
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
- # Parse bounce messages from Barracuda
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 parse or the arguments are missing
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 parses a bounce email which created by Bigfoot. Methods in the module
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
- # Parse bounce messages from Bigfoot
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 parse or the arguments are missing
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 parses a bounce email which created by BIGLOBE. Methods in the module
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
- # Parse bounce messages from Biglobe
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 parse or the arguments are missing
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 parses a bounce email which created by Courier MTA. Methods in the module
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
- # Parse bounce messages from Courier MTA
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 parse or the arguments are missing
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 ')
@@ -1,6 +1,6 @@
1
1
  module Sisimai::Lhost
2
- # Sisimai::Lhost::Domino parses a bounce email which created by IBM Domino Server. Methods in the
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
- # Parse bounce messages from IBM Domino Server
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 parse or the arguments are missing
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