このページではSisimai(Perl版とRuby版)のVersion 5で変更になった内容を、 動作環境や機能、モジュール名や追加されたバウンス理由などについて説明しています。
Sisimai 5で変更になった動作環境や機能など、ユーザー側にとって重要である 変更点について説明します。
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]
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
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クラスは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
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
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 |