リリースノート

Sisimai 5.2.0


2025/02/25

Sisimai 5.2.0をリリースしました。 このバージョンにおける主な変更点は、 Go版Sisimaiとの互換性維持に伴う解析済みデータの項目名 (smtpagentsmtpcommand) 変更 新たなデータ項目(feedbackid)の追加、 バウンス理由二件(FailedSTARTTLSSuppressed) の新設、 その他の内部APIの変更などです。

Perl版Sisimaiに特有の変更はPerlが、 Ruby版Sisimaiに特有の変更はRubyが、 Go版Sisimaiに特有の変更はGoが、 それぞれ冒頭に入っています。

Sisimai 5.0.0でVersion 4系とは非互換な変更が多く入っていますので、 インストールまたはアップグレードの前に実行環境のPerlやRubyのバージョンを確認してください。

変更点

  • Go v5.2.0から Go版Sisimai が登場しました。Go 1.17以上でビルド可能です。
  • Go版Sisimai との互換性維持の為に行った破壊的な変更の数々 #547 #558 #567 #311 #318 #327
    • 解析結果を保持するSisimai::Factインスタンスの"smtpcommand" "command"に変更しました。JSONで出力される項目名も"command"に変更されていますが、 v5.5.0で削除されるまではJSONの"smtpcommand"smtpcommand()メソッド でも参照可能です。 #548 #323 #8
    • 解析結果を保持するSisimai::Factインスタンスの"smtpagent" "decodedby"に変更しました。JSONで出力される項目名も"decodedby"に変更されていますが、 v5.5.0で削除されるまではjsonの"smtpagent"smtpagent()メソッド でも参照可能です。 #548 #323 #8
  • Go版Sisimai との互換性維持の為に行った内部APIの破壊的な変更
    • Sisimai::Messageクラスのload()メソッドが廃止になりました。 v5.3.0で完全に削除されます。 #537 #538 #302 #303
    • どこからも使用されてないSisimai::Orderクラスのdefault()メソッドが 削除されました。 #539 #304
    • 解析結果を保持するSisimai::Factインスタンスに"feedbackid"を新設しました。 元メールのFeedback-ID:ヘッダーの値を取り出して保持します。 #568 #328 #36
    • 現代のメール配信事情に合わせて新たに二つのバウンス理由を追加しました。 STARTTLS関連エラーで配信されなかった Failed STARTTLSと 配信サービスのサプレッションリストに一致したため配信されなかった Suppressedです。 #562 #322 #35 #18
    • Sisimai::SMTP::ErrorクラスはSisimai::SMTP::Failure に変更されました。同時にis_temporary(), is_hardbounce(), is_softbounceメソッドを実装し、soft_or_hard()メソッドは 削除されました。 #542 #309
    • Sisimai::Rhostクラスのget()メソッドはfind() に変更されました
    • Sisimai::Rhostクラスにname()メソッドを新設しました
    • Sisimai::Lhostからhardbounceを削除しました。 この項目は後続処理で設定されるべきなので解析処理の初期段階では不要であるためです。 #555 #313
    • Sisimai::RFC3464::ThirdPartyクラスを新設しました
    • Sisimai::Lhost以下から次のモジュールを削除しました。コードの保守性維持のため Sisimai::RFC3464へ統合されています。また一部のモジュールはエラーコードの一覧 と照合処理部分のみSisimai::Rhost以下へ移設しています。 #551 #557 #315 #317 #7
    • Sisimai::Lhost以下から次のモジュールを削除しました。コードの保守性維持のため Sisimai::Lhost::Eximへ統合されています。
      • MailRu
      • MXLogic
    • Sisimai::Lhost以下から次のモジュールを削除しました。コードの保守性維持のため Sisimai::Lhost::qmailへ統合されています。
      • X4
      • Yahoo
    • Sisimai::Lhost::Office365を削除しました。コードの保守性維持のため Sisimai::Lhost::Exchange2007へ統合されています。 #553
    • Sisimai::Lhost::GSuiteSisimai::Lhost::GoogleWorkspaceへ名称が変更されました
    • Sisimai::Lhost::AmazonSESはSNSから通知されたJSONを含むバウンスメールだけを解析します。 JSON文字列を含まないバウンスメールはSisimai::RFC3464によって解析されます。
    • Sisimai::MDASisimai::LDAへ名称が変更されました #32
    • 主にIPv4アドレス関連の処理を行うSisimai::RFC791が新設されました。 同時にSisimai::Stringクラスのipv4()メソッドは Sisimai::RFC791find()メソッドとして移設されました。 #560 #319 #34
    • Sisimai::RFC1123is_validhostname()メソッドは is_internethost()に改名されました。 また同クラスにfind()メソッドが実装されました。 #16
    • Sisimai::RFC1894クラスのfind()はコメントも抽出できるようになり 戻り値は5個の要素を含む配列になりました。 #552 #312
  • 互換性のある細い改善とバグ修正など
    • Sisimai::Messageクラスのtidy()メソッドでバグ修正 #540 #305
    • Perl Sisimai::Messageクラスのtidy()メソッドの大幅なコード改善と Diagnostic-Code:が複数行に渡る場合の処理におけるバグを修正
    • Reporting-MTAlhostを示すように修正 (Sisimai::RFC1894クラス)
    • Perl Sisimai::RFC1894クラスでX-Actual-Recipientのタイポを修正
    • Sisimai::RFC5322クラスでコードの小さい改善
    • Sisimai::Lhostクラスで以下のバグ修正と改善
      • Eximでバグ修正とコードの改善
      • 不要な条件文を削除
      • SMTP応答コードとステータスコードを得る処理を書き直し
      • Exchange2007sv-SEのパターンを追加
      • V5sendmailで大きめのコード改善
    • Sisimai::Rhostクラスで以下のバグ修正と改善
      • メールアドレスのドメイン部分をリモートホスト名として処理するコードのバグを修正
      • Microsoftにて hosted tenant which has no mail-enabled subscriptions4.7.652 has exceeded the maximum number of connections を新たなエラーメッセージパターンとして追加
      • Facebookでバグ修正
    • Sisimai::ARFクラスでコードの小さい改善
    • Sisimai::SMTP::Replyクラスで有効な応答コードの最小値221 と最大値557を修正
    • Perl Sisimai::Reason::VirusDetectedクラスでHELOの重複を修正
    • 以下のSisimai::Reasonクラスで新たなエラーメッセージパターンを追加 BadReputation Blocked Filtered MailboxFull MesgTooBig RequirePTR SpanDetected SystemError
    • 以下のSisimai::Reasonクラスで正規表現を削除 Blocked MailerError SpamDetected #543 #308
    • Sisimai::Rhost::YahooInc内のタイポを修正 #546 #310 #11 Thanks to @bohwaz
    • Sisimai::Rhostクラスで、バウンスメールがMicrosoftからAolへ送信された場合など、 一致する条件が安定しない(ハッシュのキーがランダムに並び替えられる仕様)バグを修正