リリースノート

Sisimai 5.7.0


2026/06/22

Sisimai 5.7.0をリリースしました。 このバージョンにおける主な変更点は致命的なものを含む複数のバグ修正とドイツテレコムが 生成したバウンスメール形式の対応とコードやエラーメッセージパターンの改善です。 Perl版Sisimaiで入った変更内容にはPerlが、 Ruby版SisimaiではRubyが、 Go版SisimaiではGoが、 それぞれ冒頭に入っています。

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

バグ修正

  • Go Perl Ruby エラーメッセージにRCPT firstが含まれている場合は 解析結果のCommandRCPTになるように修正。 #337 #649 #414
  • Go サンプルコードおよびREADMEファイルにあったタイポを修正。 Thanks to @jcbf. #372
  • Go 空白またはタブ文字から始まる行の判定コード(論理和と論理積)を修正。 Thanks to @jcbf. #374
  • Go コメント内のタイポを多数なおしました。 #410
  • Perl Sisimai::RFC2045->haircutメソッドで無限ループが発生しないように 変数$lowerchunkが未定義にならないように修正しました。 Thanks to @c-schmitz. #664 #665
  • Ruby Sisimai::RFC2045.haircutメソッドで NoMethodErrorおよびSystemStackError が発生しないように変数lowerchunknilにならないように 修正しました。 Thanks to @SAY-5. #433 #434 #436

性能に関する改善

  • Go rfc791.FindIPv4Address()関数が3倍ぐらい速くなりました。 #388
  • Go rfc791.IsIPv4Address()関数が6倍ぐらい速くなりました。 #390
  • Go 文字列処理の改善でメモリの割当が17%ぐらい少なくなりました。
    • moji.Sweep関数とmoji.Squeeze関数を strings.Fields関数で置き換えました。 #395 #411
    • append関数の使用を減らして slicesパッケージ内の関数に置き換えました。 #403

MTAモジュールとエラーメッセージパターン

  • Go Perl Ruby エラーメッセージパターンの細かな改善をしました。 #336 #346 #645 #647 #410 #412
    • 次のバウンス理由: AuthFailure, ContentError, NoRelaying, Rejected, UserUnknown, SystemError, Suspendrhost/microsoftまたはSisimai::Rhost::Microsoftにて エラーメッセージパターンを改善しました。
    • 既にreasonパッケージまたはSisimai::Reasonクラスで定義されている エラーメッセージパターンをlhostパッケージとSisimai::Lhostクラス から削除しました。
    • lhostパッケージおよびSisimai::Lhostクラスで宣言されている エラーメッセージパターンをreasonパッケージまたはSisimai::Reason クラスへ移動させました。
  • Go Perl Ruby reason/lib.goおよびSisimai::Reasonクラスで定義している MTAモジュールの呼び出し順序を変更しました。 #347
  • Go Perl Ruby rhost/lib.goおよびSisimai::Rhostクラスにて Zohoのドメインを全て列挙しました。 #355 #648 #413
  • Go Perl Ruby Google Groupsから戻ってきたバウンスメールを処理するコードを改善しました。 #367 #653 #421
  • Go Perl Ruby ドイツテレコムまたはSmail 3が生成したバウンスメール形式に対応する新しいモジュール Sisimai::Lhost::DeutscheTelekomを実装しました。 sisimai/set-of-emails#30. Thanks to @dmke. #415 #666 #437

コードの改善と環境

  • Ruby Sisimaiは2027年の年末までRuby 4サポートに関する変更をしません。 #430
  • Go Ruby より良い信頼性の為にいくつかのif-else文をswitch文に変更しました。 #350 #417
  • Go append関数とstrings.Trim関数の周辺でコードの改善をしました。 #358 #360 #365
  • Go SisimaiはGo 1.26.0でビルドできるのを確認しました。 #361
  • Go Perl Ruby smtp/status/lib.goおよびSisimai::SMTP::Statusのコメントを 修正・更新しました。 #369 #370 #656 #423
  • Go Perl Ruby 不要なコードブロックを削除しました。 #396 #661 #428

試験的な機能

  • Go Perl Ruby v5.5.0で試験的に実装したToxicの型を真偽値から符号無し整数値に変更し デフォルト値を-1に変更しました。 この値はユーザー側で受信者アドレスの再送信可能確率など配信先リストにおける毒性を評価する為の項目です。 #311 #357 #657 #658 #424 #425
  • Go Perl Ruby バウンスメールそのものの信頼性を評価する項目として新たにBogus を符号無し整数値として実装しました。 Toxicと同じくユーザー側で自由に使える項目であり、 デフォルト値は-1です。 #376 #380 #659 #660 #426 #427