Release Notes

Sisimai 5.7.0


2026/06/22

Sisimai 5.7.0 has been released. Main changes in this version include bug fixes, a new MTA module for Deutsche Telekom, and many improvements in code and error message patterns. Changes in the Perl version of Sisimai are indicated by Perl at the beginning of each item, changes in the Ruby version of Sisimai are indicated by Ruby, and changes in the Go version of Sisimai are indicated by Go.

And then, Sisimai 5 includes many changes that are not compatible with Version 4, so please check the Perl or Ruby version of your environment before installing or upgrading.

Bug Fixes

  • Go Perl Ruby The value of Command should be RCPT when RCPT first in the error message. #337 #649 #414
  • Go Fix typo in the sample code at README files. Thanks to @jcbf. #372
  • Go Fix bug in the boolean logic for lines starting with space or tab. Thanks to @jcbf. #374
  • Go Fix many typos. #410
  • Perl Check $lowerchunk is undefined or not to avoid an infinite loop in Sisimai::RFC2045->haircut method. Thanks to @c-schmitz. #664 #665
  • Ruby Check whether lowerchunk is nil or not to avoid NoMethodError and SystemStackError in Sisimai::RFC2045.haircut method. Thanks to @SAY-5. #433 #434 #436

Performance Improvements

  • Go rfc791.FindIPv4Address() is 3x faster. #388
  • Go rfc791.IsIPv4Address() is 6x faster. #390
  • Go Memory allocations reduced by approximately 17%.
    • string improvement: Replace moji.Sweep and moji.Squeeze with strings.Fields. #395 #411
    • Use functions in slices package instead of append. #403

MTA modules and Error message patterns

  • Go Perl Ruby Improvement in error message patterns #336 #346 #645 #647 #410 #412
    • Update error message patterns in AuthFailure, ContentError, NoRelaying, Rejected, UserUnknown, SystemError, Suspend, and rhost/microsoft or Sisimai::Rhost::Microsoft.
    • Remove error message patterns already defined in reason package or Sisimai::Reason from some MTA moudles of lhost package or Sisimai::Lhost.
    • Move error message patterns from some MTA modules of lhost package or Sisimai::Lhost to reason package or Sisimai::Reason.
  • Go Perl Ruby Update the order of classorder in reason/lib.go or Sisimai::Reason class. #347
  • Go Perl Ruby List all the Zoho domains at rhost/lib.go or Sisimai::Rhost class. #355 #648 #413
  • Go Perl Ruby Code improvement for detecting bounce messages returned from Google Groups. #367 #653 #421
  • Go Perl Ruby Implement a new MTA module Sisimai::Lhost::DeutscheTelekom to decode bounce messages generated by Smail 3 or Deutsche Telekom reported at sisimai/set-of-emails#30. Thanks to @dmke. #415 #666 #437

Code Improvements and Environment

  • Ruby Sisimai does not support Ruby 4.0.0 until the end of 2027. #430
  • Go Ruby Use a switch statement instead of if-else for better readability. #350 #417
  • Go Tiny code improvements around append, strings.Trim functions. #358 #360 #365
  • Go Sisimai can be built with Go 1.26.0. #361
  • Go Perl Ruby Fix and update comments in smtp/status/lib.go or Sisimai::SMTP::Status. #369 #370 #656 #423
  • Go Perl Ruby Remove useless code blocks. #396 #661 #428

EXPERIMENTAL FEATURES

  • Go Perl Ruby Change the data type of Toxic field implemented at v5.5.0 from Boolean to Integer with -1 as the default value to allow score-based evaluation of recipient address toxicity. #311 #357 #657 #658 #424 #425
  • Go Perl Ruby Implement Bogus field as an Integer with -1 as the default value to record the unreliability score of a bounce message. #376 #380 #659 #660 #426 #427