{"id":14128499,"url":"https://github.com/sisimai/p5-sisimai","last_synced_at":"2025-12-16T20:36:13.663Z","repository":{"id":19729971,"uuid":"22986112","full_name":"sisimai/p5-sisimai","owner":"sisimai","description":"Mail Analyzing Interface for email bounce: A Perl module to parse RFC5322 bounce mails and generating structured data as JSON from parsed results. Formerly known as bounceHammer 4: an error mail analyzer.","archived":false,"fork":false,"pushed_at":"2024-10-19T08:40:51.000Z","size":10908,"stargazers_count":78,"open_issues_count":17,"forks_count":24,"subscribers_count":13,"default_branch":"5-stable","last_synced_at":"2024-10-19T13:23:06.468Z","etag":null,"topics":["bounce","bounce-mails","bounce-messages","email","email-bounce","email-parsing","mail","perl","sisimai","smtp"],"latest_commit_sha":null,"homepage":"https://libsisimai.org","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","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}},"created_at":"2014-08-15T10:17:17.000Z","updated_at":"2024-10-09T06:54:00.000Z","dependencies_parsed_at":"2024-01-05T04:20:58.323Z","dependency_job_id":"c38950f0-180c-47ae-8784-074b3be43e03","html_url":"https://github.com/sisimai/p5-sisimai","commit_stats":null,"previous_names":[],"tags_count":194,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Fp5-sisimai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Fp5-sisimai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Fp5-sisimai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisimai%2Fp5-sisimai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sisimai","download_url":"https://codeload.github.com/sisimai/p5-sisimai/tar.gz/refs/heads/5-stable","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640462,"owners_count":20971557,"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","perl","sisimai","smtp"],"created_at":"2024-08-15T16:01:46.408Z","updated_at":"2025-12-16T20:36:08.629Z","avatar_url":"https://github.com/sisimai.png","language":"Perl","funding_links":[],"categories":["Perl"],"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/p5-sisimai/blob/master/LICENSE)\n[![Perl](https://img.shields.io/badge/perl-v5.26--v5.40-blue.svg)](https://www.perl.org)\n[![CPAN](https://img.shields.io/badge/cpan-v5.3.0-blue.svg)](https://metacpan.org/pod/Sisimai)\n[![codecov](https://codecov.io/github/sisimai/p5-sisimai/branch/5-stable/graph/badge.svg?token=8kvF4rWPM3)](https://codecov.io/github/sisimai/p5-sisimai)\n\n\u003e [!IMPORTANT]\n\u003e **2024年2月2日の時点でこのリポジトリのデフォルトブランチは[5-stable](https://github.com/sisimai/p5-sisimai/tree/5-stable)\n\u003e (Sisimai 5)になりました。** もし古いバージョンを使いたい場合は[4-stable](https://github.com/sisimai/p5-sisimai/tree/4-stable)[^1]\n\u003e ブランチを見てください。また`main`や`master`ブランチはもうこのリポジトリでは使用していません。\n[^1]: 4系を`clone`する場合は`git clone -b 4-stable https://github.com/sisimai/p5-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はPerl 5.26以上が必要です。インストール/アップグレードを実行する前に`perl -v`コマンドで\n\u003e システムに入っているPerlのバージョンを確認してください。\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 of Sisimai](#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        - [CPANから | From CPAN](#from-cpan)\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での出力も可能です\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`, `feedbackid`, `hardbounce`\n    * __メール情報__: `subject`, `messageid`, `listid`,\n    * __その他情報__: `decodedby`, `timezoneoffset`, `lhost`, `rhost`, `token`, `catch`\n  * __出力可能な形式__\n    * Perl (Hash, Array)\n    * JSON ([`JSON`](https://metacpan.org/pod/JSON)モジュールを使用)\n    * YAML ([`YAML`](https://metacpan.org/dist/YAML/view/lib/YAML.pod)モジュールまたは\n            [`YAML::Syck`](https://metacpan.org/pod/YAML::Syck)モジュールが必要)\n* __インストールも使用も簡単__\n  * `cpan`, `cpanm`, `cpm install`\n  * `git clone \u0026 make`\n* __高い解析精度__\n  * [59種類のMTAs/MDAs/ESPs](https://libsisimai.org/en/engine/)に対応\n  * Feedback Loop(ARF)にも対応\n  * [36種類のバウンス理由](https://libsisimai.org/en/reason/)を検出\n\n[^2]: コールバック機能を使用すると`catch`アクセサの下に独自のデータを追加できます\n\nCommand line demo\n---------------------------------------------------------------------------------------------------\n次の画像のように、Perl版シシマイ(p5-sisimai)はコマンドラインから簡単にバウンスメールを解析すること\nができます。\n![](https://libsisimai.org/static/images/demo/sisimai-5-cli-dump-p01.gif)\n\nSetting Up Sisimai\n===================================================================================================\nSystem requirements\n---------------------------------------------------------------------------------------------------\nシシマイの動作環境についての詳細は[Sisimai | シシマイを使ってみる](https://libsisimai.org/ja/start/)\nをご覧ください。\n\n* [Perl 5.26.0 or later](http://www.perl.org/)\n* [__Class::Accessor::Lite__](https://metacpan.org/pod/Class::Accessor::Lite)\n* [__JSON__](https://metacpan.org/pod/JSON)\n\nInstall\n---------------------------------------------------------------------------------------------------\n### From CPAN\n```shell\n$ cpanm --sudo Sisimai\n--\u003e Working on Sisimai\nFetching http://www.cpan.org/authors/id/A/AK/AKXLIX/Sisimai-5.2.1.tar.gz ... OK\n...\n1 distribution installed\n$ perldoc -l Sisimai\n/usr/local/lib/perl5/site_perl/5.30.0/Sisimai.pm\n```\n\n### From GitHub\n\u003e [!WARNING]\n\u003e Sisimai 5はPerl 5.26以上が必要です。インストール/アップグレードを実行する前に`perl -v`コマンドで\n\u003e システムに入っているPerlバージョンを確認してください。\n\n```shell\n$ perl -v\n\nThis is perl 5, version 30, subversion 0 (v5.30.0) built for darwin-2level\n\nCopyright 1987-2019, Larry Wall\n...\n\n$ cd /usr/local/src\n$ git clone https://github.com/sisimai/p5-sisimai.git\n$ cd ./p5-sisimai\n\n$ make install-from-local\n./cpanm --sudo . || ( make cpm \u0026\u0026 ./cpm install --sudo -v . )\n--\u003e Working on .\nConfiguring Sisimai-v5.2.1 ... OK\nBuilding and testing Sisimai-v5.2.1 ... Password: \u003csudo password here\u003e\nOK\nSuccessfully installed Sisimai-v5.2.1\n1 distribution installed\n\n$ perl -MSisimai -lE 'print Sisimai-\u003eversion'\n5.2.1\n```\n\nUsage\n===================================================================================================\nBasic usage\n---------------------------------------------------------------------------------------------------\n下記のようにSisimaiの`rise()`メソッドをmboxかMaildir/のPATHを引数にして実行すると解析結果が配列\nリファレンスで返ってきます。v4.25.6から元データとなった電子メールファイルへのPATHを保持する`origin`\nが利用できます。\n\n```perl\n#! /usr/bin/env perl\nuse Sisimai;\nmy $v = Sisimai-\u003erise('/path/to/mbox'); # またはMaildir/へのPATH\n\n# v4.23.0からSisimaiクラスのrise()メソッドとdump()メソッドはPATH以外にもバウンスメール全体を文字列\n# として読めるようになりました\nuse IO::File;\nmy $r = '';\nmy $f = IO::File-\u003enew('/path/to/mbox'); # またはMaildir/へのPATH\n{ local $/ = undef; $r = \u003c$f\u003e; $f-\u003eclose }\nmy $v = Sisimai-\u003erise(\\$r);\n\n# もし\"delivered\"(配信成功)となる解析結果も必要な場合は以下に示すとおりrise()メソッドに\"delivered\"\n# オプションを指定してください\nmy $v = Sisimai-\u003erise('/path/to/mbox', 'delivered' =\u003e 1);\n\n# v5.0.0からSisimaiはバウンス理由が\"vacation\"となる解析結果をデフォルトで返さなくなりました。もし\n# \"vacation\"となる解析結果も必要な場合は次のコードで示すようにrise()メソッドに\"vacation\"オプション\n# を指定してください。\nmy $v = Sisimai-\u003erise('/path/to/mbox', 'vacation' =\u003e 1);\n\nif( defined $v ) {\n    for my $e ( @$v ) {\n        print ref $e;                   # Sisimai::Fact\n        print ref $e-\u003erecipient;        # Sisimai::Address\n        print ref $e-\u003etimestamp;        # Sisimai::Time\n\n        print $e-\u003eaddresser-\u003eaddress;   # \"michitsuna@example.org\" # From\n        print $e-\u003erecipient-\u003eaddress;   # \"kijitora@example.jp\"    # To\n        print $e-\u003erecipient-\u003ehost;      # \"example.jp\"\n        print $e-\u003edeliverystatus;       # \"5.1.1\"\n        print $e-\u003ereplycode;            # \"550\"\n        print $e-\u003ereason;               # \"userunknown\"\n        print $e-\u003eorigin;               # \"/var/spool/bounce/new/1740074341.eml\"\n        print $e-\u003ehardbounce;           # 0\n\n        my $h = $e-\u003edamn();             # Hashリファレンスに変換\n        my $j = $e-\u003edump('json');       # JSON(文字列)に変換\n        print $e-\u003edump('json');         # JSON化したバウンスメールの解析結果を表示\n    }\n}\n```\n\nConvert to JSON\n---------------------------------------------------------------------------------------------------\n下記のようにSisimaiの`dump()`メソッドをmboxかMaildir/のPATHを引数にして実行すると解析結果が文字列\n(JSON)で返ってきます。\n\n```perl\n# メールボックスまたはMaildir/から解析した結果をJSONにする\nmy $j = Sisimai-\u003edump('/path/to/mbox'); # またはMaildir/へのPATH\n                                        # dump()メソッドはv4.1.27で追加されました\nprint $j;                               # JSON化した解析結果を表示\n\n# dump()メソッドは\"delivered\"オプションや\"vacation\"オプションも指定可能\nmy $j = Sisimai-\u003edump('/path/to/mbox', 'delivered' =\u003e 1, 'vacation' =\u003e 1);\n```\n\nCallback feature\n---------------------------------------------------------------------------------------------------\n`Sisimai-\u003erise`と`Sisimai-\u003edump`の`c___`引数(`c`と`_`が三個/魚用の釣り針に見える)はコールバック機能\nで呼び出されるコードリファンレンスを保持する配列リファレンスです。\n`c___`の1番目の要素には`Sisimai::Message-\u003esift`で呼び出されるコードリファレンスでメールヘッダと本文\nに対して行う処理を、2番目の要素には、解析対象のメールファイルに対して行う処理をそれぞれ入れます。\n\n各コードリファレンスで処理した結果は`Sisimai::Fact-\u003ecatch`を通して得られます。\n\n### [0] メールヘッダと本文に対して\n`c___`に渡す配列リファレンスの最初の要素に入れたコードリファレンスは`Sisimai::Message-\u003esift()`で\n呼び出されます。\n\n```perl\n#! /usr/bin/env perl\nuse Sisimai;\nmy $code = sub {\n    my $args = shift;               # (*Hash)\n    my $head = $args-\u003e{'headers'};  # (*Hash)  メールヘッダー\n    my $body = $args-\u003e{'message'};  # (String) メールの本文\n    my $adds = { 'x-mailer' =\u003e '', 'queue-id' =\u003e '' };\n\n    if( $body =~ m/^X-Postfix-Queue-ID:\\s*(.+)$/m ) {\n        $adds-\u003e{'queue-id'} = $1;\n    }\n\n    $adds-\u003e{'x-mailer'} = $head-\u003e{'x-mailer'} || '';\n    return $adds;\n};\nmy $data = Sisimai-\u003erise('/path/to/mbox', 'c___' =\u003e [$code, undef]);\nmy $json = Sisimai-\u003edump('/path/to/mbox', 'c___' =\u003e [$code, undef]);\n\nprint $data-\u003e[0]-\u003ecatch-\u003e{'x-mailer'};    # \"Apple Mail (2.1283)\"\nprint $data-\u003e[0]-\u003ecatch-\u003e{'queue-id'};    # \"43f4KX6WR7z1xcMG\"\n```\n\n### [1] 各メールのファイルに対して\n`Sisimai-\u003erise()`と`Sisimai-\u003edump()`の両メソッドに渡せる引数`c___`(配列リファレンス)の2番目に入れた\nコードリファレンスは解析したメールのファイルごとに呼び出されます。\n\n```perl\nmy $path = '/path/to/maildir';\nmy $code = sub {\n    my $args = shift;           # (*Hash)\n    my $kind = $args-\u003e{'kind'}; # (String)  Sisimai::Mail-\u003ekind\n    my $mail = $args-\u003e{'mail'}; # (*String) Entire email message\n    my $path = $args-\u003e{'path'}; # (String)  Sisimai::Mail-\u003epath\n    my $fact = $args-\u003e{'fact'}; # (*Array)  List of Sisimai::Fact\n\n    for my $e ( @$fact ) {\n        # \"catch\"アクセサの中に独自の情報を保存する\n        $e-\u003e{'catch'} ||= {};\n        $e-\u003e{'catch'}-\u003e{'size'} = length $$mail;\n        $e-\u003e{'catch'}-\u003e{'kind'} = ucfirst $kind;\n\n        if( $$mail =~ /^Return-Path: (.+)$/m ) {\n            # Return-Path: \u003cMAILER-DAEMON\u003e\n            $e-\u003e{'catch'}-\u003e{'return-path'} = $1;\n        }\n\n        # \"X-Sisimai-Parsed:\"ヘッダーを追加して別のPATHに元メールを保存する\n        my $a = sprintf(\"X-Sisimai-Parsed: %d\\n\", scalar @$fact);\n        my $p = sprintf(\"/path/to/another/directory/sisimai-%s.eml\", $e-\u003etoken);\n        my $f = IO::File-\u003enew($p, 'w');\n        my $v = $$mail; $v =~ s/^(From:.+)$/$a$1/m;\n        print $f $v; $f-\u003eclose;\n    }\n\n    # 解析が終わったらMaildir/にあるファイルを削除する\n    unlink $path if $kind eq 'maildir';\n\n    # 特に何か値をReturnする必要はない\n};\n\nmy $list = Sisimai-\u003erise($path, 'c___' =\u003e [undef, $code]);\nprint $list-\u003e[0]-\u003e{'catch'}-\u003e{'size'};          # 2202\nprint $list-\u003e[0]-\u003e{'catch'}-\u003e{'kind'};          # \"Maildir\"\nprint $list-\u003e[0]-\u003e{'catch'}-\u003e{'return-path'};   # \"\u003cMAILER-DAEMON\u003e\"\n```\n\nコールバック機能のより詳細な使い方は\n[Sisimai | 解析方法 - コールバック機能](https://libsisimai.org/ja/usage/#callback)をご覧ください。\n\nOne-Liner\n---------------------------------------------------------------------------------------------------\nSisimai 4.1.27から登場した`dump()`メソッドを使うとワンライナーでJSON化した解析結果が得られます。\n\n```shell\n$ perl -MSisimai -lE 'print Sisimai-\u003edump(shift)' /path/to/mbox\n```\n\nOutput example\n---------------------------------------------------------------------------------------------------\n![](https://libsisimai.org/static/images/demo/sisimai-5-cli-dump-p01.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\n\nDifferences between Sisimai 4 and Sisimai 5\n===================================================================================================\n[Sisimai 4.25.16p1](https://github.com/sisimai/p5-sisimai/releases/tag/v4.25.16p1)と\n[Sisimai 5](https://github.com/sisimai/p5-sisimai/releases/tag/v5.0.0)には下記のような違いがあります。\nそれぞれの詳細は[Sisimai | 違いの一覧](https://libsisimai.org/ja/diff/)を参照してください。\n\nFeatures\n---------------------------------------------------------------------------------------------------\nSisimai 5.0.0から**Perl 5.26.0以上**が必要になります。\n\n| 機能                                                 | Sisimai 4          | Sisimai 5           |\n|------------------------------------------------------|--------------------|---------------------|\n| 動作環境(Perl)                                       | 5.10 -             | **5.26** -          |\n| 元メールファイルを操作可能なコールバック機能         | なし               | あり[^3]            |\n| 解析エンジン(MTA/ESPモジュール)の数                  | 68                 | 59                  |\n| 検出可能なバウンス理由の数                           | 29                 | 36                  |\n| 依存もジュール数(Perlのコアモジュールを除く)         | 2 モジュール       | 2 モジュール        |\n| ソースコードの行数                                   | 10,800 行          | 9,900 行            |\n| テスト件数(t/とxt/ディレクトリ)                      | 270,000 件         | 320,000 件          |\n| 1秒間に解析できるバウンスメール数[^4]                | 750 通             | 750 通              |\n| ライセンス                                           | 2条項BSD           | 2条項BSD            |\n| 開発会社による商用サポート                           | 提供中             | 提供中              |\n\n[^3]: `Sisimai-\u003erise`メソッドで指定する`c___`パラメーター第二引数で指定可能\n[^4]: macOS Monterey/1.6GHz Dual-Core Intel Core i5/16GB-RAM/Perl 5.30\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-\u003emake`    | `Sisimai-\u003erise`     |\n| 出力メソッド名                                       | `Sisimai-\u003edump`    | `Sisimai-\u003edump`     |\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-\u003erise`メソッドによる\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\n\nContributing\n===================================================================================================\nBug report\n---------------------------------------------------------------------------------------------------\nもしもSisimaiにバグを発見した場合は[Issues](https://github.com/sisimai/p5-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\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/p5-sisimai](https://github.com/sisimai/p5-sisimai)\n* __CPAN__ | [Sisimai - Mail Analyzing Interface for bounce mails. - metacpan.org](https://metacpan.org/pod/Sisimai)\n* __CPAN Testers Reports__ | [CPAN Testers Reports: Reports for Sisimai](http://cpantesters.org/distro/S/Sisimai.html)\n* __Ruby verson__ | [Ruby version of Sisimai](https://github.com/sisimai/rb-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/p5-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) 2014-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%2Fp5-sisimai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsisimai%2Fp5-sisimai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsisimai%2Fp5-sisimai/lists"}