{"id":22281978,"url":"https://github.com/sisimai/rb-sisimai","last_synced_at":"2025-05-16T05:04:08.771Z","repository":{"id":28141940,"uuid":"31641851","full_name":"sisimai/rb-sisimai","owner":"sisimai","description":"Mail Analyzing Interface for email bounce: A Ruby library to parse RFC5322 bounce mails and generating structured data as JSON from parsed results. Ruby version of Sisimai: an error mail analyzer.","archived":false,"fork":false,"pushed_at":"2025-05-08T22:50:40.000Z","size":7163,"stargazers_count":85,"open_issues_count":5,"forks_count":19,"subscribers_count":6,"default_branch":"5-stable","last_synced_at":"2025-05-16T05:02:33.684Z","etag":null,"topics":["bounce","bounce-mails","bounce-messages","email","email-bounce","email-parsing","mail","ruby","sisimai","smtp"],"latest_commit_sha":null,"homepage":"https://libsisimai.org/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sisimai.png","metadata":{"files":{"readme":"README-JA.md","changelog":"ChangeLog.md","contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-03-04T06:27:24.000Z","updated_at":"2025-05-08T22:50:44.000Z","dependencies_parsed_at":"2024-05-04T04:24:11.727Z","dependency_job_id":"f893e890-db44-4e3f-8cbb-56999e2f78ec","html_url":"https://github.com/sisimai/rb-sisimai","commit_stats":null,"previous_names":[],"tags_count":161,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Frb-sisimai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Frb-sisimai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Frb-sisimai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Frb-sisimai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sisimai","download_url":"https://codeload.github.com/sisimai/rb-sisimai/tar.gz/refs/heads/5-stable","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471062,"owners_count":22076585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bounce","bounce-mails","bounce-messages","email","email-bounce","email-parsing","mail","ruby","sisimai","smtp"],"created_at":"2024-12-03T16:24:10.931Z","updated_at":"2025-05-16T05:04:08.731Z","avatar_url":"https://github.com/sisimai.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://libsisimai.org/static/images/logo/sisimai-x01.png)\n[![License](https://img.shields.io/badge/license-BSD%202--Clause-orange.svg)](https://github.com/sisimai/rb-sisimai/blob/master/LICENSE)\n[![Ruby](https://img.shields.io/badge/ruby-v2.4.0--v3.4.0-red.svg)](https://www.ruby-lang.org/)\n[![Gem Version](https://badge.fury.io/rb/sisimai.svg)](https://badge.fury.io/rb/sisimai)\n[![codecov](https://codecov.io/github/sisimai/rb-sisimai/graph/badge.svg?token=YGkyluNWiZ)](https://codecov.io/github/sisimai/rb-sisimai)\n\n\u003e [!IMPORTANT]\n\u003e **2024年2月2日の時点でこのリポジトリのデフォルトブランチは[5-stable](https://github.com/sisimai/rb-sisimai/tree/5-stable)\n\u003e (Sisimai 5)になりました。** もし古いバージョンを使いたい場合は[4-stable](https://github.com/sisimai/rb-sisimai/tree/4-stable)[^1]\n\u003e ブランチを見てください。また`main`や`master`ブランチはもうこのリポジトリでは使用していません。\n[^1]: 4系を`clone`する場合は`git clone -b 4-stable https://github.com/sisimai/rb-sisimai.git`\n\n\u003e [!CAUTION]\n\u003e **Sisimai 4.25.14p11およびそれ以前のバージョンには 正規表現に関する脆弱性\n\u003e [ReDoS: CVE-2022-4891](https://jvndb.jvn.jp/ja/contents/2022/JVNDB-2022-005663.html)があります。\n\u003e 該当するバージョンをお使いの場合はv4.25.14p12以降へアップグレードしてください。**\n\n\u003e [!WARNING]\n\u003e Sisimai 5はRuby 2.4以上が必要です。インストール/アップグレードを実行する前に`ruby -v`コマンドで\n\u003e システムに入っているRubyのバージョンを確認してください。\n\n\u003e [!NOTE]\n\u003e SisimaiはPerlモジュールまたはRuby Gemですが、PHPやPython、GoやRustなどJSONを読める言語であれば\n\u003e どのような環境においても解析結果を得ることでバウンスの発生状況を捉えるのにとても有用です。\n\n- [**README(English)**](README.md)\n- [シシマイ? | What is Sisimai](#what-is-sisimai)\n    - [主な特徴的機能 | The key features](#the-key-features-of-sisimai)\n    - [コマンドラインでのデモ | Command line demo](#command-line-demo)\n- [シシマイを使う準備 | Setting Up Sisimai](#setting-up-sisimai)\n    - [動作環境 | System requirements](#system-requirements)\n    - [インストール | Install](#install)\n        - [RubyGemsから | From RubyGems](#from-rubygems)\n        - [GitHubから | From GitHub](#from-github)\n- [使い方 | Usage](#usage)\n    - [基本的な使い方 | Basic usage](#basic-usage)\n    - [解析結果をJSONで得る | Convert to JSON](#convert-to-json)\n    - [コールバック機能 | Callback feature](#callback-feature)\n    - [ワンライナー | One-Liner](#one-liner)\n    - [出力例 | Output example](#output-example)\n- [Sisimai 4とSisimai 5の違い](#differences-between-sisimai-4-and-sisimai-5)\n    - [機能など](#features)\n    - [解析メソッド](#decoding-methods)\n    - [MTA/ESPモジュール](#mtaesp-module-names)\n    - [バウンス理由](#bounce-reasons)\n- [Contributing](#contributing)\n    - [バグ報告 | Bug report](#bug-report)\n    - [解析できないメール | Emails could not be decoded](#emails-could-not-be-decoded)\n- [その他の情報 | Other Information](#other-information)\n    - [関連サイト | Related sites](#related-sites)\n    - [参考情報| See also](#see-also)\n- [作者 | Author](#author)\n- [著作権 | Copyright](#copyright)\n- [ライセンス | License](#license)\n\nWhat is Sisimai\n===================================================================================================\nSisimai(シシマイ)は複雑で多種多様なバウンスメールを解析してバウンスした理由や宛先メールアドレスなど\n配信が失敗した結果を構造化データで出力するライブラリでJSONでの出力も可能です。Ruby版シシマイは\n[github.com/sisimai/p5-sisimai](https://github.com/sisimai/p5-sisimai/)で公開しているPerl版シシマイ\nから移植しました。\n\n![](https://libsisimai.org/static/images/figure/sisimai-overview-2.png)\n\nThe key features of Sisimai\n---------------------------------------------------------------------------------------------------\n* __バウンスメールを構造化したデータに変換__\n  * 以下26項目の情報を含むデータ構造[^2]\n    * __基本的情報__: `timestamp`, `origin`\n    * __発信者情報__: `addresser`, `senderdomain`, \n    * __受信者情報__: `recipient`, `destination`, `alias`\n    * __配信の情報__: `action`, `replycode`, `deliverystatus`, `command`\n    * __エラー情報__: `reason`, `diagnosticcode`, `diagnostictype`, `feedbacktype`, `hardbounce`\n    * __メール情報__: `subject`, `messageid`, `listid`,\n    * __その他情報__: `decodedby`, `timezoneoffset`, `lhost`, `rhost`, `token`, `catch`\n  * __出力可能な形式__\n    * Ruby (Hash, Array)\n    * JSON \n      * ([`oj`](https://rubygems.org/gems/oj)を使用(CRuby))\n      * ([`jrjackson`](https://rubygems.org/gems/jrjackson)を使用(JRuby))\n    * YAML ([`yaml`](https://rubygems.org/gems/yaml)が必要)\n  * __インストールも使用も簡単__\n    * `gem install`\n    * `git clone \u0026\u0026 make`\n  * __高い解析精度__\n    * [73種類のMTAs/MDAs/ESPs](https://libsisimai.org/en/engine/)に対応\n    * Feedback Loop(ARF)にも対応\n    * [34種類のバウンス理由](https://libsisimai.org/en/reason/)を検出\n\n[^2]: コールバック機能を使用すると`catch`アクセサの下に独自のデータを追加できます\n\n\nCommand line demo\n---------------------------------------------------------------------------------------------------\n次の画像のように、Ruby版シシマイ(rb-sisimai)はコマンドラインから簡単にバウンスメールを解析すること\nができます。\n![](https://libsisimai.org/static/images/demo/sisimai-5-cli-dump-r01.gif)\n\n\nSetting Up Sisimai\n===================================================================================================\nSystem requirements\n---------------------------------------------------------------------------------------------------\nSisimaiの動作環境についての詳細は[Sisimai | シシマイを使ってみる](https://libsisimai.org/ja/start/)\nをご覧ください。\n\n\n* [Ruby 2.4.0 or later](http://www.ruby-lang.org/)\n  * [__oj | The fastest JSON parser and object serializer__](https://rubygems.org/gems/oj)\n* Also works on [JRuby 9.2 or later](http://jruby.org)\n  * [__jrjackson | A mostly native JRuby wrapper for the java jackson json processor jar__](https://rubygems.org/gems/jrjackson)\n\nInstall\n---------------------------------------------------------------------------------------------------\n### From RubyGems.org\n```shell\n$ sudo gem install sisimai\nFetching: sisimai-5.2.0.gem (100%)\nSuccessfully installed sisimai-5.2.0\nParsing documentation for sisimai-5.2.0\nInstalling ri documentation for sisimai-5.2.0\nDone installing documentation for sisimai after 6 seconds\n1 gem installed\n```\n\n### From GitHub\n\u003e [!WARNING]\n\u003e Sisimai 5はRuby 2.4以上が必要です。インストール/アップグレードを実行する前に`ruby -v`コマンドで\n\u003e システムに入っているRubyのバージョンを確認してください。\n\n```shell\n% ruby -v\nruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin21]\n\n$ cd /usr/local/src\n$ git clone https://github.com/sisimai/rb-sisimai.git\n\n$ cd ./rb-sisimai\n$ sudo make depend install-from-local\ngem install bundle rake minitest\n...\n3 gems installed\nif [ -d \"/usr/local/jr\" ]; then \\\n\t\tPATH=\"/usr/local/jr/bin:$PATH\" /usr/local/jr/bin/gem install bundle rake minitest; \\\n\tfi\n...\n3 gems installed\n/opt/local/bin/rake install\nsisimai 5.2.0 built to pkg/sisimai-5.2.0.gem.\nsisimai (5.2.0) installed.\nif [ -d \"/usr/local/jr\" ]; then \\\n\t\tPATH=\"/usr/local/jr/bin:$PATH\" /usr/local/jr/bin/rake install; \\\n\tfi\nsisimai 5.2.0 built to pkg/sisimai-5.2.0-java.gem.\nsisimai (5.2.0) installed.\n```\n\nUsage\n======\nBasic usage\n---------------------------------------------------------------------------------------------------\n下記のようにSisimaiの`rise()`メソッドをmboxかMaildirのPATHを引数にして実行すると解析結果が配列で\n返ってきます。v4.25.6から元データとなった電子メールファイルへのPATHを保持する`origin`が利用できます。\n\n```ruby\n#! /usr/bin/env ruby\nrequire 'sisimai'\nv = Sisimai.rise('/path/to/mbox')       # またはMaildir/へのPATH\n\n# v4.23.0からSisimaiクラスのrise()メソッドとdump()メソッドはPATH以外にもバウンスメール全体を文字列\n# として読めるようになりました\nf = File.open('/path/to/mbox', 'r');    # またはMaildir/へのPATH\nv = Sisimai.rise(f.read)\n\n# もし\"delivered\"(配信成功)となる解析結果も必要な場合は以下に示すとおりrise()メソッドに\"delivered\"\n# オプションを指定してください\nv = Sisimai.rise('/path/to/mbox', delivered: true)\n\n# v5.0.0からSisimaiはバウンス理由が\"vacation\"となる解析結果をデフォルトで返さなくなりました。もし\n# \"vacation\"となる解析結果も必要な場合は次のコードで示すようにrise()メソッドに\"vacation\"オプション\n# を指定してください。\nv = Sisimai.rise('/path/to/mbox', vacation: true);\n\nif v.is_a? Array\n  v.each do |e|\n    puts e.class                # Sisimai::Fact\n    puts e.recipient.class      # Sisimai::Address\n    puts e.timestamp.class      # Sisimai::Time\n\n    puts e.addresser.address    # \"michitsuna@example.org\" # From\n    puts e.recipient.address    # \"kijitora@example.jp\"    # To\n    puts e.recipient.host       # \"example.jp\"\n    puts e.deliverystatus       # \"5.1.1\"\n    puts e.replycode            # \"550\"\n    puts e.reason               # \"userunknown\"\n    puts e.origin               # \"/var/spool/bounce/Maildir/new/1740074341.eml\"\n    puts e.hardbounce           # true\n\n    h = e.damn                  # Hashに変換\n    j = e.dump('json')          # JSON(文字列)に変換\n    puts e.dump('json')         # JSON化したバウンスメールの解析結果を表示\n  end\nend\n```\n\nConvert to JSON\n---------------------------------------------------------------------------------------------------\n下記のようにSisimaiの`dump()`メソッドをmboxかMaildirのPATHを引数にして実行すると解析結果が文字列\n(JSON)で返ってきます。\n\n```ruby\n# メールボックスまたはMaildir/から解析した結果をJSONにする\nputs Sisimai.dump('/path/to/mbox')  # またはMaildir/へのPATH\n\n# dump()メソッドは\"delivered\"オプションや\"vacation\"オプションも指定可能\nputs Sisimai.dump('/path/to/mbox', delivered: true, vacation: true)\n```\n\nCallback feature\n---------------------------------------------------------------------------------------------------\n`Sisimai.rise`と`Sisimai.dump`の`:c___`引数(`c`と`_`が三個/魚用の釣り針に見える)はコールバック機能\nで呼び出される`Proc`オブジェクトを保持する配列です。`:c___`の1番目の要素には`Sisimai::Message.sift`\nで呼び出される`Proc`オブジェクトでメールヘッダと本文に対して行う処理を、2番目の要素には、解析対象の\nメールファイルに対して行う処理をそれぞれ入れます。\n\n各Procオブジェクトで処理した結果は`Sisimai::Fact.catch`を通して得られます。\n\n### [0] メールヘッダと本文に対して\n`:c___`に渡す配列の最初の要素に入れたProcオブジェクトは`Sisimai::Message-\u003eparse()`で呼び出されます。\n\n```ruby\n#! /usr/bin/env ruby\nrequire 'sisimai'\ncode = lambda do |args|\n  head = args['headers']    # (*Hash)  メールヘッダー\n  body = args['message']    # (String) メールの本文\n  adds = { 'x-mailer' =\u003e '', 'queue-id' =\u003e '' }\n\n  if cv = body.match(/^X-Postfix-Queue-ID:\\s*(.+)$/)\n    adds['queue-id'] = cv[1]\n  end\n  r['x-mailer'] = head['x-mailer'] || ''\n  return adds\nend\n\ndata = Sisimai.rise('/path/to/mbox', c___: [code, nil])\njson = Sisimai.dump('/path/to/mbox', c___: [code, nil])\n\nputs data[0].catch['x-mailer']  # \"Apple Mail (2.1283)\"\nputs data[0].catch['queue-id']  # \"43f4KX6WR7z1xcMG\"\n```\n\n### 各メールのファイルに対して\n`Sisimai.rise`と`Sisimai.dump`の両メソッドに渡せる引数`:c___`(配列)の2番目に入れた`Proc`オブジェクト\nは解析したメールのファイルごとに呼び出されます。\n\n```ruby\npath = '/path/to/maildir'\ncode = lambda do |args|\n  kind = args['kind']   # (String) Sisimai::Mail.kind\n  mail = args['mail']   # (String) Entire email message\n  path = args['path']   # (String) Sisimai::Mail.path\n  fact = args['fact']   # (Array)  List of Sisimai::Fact\n\n  fact.each do |e|\n    # \"catch\"アクセサの中に独自の情報を保存する\n    e.catch ||= {}\n    e.catch['size'] = mail.size\n    e.catch['kind'] = kind.capitalize\n\n    if cv = mail.match(/^Return-Path: (.+)$/)\n      # Return-Path: \u003cMAILER-DAEMON\u003e\n      e.catch['return-path'] = cv[1]\n    end\n    e.catch['parsedat'] = Time.new.localtime.to_s\n\n    # \"X-Sisimai-Parsed:\"ヘッダーを追加して別のPATHに元メールを保存する\n    a = sprintf(\"X-Sisimai-Parsed: %d\", fact.size)\n    p = sprintf(\"/path/to/another/directory/sisimai-%s.eml\", e.token)\n    v = mail.sub(/^(From:.+?)$/, '\\1' + \"\\n\" + a)\n    f = File.open(p, 'w:UTF-8')\n    f.write(v)\n    f.close\n\n    # 解析が終わったらMaildir/にあるファイルを削除する\n    File.delete(path) if kind == 'maildir'\n\n    # 特に何か値をReturnする必要はない\n  end\nend\n\nlist = Sisimai.rise(path, c___: [nil, code])\n\nputs list[0].catch['size']          # 2202\nputs list[0].catch['kind']          # \"Maildir\"\nputs list[0].catch['return-path']   # \"\u003cMAILER-DAEMON\u003e\"\n```\n\nコールバック機能のより詳細な使い方は\n[Sisimai | 解析方法 - コールバック機能](https://libsisimai.org/ja/usage/#callback)をご覧ください。\n\nOne-Liner\n---------------------------------------------------------------------------------------------------\n```shell\n$ ruby -rsisimai -e 'puts Sisimai.dump($*.shift)' /path/to/mbox\n```\n\nOutput example\n---------------------------------------------------------------------------------------------------\n![](https://libsisimai.org/static/images/demo/sisimai-5-cli-dump-r01.gif)\n\n```json\n[\n  {\n    \"destination\": \"google.example.com\",\n    \"lhost\": \"gmail-smtp-in.l.google.com\",\n    \"hardbounce\": 0,\n    \"reason\": \"authfailure\",\n    \"catch\": null,\n    \"addresser\": \"michitsuna@example.jp\",\n    \"alias\": \"nekochan@example.co.jp\",\n    \"decodedby\": \"Postfix\",\n    \"command\": \"DATA\",\n    \"senderdomain\": \"example.jp\",\n    \"listid\": \"\",\n    \"action\": \"failed\",\n    \"feedbacktype\": \"\",\n    \"messageid\": \"hwK7pzjzJtz0RF9Y@relay3.example.com\",\n    \"origin\": \"./gmail-5.7.26.eml\",\n    \"recipient\": \"kijitora@google.example.com\",\n    \"rhost\": \"gmail-smtp-in.l.google.com\",\n    \"subject\": \"Nyaan\",\n    \"timezoneoffset\": \"+0900\",\n    \"replycode\": 550,\n    \"token\": \"84656774898baa90660be3e12fe0526e108d4473\",\n    \"diagnostictype\": \"SMTP\",\n    \"timestamp\": 1650119685,\n    \"diagnosticcode\": \"host gmail-smtp-in.l.google.com[64.233.187.27] said: This mail has been blocked because the sender is unauthenticated. Gmail requires all senders to authenticate with either SPF or DKIM. Authentication results: DKIM = did not pass SPF [relay3.example.com] with ip: [192.0.2.22] = did not pass For instructions on setting up authentication, go to https://support.google.com/mail/answer/81126#authentication c2-202200202020202020222222cat.127 - gsmtp (in reply to end of DATA command)\",\n    \"deliverystatus\": \"5.7.26\"\n  }\n]\n```\n\nDifferences between Sisimai 4 and Sisimai 5\n===================================================================================================\n[Sisimai 4.25.16p1](https://github.com/sisimai/rb-sisimai/releases/tag/v4.25.16p1)と\n[Sisimai 5](https://github.com/sisimai/rb-sisimai/releases/tag/v5.0.0)には下記のような違いがあります。\nそれぞれの詳細は[Sisimai | 違いの一覧](https://libsisimai.org/ja/diff/)を参照してください。\n\nFeatures\n---------------------------------------------------------------------------------------------------\nSisimai 5.0.0から**Ruby 2.4以上**が必要になります。\n\n| 機能                                                 | Sisimai 4          | Sisimai 5           |\n|------------------------------------------------------|--------------------|---------------------|\n| 動作環境(CRuby)                                      | 2.1 - 3.3.0        | **2.4** or later    |\n| 動作環境(JRuby)                                      | 9.0.4.0 - 9.1.17.0 | **9.2** or later    |\n| 元メールファイルを操作可能なコールバック機能         | なし               | あり[^3]            |\n| 解析エンジン(MTA/ESPモジュール)の数                  | 68                 | 58                  |\n| 検出可能なバウンス理由の数                           | 29                 | 36                  |\n| 依存Gem数(Ruby Standard Gemsを除く)                  | 1 Gem              | 1 Gem               |\n| ソースコードの行数                                   | 10,800 行          | 9,860 行            |\n| テストフレームワーク                                 | rspec              | minitest            |\n| テスト件数(spec/またはtest/ディレクトリ)             | 311,000 件         | 410,000 件          |\n| 1秒間に解析できるバウンスメール数[^4]                | 620 通             | 620 通              |\n| ライセンス                                           | 2条項BSD           | 2条項BSD            |\n| 開発会社による商用サポート                           | 提供中             | 提供中              |\n\n[^3]: `Sisimai.rise`メソッドで指定する`:c___`パラメーター第二引数で指定可能\n[^4]: macOS Monterey/1.6GHz Dual-Core Intel Core i5/16GB-RAM/Ruby 3.3.0\n\nDecoding Method\n---------------------------------------------------------------------------------------------------\nいくつかの解析メソッド名、クラス名、パラメーター名がSisimai 5で変更になっています。解析済みデータの\n各項目は[LIBSISIMAI.ORG/JA/DATA](https://libsisimai.org/ja/data/)を参照してください。\n\n| 解析用メソッド周辺の変更箇所                         | Sisimai 4          | Sisimai 5           |\n|------------------------------------------------------|--------------------|---------------------|\n| 解析メソッド名                                       | `Sisimai.make`     | `Sisimai.rise`      |\n| 出力メソッド名                                       | `Sisimai.dump`     | `Sisimai.dump`      |\n| 解析メソッドが返すオブジェクトのクラス               | `Sisimai::Data`    | `Sisimai::Fact`     |\n| コールバック用のパラメーター名                       | `hook`             | `c___`[^5]          |\n| ハードバウンスかソフトバウンスかを識別するメソッド名 | `softbounce`       | `hardbounce`        |\n| \"vacation\"をデフォルトで検出するかどうか             | 検出する           | 検出しない          |\n| Sisimai::Messageがオブジェクトを返すかどうか         | 返す               | 返さない            |\n| MIME解析用クラスの名前                               | `Sisimai::MIME`    | `Sisimai::RFC2045`  |\n| SMTPセッションの解析をするかどうか                   | しない             | する[^6]            |\n\n[^5]: `:c___`は漁港で使う釣り針に見える\n[^6]: `Sisimai::SMTP::Transcript.rise`メソッドによる\n\nMTA/ESP Module Names\n---------------------------------------------------------------------------------------------------\nSisimai 5で3個のESPモジュール名(解析エンジン)が変更になりました。詳細はMTA/ESPモジュールの一覧/\n[LIBSISIMAI.ORG/JA/ENGINE](https://libsisimai.org/ja/engine/)を参照してください。\n\n| `Sisimai::`                                     | Sisimai 4               | Sisimai 5           |\n|-------------------------------------------------|-------------------------|---------------------|\n| Apple iCloud Mail (added at v5.1.0)             | なし                    | `Rhost::Apple`      |\n| Microsoft Exchange Online                       | `Rhost::ExchangeOnline` | `Rhost::Microsoft`  |\n| Google Workspace                                | `Rhost::GoogleApps`     | `Rhost::Google`     |\n| Tencent                                         | `Rhost::TencentQQ`      | `Rhost::Tencent`    |\n| Yahoo Mail (added at v5.1.0)                    | なし                    | `Rhost::YahooInc`   |\n| DragonFly Mail Agent (added at v5.1.0)          | なし                    | `Lhost::DragonFly`  |\n\nBounce Reasons\n---------------------------------------------------------------------------------------------------\nSisimai 5では新たに5個のバウンス理由が増えました。検出可能なバウンス理由の一覧は\n[LIBSISIMAI.ORG/JA/REASON](https://libsisimai.org/en/reason/)を参照してください。\n\n| バウンスした理由                                     | Sisimai 4          | Sisimai 5           |\n|------------------------------------------------------|--------------------|---------------------|\n| ドメイン認証によるもの(SPF,DKIM,DMARC)               | `SecurityError`    | `AuthFailure`       |\n| 送信者のドメイン・IPアドレスの低いレピュテーション   | `Blocked`          | `BadReputation`     |\n| PTRレコードが未設定または無効なPTRレコード           | `Blocked`          | `RequirePTR`        |\n| RFCに準拠していないメール[^7]                        | `SecurityError`    | `NotCompliantRFC`   |\n| 単位時間の流量制限・送信速度が速すぎる               | `SecurityError`    | `Speeding`          |\n| STARTTLS関連のエラー (added at v5.2.0)               | `SecurityError`    | `FailedSTARTTLS`    |\n| 宛先がサプレッションリストに一致 (added at v5.2.0)   | `OnHold`           | `Suppressed`        |\n\n[^7]: RFC5322など\n\nContributing\n===================================================================================================\nBug report\n---------------------------------------------------------------------------------------------------\nもしもSisimaiにバグを発見した場合は[Issues](https://github.com/sisimai/rb-sisimai/issues)にて連絡を\nいただけると助かります。\n\nEmails could not be decoded\n---------------------------------------------------------------------------------------------------\nSisimaiで解析できないバウンスメールは\n[set-of-emails/to-be-debugged-because/sisimai-cannot-parse-yet](https://github.com/sisimai/set-of-emails/tree/master/to-be-debugged-because/sisimai-cannot-parse-yet)リポジトリに追加してPull-Requestを送ってください。\n\nOther Information\n===================================================================================================\nRelated sites\n---------------------------------------------------------------------------------------------------\n* __@libsisimai__ | [Sisimai on Twitter (@libsisimai)](https://twitter.com/libsisimai)\n* __LIBSISIMAI.ORG__ | [SISIMAI | MAIL ANALYZING INTERFACE | DECODING BOUNCES, BETTER AND FASTER.](https://libsisimai.org/)\n* __Facebook Page__ | [facebook.com/libsisimai](https://www.facebook.com/libsisimai/)\n* __GitHub__ | [github.com/sisimai/rb-sisimai](https://github.com/sisimai/rb-sisimai)\n* __RubyGems.org__ | [rubygems.org/gems/sisimai](https://rubygems.org/gems/sisimai)\n* __Perl verson__ | [Perl version of Sisimai](https://github.com/sisimai/p5-sisimai)\n* __Go verson__ | [Go version of Sisimai](https://github.com/sisimai/go-sisimai)\n* __Fixtures__ | [set-of-emails - Sample emails for \"make test\"](https://github.com/sisimai/set-of-emails)\n\nSee also\n---------------------------------------------------------------------------------------------------\n* [README.md - README.md in English](https://github.com/sisimai/rb-sisimai/blob/master/README.md)\n* [RFC3463 - Enhanced Mail System Status Codes](https://tools.ietf.org/html/rfc3463)\n* [RFC3464 - An Extensible Message Format for Delivery Status Notifications](https://tools.ietf.org/html/rfc3464)\n* [RFC3834 - Recommendations for Automatic Responses to Electronic Mail](https://tools.ietf.org/html/rfc3834)\n* [RFC5321 - Simple Mail Transfer Protocol](https://tools.ietf.org/html/rfc5321)\n* [RFC5322 - Internet Message Format](https://tools.ietf.org/html/rfc5322)\n\nAuthor\n===================================================================================================\n[@azumakuniyuki](https://twitter.com/azumakuniyuki)\n\nCopyright\n===================================================================================================\nCopyright (C) 2015-2025 azumakuniyuki, All Rights Reserved.\n\nLicense\n===================================================================================================\nThis software is distributed under The BSD 2-Clause License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsisimai%2Frb-sisimai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsisimai%2Frb-sisimai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsisimai%2Frb-sisimai/lists"}