Sisimai 4との違い

このページではSisimai(Perl版とRuby版)のVersion 5で変更になった内容を、 動作環境や機能、モジュール名や追加されたバウンス理由などについて説明しています。

動作環境と機能

Sisimai 5.0.0で変更になった動作環境やコールバック機能、 メソッド名や解析済みデータのクラス名と項目名について

詳しく

バウンス理由

Sisimai 5.0.0で追加された5つの新しいバウンス理由 (ドメイン認証関係やレピュテーションなど)について

詳しく

名前空間

Sisimai 5.0.0で新規に追加された、または変更になったモジュール /Gemの名前空間について

詳しく

bounceHammerとの違い

Sisimai 5.0.0とbounceHammerの最終バージョンとの違いについて

詳しく

動作環境と機能

Sisimai 5で変更になった動作環境や機能など、ユーザー側にとって重要である 変更点について説明します。

PerlとRubyの最低バージョン

Perl
Ruby

Sisimai 5からPerl版は 5.26.0以上が、Ruby版は 2.4.0以上が必要になりました。 インストールやアップグレードを実行する前にシステムのPerlや Rubyのバージョンを必ず確認してください。

% perl -v

This is perl 5, version 32, subversion 0 (v5.32.0) built for darwin-2level

Copyright 1987-2020, Larry Wall
                
% ruby -v
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin21]
                

make()メソッドの廃止とrise()メソッドの新設

Perl
Ruby

Sisimai 5.0.0でSisimaiクラスのmake() メソッドが廃止になりました。make()メソッドは実行時に警告が出ますが Sisimai 5.1.0までは使用可能です。

Sisimai 5.0.0で新しく実装されたrise()メソッドを使ってください。

% perl -MSisimai -lE 'print Sisimai->make(shift)' ./test.eml
 ***warning: Sisimai->make will be removed at v5.1.0. Use Sisimai->rise instead
% perl -MSisimai -lE 'my $p = Sisimai->rise(shift)' ./test.eml
                
% ruby -rsisimai -e 'print Sisimai.make($*.shift)' ./test.eml
 ***warning: Sisimai.make will be removed at v5.1.0. Use Sisimai.rise instead
% ruby -rsisimai -e 'p = Sisimai.rise($*.shift)' ./test.eml
                

"softbounce"の廃止と"hardbounce"の新設

Perl
Ruby

Sisimai 5.0.0でSisimai::Dataクラスのsoftbounce() メソッドと解析結果の"softbounce"が廃止になりました。 softbounce()メソッドは実行時に警告が出ますがSisimai 5.1.0 までは使用可能です。

Sisimai 5.0.0で新しく実装されたhardbounce()メソッドならびに 解析結果の"hardbounce"を使ってください。

% perl -MSisimai -lE 'print Sisimai->rise(shift)->[0]->softbounce;' ./test.eml
 ***warning: Sisimai::Fact->softbounce will be removed at v5.1.0.
            Use Sisimai::Fact->hardbounce instead
                
% ruby -rsisimai -e 'print Sisimai.rise($*.shift)[0].softbounce' ./test.eml
 ***warning: Sisimai::Fact.softbounce will be removed at v5.1.0.
            Use Sisimai::Fact.hardbounce instead
                

Sisimai::Dataクラスの廃止

Perl
Ruby

解析結果のデータ構造を保持するSisimai::DataクラスはSisimai 5.0.0でSisimai::Factに変りました。PerlやRubyで解析結果のオブジェクト のクラス名を参照している場合はご注意下さい。

% perl -MSisimai -lE 'print ref Sisimai->rise(shift)' ./test.eml
Sisimai::Fact
                
% ruby -rsisimai -e 'print Sisimai.rise($*.shift)[0].class' ./test.eml; echo
Sisimai::Fact
                

"vacation"を解析しない

Perl
Ruby

Sisimai 5.0.0からバウンス理由が"vacation" となるバウンスメールをデフォルトで解析しなくなりました。必要な場合は以下のように vacationオプションをSisimaiクラスのrise()メソッド 第二引数に指定してください。

#! /usr/bin/env perl
use Sisimai;
my $f = './set-of-emails/maildir/bsd/rfc3834-01.eml';
my $v = Sisimai->rise($f, 'vacation' => 1);
for my $e ( @$v ) {
    print $e->action;           # ""
    print $e->deliverystatus;   # ""
    print $e->reason;           # "vacation"
    print $e->diagnosticcode;   # "I am currently away returning to the office on May 5th."
    print $e->hardbounce;       # 0
}
                
#! /usr/bin/env ruby
require 'sisimai'
f = './set-of-emails/maildir/bsd/rfc3834-01.eml'
v = Sisimai.rise(f, vacation: true)
v.each do |e|
  puts e.action         # ""
  puts e.deliverystatus # ""
  puts e.reason         # "vacation"
  puts e.diagnosticcode # "I am currently away returning to the office on May 5th."
  puts e.hardbounce     # false
end
                

コールバック機能の引数

Perl
Ruby

Sisimai 5.0.0でSisimaiクラスのrise()メソッド (旧make()メソッド)に渡すコールバック用の引数は、hookから c___に変りました。

同時に、引数に入れるデータは2個の要素をもつ配列リファレンスまたはArray オブジェクトに変っています。 詳細はコールバック機能を確認してください。

バウンス理由の追加

Sisimai 5.0.0で新たに5つのバウンス理由が実装されました。 主にGmailの メール送信者のガイドラインにて言及されている要求を満たしていない場合に 返ってくるバウンス理由です。既に実装されているバウンス理由と同じく、解析結果の "reason"の値は"authfailure""notcompliantrfc"のようにスペース無しの全て小文字で表記されます。

バウンスした原因 Sisimai 4での理由 Sisimai 5での理由(新設)
ドメイン認証によるもの(SPF,DKIM,DMARC) Security Error Auth Failure
送信者のドメイン・IPアドレスの低いレピュテーション Blocked Bad Reputation
PTRレコードが未設定または無効なPTRレコード Blocked Require PTR
RFCに準拠していないメール Security Error Not Compliant RFC
単位時間の流量制限・送信速度が速すぎる Security Error Speeding

変更された名前空間

Sisimai 5.0.0でいくつかの名前空間が変更されました。 Sisimaiクラスのrise()メソッド(旧make()メソッド) だけを使ってる場合は特に影響はありませんが、独自の解析スクリプト内部で処理を 分割している場合はクラス名の変更にご注意下さい。

処理目的 Sisimai 4での名称 Sisimai 5での名称(変更・新設)
解析結果を保持するオブジェクト Sisimai::Data Sisimai::Fact
MIME構造を解析するクラス Sisimai::MIME Sisimai::RFC2045
SMTPセッションログを解析するクラス 実装なし Sisimai::SMTP::Transcript
Microsoft Exchangeからのバウンスメール解析 Sisimai::Rhost::ExchangeOnline Sisimai::Rhost::Microsoft
Google Workspaceからのバウンスメール解析 Sisimai::Rhost::GoogleApps Sisimai::Rhost::Google
Tencent(騰訊)からのバウンスメール解析 Sisimai::Rhost::TencentQQ Sisimai::Rhost::Tencent