This page describes the changes made in Sisimai (Perl and Ruby versions) Version 5, including the operating environment, features, module names, and additional bounce reasons.
About changes in Sisimai 5.0.0, including the operating environment, the callback feature, method names, and class and field names of decoded data.
About five new bounce reasons including domain authentication and reputation, added in Sisimai 5.0.0.
About namespaces of newly added or changed modules/gems in Sisimai 5.0.0.
About differences between Sisimai 5.0.0 and the latest version of bounceHammer.
This section describes important changes for users in Sisimai 5.0.0, including changes to the operating environment and features.
Sisimai 5 requires Perl 5.26.0 or later and Ruby 2.4.0 or later to be installed on your system. Older versions may not work properly with Sisimai 5. Be sure to check the version of Perl and Ruby on your system before installing or upgrading Sisimai 5.
% 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]
The make() method of the Sisimai class has been deprecated in Sisimai 5.0.0. The make() method will still work until Sisimai 5.1.0, but it will emit a warning at runtime.
Please use the newly implemented rise() method instead.
% 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
The softbounce() method of the Sisimai::Data class and the "softbounce" in the decoded results have been deprecated in Sisimai 5.0.0. The softbounce() method will still work until Sisimai 5.1.0, but it will emit a warning at runtime.
Please use the newly implemented hardbounce() method and the "hardbounce" in the decoded results instead.
% 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
The Sisimai::Data class, which holds the data structure of the decoded results, has been changed to Sisimai::Fact in Sisimai 5.0.0. Please note if you are referring to the class name of the decoded result object in Perl or 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 no longer decodes bounce emails with the bounce reason "vacation" by default. If you need to decode vacation bounce emails, you can specify the vacation option as the second argument to the Sisimai class's rise() method as follows.
#! /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
The callback argument passed to the Sisimai class's rise() method (formerly the make() method) in Sisimai 5.0.0 has changed from hook to c___.
At the same time, the data passed to the argument has changed to an array reference or Array object with two elements. Please check the callback feature page for details.
Sisimai 5.0.0 now includes 5 new bounce reasons. These reasons are primarily returned when an email sender does not meet the requirements outlined in Gmail's Email Sender Guidelines .
As with the existing bounce reasons, the "reason" value in the decoded results will be in all lowercase letters with no spaces, such as "authfailure" or "notcompliantrfc".
Cause of the delivery failure | Reason in Sisimai 4 | Reason in Sisimai 5 |
---|---|---|
Domain authentication (SPF, DKIM, DMARC) | Security Error | Auth Failure |
Poor sender reputation (domain/IP) | Blocked | Bad Reputation |
PTR record not set or invalid | Blocked | Require PTR |
Non-RFC compliant email | Security Error | Not Compliant RFC |
Sending rate exceeding the limit per unit time | Security Error | Speeding |
Several internal namespaces have been changed in Sisimai 5.0.0. If you are only using the rise() method (formerly the make() method) of the Sisimai class, you will not be affected. However, if you are dividing the processing inside your own decoding script, please be aware of the class name changes.
Purpose of Processing | Name in Sisimai 4 | Name in Sisimai 5 |
---|---|---|
Keeping decoded results | Sisimai::Data | Sisimai::Fact |
Class for decoding MIME | Sisimai::MIME | Sisimai::RFC2045 |
Class for decoding SMTP session log | Not Implemented | Sisimai::SMTP::Transcript |
Decoding bounces from Microsoft Exchange | Sisimai::Rhost::ExchangeOnline | Sisimai::Rhost::Microsoft |
Decoding bounces from Google Workspace | Sisimai::Rhost::GoogleApps | Sisimai::Rhost::Google |
Decoding bounces from Tencent(騰訊) | Sisimai::Rhost::TencentQQ | Sisimai::Rhost::Tencent |