[Amavisd-new-commits] [pkg-amavisd-new] 06/16: Imported Upstream version 2.9.1
Alexander Wirt
formorer at debian.org
Sun Oct 26 07:38:35 UTC 2014
This is an automated email from the git hooks/post-receive script.
formorer pushed a commit to branch master
in repository pkg-amavisd-new.
commit c230541e2381e95c108107eedbaf1148932f8784
Author: Alexander Wirt <formorer at debian.org>
Date: Thu Jul 17 21:56:00 2014 +0200
Imported Upstream version 2.9.1
---
RELEASE_NOTES | 42 +++++++
amavisd | 292 +++++++++++++++++++++++++++-------------------
amavisd-new-courier.patch | 22 ++--
amavisd-new-qmqpqq.patch | 26 ++---
4 files changed, 240 insertions(+), 142 deletions(-)
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 800a59b..24a69bb 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,4 +1,46 @@
---------------------------------------------------------------------------
+ June 27, 2014
+amavisd-new-2.9.1 release notes
+
+Contents:
+ COMPATIBILITY
+ BUG FIXES
+ OTHER
+
+
+COMPATIBILITY
+
+There are no known incompatibilities between versions 2.9.0 and 2.9.1.
+
+
+BUG FIXES
+
+- when a $final_bad_header_destiny is set to D_BOUNCE and a mail
+ message was a DSN or coming from a mailing list, spam checks were
+ inappropriately skipped (logged as: "bypassing of spam checks,
+ message will be blocked anyway", which was not true as the blocking
+ was overruled at a later stage); reported by Bruce Pennypacker;
+
+- perl 5.20.0 may occasionally report:
+ "Malformed UTF-8 character (unexpected end of string)"
+ due to a bug in perl [perl #122148]. Treat this error as non-fatal
+ and only log a warning in two such cases: when SpamAssassin is called
+ as a spawned subprocess ($sa_spawned=1) and is returning a result
+ to a parent process, or when constructing a structured report.
+
+
+OTHER
+
+- updated decoding of RAR archives to recognize a changed format in output
+ of 'unrar' utility version 5; based on a patch by amavis17(at)iotti.biz
+
+- avoid tempfailing a message if a redis server is down, just log the
+ error and carry on;
+
+- some minor logging changes to facilitate troubleshooting;
+
+
+---------------------------------------------------------------------------
May 9, 2014
amavisd-new-2.9.0 release notes
diff --git a/amavisd b/amavisd
index f721756..8d2a2e1 100755
--- a/amavisd
+++ b/amavisd
@@ -132,7 +132,7 @@
# Amavis::Tools
#------------------------------------------------------------------------------
-use sigtrap qw(stack-trace BUS SEGV EMT FPE ILL SYS);
+use sigtrap qw(stack-trace BUS SEGV EMT FPE ILL SYS TRAP ABRT);
use strict;
use re 'taint';
@@ -284,7 +284,7 @@ use constant CC_VIRUS => 9;
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
%EXPORT_TAGS = (
'dynamic_confvars' => # per- policy bank settings
@@ -676,7 +676,7 @@ BEGIN { # init_primary: version, $unicode_aware, base policy bank
$myprogram_name = $0; # typically 'amavisd'
local $1; $myprogram_name =~ s{([^/]*)\z}{$1}s;
$myproduct_name = 'amavisd-new';
- $myversion_id = '2.9.0'; $myversion_date = '20140509';
+ $myversion_id = '2.9.1'; $myversion_date = '20140627';
$myversion = "$myproduct_name-$myversion_id ($myversion_date)";
$myversion_id_numeric = # x.yyyzzz, allows numerical compare, like Perl $]
@@ -2235,7 +2235,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&init &amavis_log_id &collect_log_stats
&log_to_stderr &log_fd &open_log &close_log &write_log);
@@ -2439,7 +2439,7 @@ use re 'taint';
BEGIN {
use vars qw(@ISA $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
import Amavis::Conf qw(:platform $TEMPBASE);
import Amavis::Log qw(write_log);
}
@@ -2536,7 +2536,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&init §ion_time &report &get_time_so_far
&get_rusage &rusage_report);
@@ -2691,7 +2691,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&untaint &untaint_inplace &min &max &minmax
&unique_list &unique_ref &format_time_interval
@@ -3421,7 +3421,10 @@ sub fmt_struct($) {
#
sub st_encode($) {
my $str = $_[0]; local($1);
- $str =~ s/([%~\000\200])/sprintf('%%%02X',ord($1))/egs;
+ { # concession on a perl 5.20.0 bug [perl #122148] - just warn, do not abort
+ use warnings NONFATAL => qw(utf8);
+ $str =~ s/([%~\000\200])/sprintf('%%%02X',ord($1))/egs;
+ };
$str;
}
@@ -3590,6 +3593,9 @@ sub rmdir_recursively($;$) {
last;
}
}
+ # perl5.20: readdir() now only sets $! on error. $! is no longer
+ # set to EBADF when then terminating undef is read from the directory
+ # unless the system call sets $!. [perl #118651]
closedir(DIR) or die "Error closing directory $dir: $!";
my $cntf = scalar(@rmfiles);
for my $f (@rmfiles) {
@@ -3972,7 +3978,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&boolean &numeric);
}
@@ -4015,8 +4021,11 @@ sub encode($) {
# fall through, encode other refs as strings, helps debugging
}
return 'null' if !defined $val;
- $val =~ s{ ([\x00-\x1f\x7f\x{2028}\x{2029}"\\]) }
- { exists $jesc{$1} ? $jesc{$1} : sprintf('\\u%.4X',ord($1)) }xgse;
+ { # concession on a perl 5.20.0 bug [perl #122148] - just warn, do not abort
+ use warnings NONFATAL => qw(utf8);
+ $val =~ s{ ([\x00-\x1f\x7f\x{2028}\x{2029}"\\]) }
+ { exists $jesc{$1} ? $jesc{$1} : sprintf('\\u%.4X',ord($1)) }xgse;
+ };
return '"' . $val . '"';
}
@@ -4030,7 +4039,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&exit_status_str &proc_status_ok &kill_proc &cloexec
&run_command &run_command_consumer &run_as_subprocess
@@ -4577,7 +4586,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT = qw(
&rfc2822_timestamp &rfc2822_utc_timestamp
@@ -5389,6 +5398,8 @@ sub wrap_smtp_resp($) {
#
sub one_response_for_all($$;$) {
my($msginfo, $dsn_per_recip_capable, $suppressed) = @_;
+ do_log(5, 'one_response_for_all, per_recip_capable: %s, suppressed: %s',
+ $dsn_per_recip_capable?'Y':'N', $suppressed?'Y':'N');
my($smtp_resp, $exit_code, $ndn_needed);
my $am_id = $msginfo->log_id;
my $sender = $msginfo->sender;
@@ -5519,7 +5530,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Util qw(ll do_log fmt_struct);
}
@@ -5642,7 +5653,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION $have_patricia);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&lookup_ip_acl &ip_to_vec &normalize_ip_addr);
import Amavis::Util qw(ll do_log);
@@ -6129,7 +6140,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&lookup &lookup2 &lookup_hash &lookup_acl);
import Amavis::Util qw(ll do_log fmt_struct unique_list);
@@ -6417,7 +6428,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&expand &tokenize);
import Amavis::Util qw(ll do_log);
@@ -6719,7 +6730,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::Timing qw(section_time);
@@ -7254,7 +7265,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
}
use Errno qw(EIO);
@@ -7390,7 +7401,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform);
import Amavis::Util qw(ll do_log min max minmax);
@@ -7870,7 +7881,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
}
@@ -7904,7 +7915,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform);
import Amavis::Util qw(setting_by_given_contents_category_all
@@ -8095,7 +8106,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform);
import Amavis::rfc2821_2822_Tools qw(rfc2822_timestamp quote_rfc2821_local
@@ -8415,7 +8426,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&hdr);
import Amavis::Conf qw(:platform c cr ca);
@@ -8728,7 +8739,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT = qw(&mail_dispatch);
import Amavis::Conf qw(:platform :confvars c cr ca);
@@ -8882,7 +8893,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&first_received_from &oldest_public_ip_addr_from_received);
import Amavis::Conf qw(:platform c cr ca);
@@ -8934,7 +8945,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&consumed_bytes);
import Amavis::Conf qw(c cr ca
@@ -9023,7 +9034,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Util qw(ll do_log);
}
@@ -9111,7 +9122,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter MIME::Parser::Filer); # subclass of MIME::Parser::Filer
}
# This package will be used by mime_decode().
@@ -9153,7 +9164,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&check_header_validity &check_for_banned_names);
import Amavis::Util qw(ll do_log min max minmax untaint untaint_inplace
@@ -9456,7 +9467,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&mime_decode);
import Amavis::Conf qw(:platform c cr ca $TEMPBASE $MAXFILES);
@@ -9685,7 +9696,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter MIME::Body); # subclass of MIME::Body
import Amavis::Util qw(ll do_log);
}
@@ -9750,7 +9761,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&delivery_status_notification &delivery_short_report
&build_mime_entity &defanged_mime_entity
@@ -10275,8 +10286,7 @@ sub delivery_status_notification($$$;$$$$) { # ..._or_report
$spam_level, $dsn_cutoff_level,
!$is_credible ? '' : ", (credible: $is_credible)",
$sender, $recip);
- } elsif (defined($msginfo->is_bulk) &&
- ccat_maj($r->contents_category) > CC_CLEAN) {
+ } elsif ($msginfo->is_bulk && ccat_maj($r->contents_category) > CC_CLEAN) {
$suppressed = 1;
do_log(3, "DSN: FILTER %s %s, suppressed, bulk mail (%s), <%s> -> <%s>",
$smtp_resp_code,$ccat_name,$msginfo->is_bulk,$sender,$recip);
@@ -10537,6 +10547,8 @@ sub delivery_status_notification($$$;$$$$) { # ..._or_report
my $notif_m = c('notify_method');
$_->delivery_method($notif_m) for @{$notification->per_recip_data};
}
+ do_log(5, 'delivery_status_notification: notif %d bytes, suppressed: %s',
+ length($notification), $suppressed ? 'yes' : 'no');
# $suppressed is true if DNS would be needed, but either the sender requested
# that DSN is not to be sent, or it is believed the bounce would not reach
# the correct sender (faked sender with viruses or spam);
@@ -10920,7 +10932,7 @@ use re 'taint';
BEGIN {
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
import Amavis::Conf qw(:platform :sa :confvars c cr ca);
import Amavis::Util qw(untaint untaint_inplace
min max minmax unique_list unique_ref
@@ -12620,11 +12632,17 @@ sub generate_unique_mail_id($) {
$msginfo->mail_id($mail_id); # assign a long-term unique id to the msg
my $is_unique = 1;
+ # don't bother to save info on incoming messages - saves Redis storage
+ # while still offering necessary data for a penpals function
if ($redis_storage && $msginfo->originating) {
- # attempt to save a message placeholder to Redis, ensuring it is unique;
- # don't bother to save info on incoming messages, saves Redis storage
- # while still offering necessary data for a penpals function
- $redis_storage->save_info_preliminary($msginfo) or ($is_unique=0);
+ # attempt to save a message placeholder to Redis, ensuring it is unique
+ eval {
+ $redis_storage->save_info_preliminary($msginfo) or ($is_unique=0);
+ 1;
+ } or do {
+ chomp $@;
+ do_log(-1, 'storing preliminary info to redis failed: %s', $@);
+ };
}
if ($is_unique && $sql_storage) {
# attempt to save a message placeholder to SQL, ensuring it is unique
@@ -12633,12 +12651,11 @@ sub generate_unique_mail_id($) {
last if $is_unique;
if (--$attempt <= 0) {
- do_log(-2,"ERROR sql_storage: too many retries ".
- "on storing preliminary, info not saved");
+ do_log(-2,'too many retries on storing preliminary, info not saved');
last;
} else {
snmp_count('GenMailIdRetries');
- do_log(2,"storage: retrying preliminary, %d attempts remain", $attempt);
+ do_log(2,'retrying storing preliminary, %d attempts remain', $attempt);
sleep(int(1+rand(3)));
add_entropy(Time::HiRes::gettimeofday, $attempt);
}
@@ -12846,9 +12863,9 @@ sub collect_some_info($) {
$is_mlist = 1 if defined $is_mlist && !$is_mlist; # make sure it is true
$is_auto = 1 if defined $is_auto && !$is_auto; # make sure it is true
$is_bulk = 1 if defined $is_bulk && !$is_bulk; # make sure it is true
- $msginfo->is_mlist($is_mlist) if defined $is_mlist;
- $msginfo->is_auto($is_auto) if defined $is_auto;
- $msginfo->is_bulk($is_bulk) if defined $is_bulk;
+ $msginfo->is_mlist($is_mlist) if $is_mlist;
+ $msginfo->is_auto($is_auto) if $is_auto;
+ $msginfo->is_bulk($is_bulk) if $is_bulk;
# now that we have a parsed From, check if we have a valid
# author domain signature and do other DKIM pre-processing
@@ -13482,6 +13499,10 @@ sub check_mail($$) {
} elsif (defined($lovers_map_ref) &&
lookup2(0, $recip, $lovers_map_ref, Label => 'Lovers1')) {
$fd = D_PASS; # D_PASS for content lovers
+ } elsif ($fd == D_BOUNCE && ($sender eq '' || $msginfo->is_bulk) &&
+ ccat_maj($cc) == CC_BADH) {
+ # have mercy on bad header section from mailing lists and in DSN
+ $fd = D_PASS; # change D_BOUNCE to D_PASS for CC_BADH
} else { # $fd != D_PASS, blocked
$prelim_blocking_ccat = $cc; $final_destiny = $fd;
last;
@@ -13796,35 +13817,39 @@ sub check_mail($$) {
: lookup2(0, $recip, $fd_map_ref,
Label => 'Destiny2');
if (!defined $fd || $fd == D_PASS) {
- ll(5) && do_log(5, "final_destiny (ccat=%s) is PASS, recip %s",
+ ll(5) && do_log(5, 'final_destiny (ccat=%s) is PASS, recip %s',
$cc, $recip);
$fd = D_PASS; # keep D_PASS
} elsif (defined($lovers_map_ref) &&
lookup2(0, $recip, $lovers_map_ref, Label => 'Lovers2')) {
- ll(5) && do_log(5, "contents lover (ccat=%s) %s", $cc, $recip);
+ ll(5) && do_log(5, 'contents lover (ccat=%s), '.
+ 'changing final_destiny %d to PASS, recip %s',
+ $cc, $fd, $recip);
$fd = D_PASS; # change to D_PASS for content lovers
- } elsif ($fd == D_BOUNCE &&
- ($sender eq '' || defined($msginfo->is_bulk)) &&
+ } elsif ($fd == D_BOUNCE && ($sender eq '' || $msginfo->is_bulk) &&
ccat_maj($cc) == CC_BADH) {
# have mercy on bad header section in mail from mailing lists and
# in DSN: since a bounce for such mail will be suppressed, it is
# probably better to just let a mail with a bad header section pass,
# it is rather innocent
my $is_bulk = $msginfo->is_bulk;
- do_log(1, "allow bad header section from %s<%s> -> <%s>: %s",
- !defined($is_bulk) ? '' : "($is_bulk) ",
- $sender, $recip, $bad_headers[0]);
+ do_log(1, 'allow bad header section from %s<%s> -> <%s>: %s, '.
+ 'changing final_destiny %d to PASS',
+ !$is_bulk ? '' : "($is_bulk) ",
+ $sender, $recip, $bad_headers[0], $fd);
$fd = D_PASS; # change D_BOUNCE to D_PASS for CC_BADH
} else { # $fd != D_PASS, blocked
$blocking_ccat = $cc; $final_destiny = $fd;
my $cc_main = $r->contents_category;
$cc_main = $cc_main->[0] if $cc_main;
if ($blocking_ccat eq $cc_main) {
- do_log(3, "blocking contents category is (%s) for %s",
- $blocking_ccat,$recip);
+ do_log(3, 'blocking contents category is (%s) for %s, '.
+ 'final_destiny %d',
+ $blocking_ccat, $recip, $fd);
} else {
- do_log(3, "blocking ccat (%s) differs from ccat_maj=%s, %s",
- $blocking_ccat,$cc_main,$recip);
+ do_log(3, 'blocking ccat (%s) differs from ccat_maj=%s, %s, '.
+ 'final_destiny %d',
+ $blocking_ccat, $cc_main, $recip, $fd);
}
last; # first blocking wins, also skips turning on mangling
}
@@ -14535,7 +14560,7 @@ sub check_mail($$) {
eval {
$redis_storage->save_info_final($msginfo,$report_ref); 1;
} or do {
- chomp $@; do_log(-1, "redis: save final information failed: %s", $@);
+ chomp $@; do_log(-1, 'save_info_final failed, Redis error: %s', $@);
};
section_time($which_section);
}
@@ -14656,14 +14681,14 @@ sub check_mail($$) {
# structured_report returns a string as perl characters (not octets)
$report_ref = structured_report($msginfo); 1;
} or do {
- chomp $@; do_log(-1, "structured_report failed: %s", $@);
+ chomp $@; do_log(-1, 'structured_report failed: %s', $@);
};
}
eval {
$redis_storage->save_structured_report($report_ref,
c('redis_logging_key'), $redis_logging_queue_size_limit); 1;
} or do {
- chomp $@; do_log(-1, "redis: save structured report: %s", $@);
+ chomp $@; do_log(-1, 'save_structured_report failed: %s', $@);
};
}
$zmq_obj->register_proc(1,0,'.') if $zmq_obj; # content checking done
@@ -15039,7 +15064,7 @@ sub build_and_save_structured_report($;$) {
c('redis_logging_key'), $redis_logging_queue_size_limit);
1;
} or do {
- chomp $@; do_log(-1,"structured report failed: %s", $@);
+ chomp $@; do_log(-1, 'save_structured_report failed: %s', $@);
};
}
}
@@ -18364,7 +18389,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform $myversion $myhostname
$nanny_details_level);
@@ -18626,7 +18651,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform $myversion $myhostname
$nanny_details_level);
@@ -18884,7 +18909,7 @@ use warnings FATAL => qw(utf8 void);
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw($db_home $daemon_chroot_dir);
import Amavis::Util qw(untaint ll do_log);
@@ -18973,7 +18998,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Util qw(ll do_log);
import Amavis::Conf qw($trim_trailing_space_in_lookup_result_fields);
@@ -19098,7 +19123,7 @@ use warnings FATAL => qw(utf8 void);
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::Timing qw(section_time);
@@ -19319,7 +19344,7 @@ BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION
$have_sasl $ldap_sys_default);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
$have_sasl = eval { require Authen::SASL };
import Amavis::Conf qw(:platform :confvars c cr ca);
@@ -19541,7 +19566,7 @@ use re 'taint';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Util qw(ll do_log);
import Amavis::Conf qw($trim_trailing_space_in_lookup_result_fields);
@@ -19666,7 +19691,7 @@ BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION
$ldap_sys_default @ldap_attrs @mv_ldap_attrs);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::Timing qw(section_time);
@@ -19879,7 +19904,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::Util qw(ll do_log debug_oneshot dump_captured_log
@@ -20556,7 +20581,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::Util qw(ll do_log do_log_safe untaint
@@ -21816,7 +21841,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform);
import Amavis::Util qw(ll do_log min max minmax);
@@ -22016,7 +22041,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&rundown_stale_sessions);
import Amavis::Conf qw(:platform c cr ca $smtp_connection_cache_enable);
@@ -22380,7 +22405,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT = qw(&mail_via_smtp);
import Amavis::Conf qw(:platform c cr ca $smtp_connection_cache_enable);
@@ -23118,7 +23143,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT = qw(&mail_via_pipe);
import Amavis::Conf qw(:platform c cr ca);
@@ -23322,7 +23347,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT = qw(&mail_via_bsmtp);
import Amavis::Conf qw(:platform $QUARANTINEDIR c cr ca);
@@ -23520,7 +23545,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&mail_to_local_mailbox);
import Amavis::Conf qw(:platform c cr ca
@@ -23888,7 +23913,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform);
import Amavis::Util qw(ll do_log);
@@ -24194,7 +24219,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::rfc2821_2822_Tools;
@@ -24344,7 +24369,7 @@ sub penpals_find {
} or do { # Lua function probably not cached, define again and re-try
if ($@ !~ /^NOSCRIPT/) {
$self->disconnect; undef $result; chomp $@;
- do_log(-1, "Redis Lua error: %s", $@);
+ do_log(-1, 'penpals_find, Redis Lua error: %s', $@);
} else {
$self->load_lua_programs;
$result =
@@ -24408,9 +24433,8 @@ sub save_info_preliminary {
my $mail_id = $msginfo->mail_id;
defined $mail_id or die "save_info_preliminary: mail_id still undefined";
- # connect() sets the default ttl if missing, need to call it before do_log
$self->connect if !$self->{connected};
- ll(5) && do_log(5, "redis: save_info_preliminary: %s, %s, ttl %s s",
+ ll(5) && do_log(5, 'redis: save_info_preliminary: %s, %s, ttl %s s',
$mail_id, int $msginfo->rx_time, $self->{ttl}||'x');
# use Lua to do HSETNX *and* EXPIRE atomically, otherwise we risk inserting
@@ -24425,7 +24449,7 @@ sub save_info_preliminary {
} or do { # Lua function probably not cached, define again and re-try
if ($@ !~ /^NOSCRIPT/) {
$self->disconnect; chomp $@;
- do_log(-1, "Redis Lua error: %s", $@);
+ do_log(-1, 'save_info_preliminary, Redis Lua error: %s', $@);
} else {
$self->load_lua_programs;
$added = $r->call('EVALSHA', $self->{lua_save_info_preliminary}, @args);
@@ -24459,7 +24483,7 @@ sub query_and_update_ip_reputation {
} or do { # Lua function probably not cached, define again and re-try
if ($@ !~ /^NOSCRIPT/) {
$self->disconnect; chomp $@;
- do_log(-1, "Redis Lua error: %s", $@);
+ do_log(-1, "query_and_update_ip_reputation, Redis Lua error: %s", $@);
} else {
$self->load_lua_programs;
$ip_stats = $r->call('EVALSHA', $self->{lua_query_and_update_ip}, @args);
@@ -24634,7 +24658,7 @@ sub save_info_final {
} or do { # Lua function probably not cached, define again and re-try
if ($@ !~ /^NOSCRIPT/) {
$self->disconnect; undef $result; chomp $@;
- do_log(-1, "Redis Lua error: %s", $@);
+ do_log(-1, "save_info_final, Redis Lua error: %s", $@);
} else {
$self->load_lua_programs;
$result = $r->call('EVALSHA', $self->{lua_save_final},
@@ -25000,7 +25024,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform c cr ca);
import Amavis::Util qw(ll do_log do_log_safe);
@@ -25281,7 +25305,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::rfc2821_2822_Tools;
@@ -25737,7 +25761,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Util qw(ll do_log untaint min max minmax);
}
@@ -26036,7 +26060,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT = qw(&mail_via_sql);
import Amavis::Conf qw(:platform c cr ca $sql_quarantine_chunksize_max);
@@ -26173,7 +26197,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars c cr ca);
import Amavis::Util qw(ll untaint min max minmax unique_list do_log
@@ -27336,7 +27360,7 @@ use IO::File qw(O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT O_EXCL);
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform c cr ca);
import Amavis::Util qw(ll do_log min max minmax untaint untaint_inplace
@@ -27738,7 +27762,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars :sa c cr ca);
import Amavis::Util qw(ll do_log sanitize_str min max minmax
@@ -28192,7 +28216,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars :sa c cr ca);
import Amavis::Util qw(ll do_log sanitize_str min max minmax get_deadline);
@@ -28404,7 +28428,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
# let a 'require' understand that this module is already loaded:
$INC{'Mail/SpamAssassin/Logger/Amavislog.pm'} = 'amavisd';
@@ -28441,7 +28465,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
import Amavis::Conf qw(:platform :confvars :sa $daemon_user c cr ca);
import Amavis::Util qw(ll do_log do_log_safe sanitize_str prolong_timer
@@ -29399,7 +29423,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&init &decompose_part &determine_file_types);
import Amavis::Util qw(untaint min max minmax ll do_log snmp_count
@@ -30241,6 +30265,7 @@ sub do_unrar($$$;$) {
my $lcnt = 0; my $member_name; my $bytes = 0; my $last_line;
my $item_num = 0; my $parent_placement = $part->mime_placement;
my $retval = 1; my $fn = $part->full_name; my($proc_fh,$pid);
+ my $unrarvers = 5;
my(@common_rar_switches) = qw(-c- -p- -idcdp); # -av-
prolong_timer('do_unrar_pre'); # restart timer
@@ -30261,31 +30286,62 @@ sub do_unrar($$$;$) {
} elsif ($hypcount < 1 && $ln =~ /^Encrypted file:/) {
do_log(4,"do_unrar: %s", $ln);
$part->attributes_add('U','C');
+ } elsif ($hypcount < 1 &&
+ $ln =~ /^\s+Size\s+Packed Ratio\s+Date\s+Time\s+Attr\s+CRC/) {
+ do_log(5,"do_unrar: found unrar version < 5");
+ $unrarvers = 4;
} elsif ($hypcount == 1) {
- $lcnt++; local($1,$2,$3);
- if ($lcnt % 2 == 0) { # information line (every other line)
- if ($entries_cnt++, $MAXFILES && $entries_cnt > $MAXFILES)
- { die "Maximum number of files ($MAXFILES) exceeded" }
- if ($ln !~ /^\s+(\d+)\s+(\d+)\s+(\d+%|-->|<--|<->)/) {
+ if ($unrarvers >= 5) {
+ local($1,$2,$3,$4,$5);
+ if ($ln !~ /^ ([* ]) \s+ \S+ \s+ (\d+) \s+ (\d+) \s+
+ ( \d+ % | --> | <-- | <-> ) \s+
+ \S+ \s+ \S+ \s+ \S+ \s+ (.*)/xs) {
do_log($testing_for_sfx ? 4 : -1,
"do_unrar: can't parse info line for \"%s\" %s",
$member_name,$ln);
- } elsif (defined $member_name) {
- do_log(5,'do_unrar: member: "%s", size: %s', $member_name,$1);
- if ($1 > 0) { $bytes += $1; push(@list, $member_name) }
+ } else {
+ $member_name = $5;
+ if ($1 eq '*') { # member is encrypted
+ $encryptedcount++; $item_num++;
+ # make a phantom entry - carrying only name and attributes
+ my $newpart_obj =
+ Amavis::Unpackers::Part->new("$tempdir/parts",$part);
+ $newpart_obj->mime_placement("$parent_placement/$item_num");
+ $newpart_obj->name_declared($member_name);
+ $newpart_obj->attributes_add('U','C');
+ } else { # makes no sense extracting encrypted files
+ do_log(5,'do_unrar: member: "%s", size: %s', $member_name,$2);
+ if ($2 > 0) { $bytes += $2; push(@list, $member_name) }
+ }
+ undef $member_name;
}
- undef $member_name;
- } elsif ($ln =~ /^(.)(.*)\z/s) {
- $member_name = $2; # all but the first character (space or '*')
- if ($1 eq '*') { # member is encrypted
- $encryptedcount++; $item_num++;
- # make a phantom entry - carrying only name and attributes
- my $newpart_obj =
- Amavis::Unpackers::Part->new("$tempdir/parts",$part);
- $newpart_obj->mime_placement("$parent_placement/$item_num");
- $newpart_obj->name_declared($member_name);
- $newpart_obj->attributes_add('U','C');
- undef $member_name; # makes no sense extracting encrypted files
+ } else { # old version of unrar
+ $lcnt++; local($1,$2,$3);
+ if ($lcnt % 2 == 0) { # information line (every other line)
+ if ($entries_cnt++, $MAXFILES && $entries_cnt > $MAXFILES)
+ { die "Maximum number of files ($MAXFILES) exceeded" }
+ if ($ln !~ /^ \s+ (\d+) \s+ (\d+) \s+
+ ( \d+% | --> | <-- | <-> )/xs) {
+ do_log($testing_for_sfx ? 4 : -1,
+ "do_unrar: can't parse info line for \"%s\" %s",
+ $member_name,$ln);
+ } elsif (defined $member_name) {
+ do_log(5,'do_unrar: member: "%s", size: %s', $member_name,$1);
+ if ($1 > 0) { $bytes += $1; push(@list, $member_name) }
+ }
+ undef $member_name;
+ } elsif ($ln =~ /^(.)(.*)\z/s) {
+ $member_name = $2; # all but the first character (space or '*')
+ if ($1 eq '*') { # member is encrypted
+ $encryptedcount++; $item_num++;
+ # make a phantom entry - carrying only name and attributes
+ my $newpart_obj =
+ Amavis::Unpackers::Part->new("$tempdir/parts",$part);
+ $newpart_obj->mime_placement("$parent_placement/$item_num");
+ $newpart_obj->name_declared($member_name);
+ $newpart_obj->attributes_add('U','C');
+ undef $member_name; # makes no sense extracting encrypted files
+ }
}
}
}
@@ -31148,7 +31204,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&dkim_key_postprocess &generate_authentication_results
&dkim_make_signatures &adjust_score_by_signer_reputation
@@ -32294,7 +32350,7 @@ no warnings 'uninitialized';
BEGIN {
require Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
- $VERSION = '2.320';
+ $VERSION = '2.321';
@ISA = qw(Exporter);
@EXPORT_OK = qw(&show_or_test_dkim_public_keys &generate_dkim_private_key
&convert_dkim_keys_file);
diff --git a/amavisd-new-courier.patch b/amavisd-new-courier.patch
index de0033b..5cda457 100644
--- a/amavisd-new-courier.patch
+++ b/amavisd-new-courier.patch
@@ -1,5 +1,5 @@
---- amavisd.ori 2014-05-07 16:50:03.712143074 +0200
-+++ amavisd 2014-05-07 16:50:36.219141034 +0200
+--- amavisd.ori 2014-06-27 19:43:59.240215903 +0200
++++ amavisd 2014-06-27 19:44:18.402213378 +0200
@@ -108,5 +108,5 @@
# Amavis::In::AMPDP
# Amavis::In::SMTP
@@ -14,7 +14,7 @@
+ IO::Handle IO::File IO::Socket IO::Socket::UNIX IO::Select
IO::Stringy Digest::MD5 Unix::Syslog File::Basename
Compress::Zlib MIME::Base64 MIME::QuotedPrint MIME::Words
-@@ -11840,4 +11840,18 @@
+@@ -11852,4 +11852,18 @@
### Net::Server hook
+### This hook takes place immediately after the "->run()" method is called.
@@ -33,14 +33,14 @@
+### Net::Server hook
### Occurs in the parent (master) process after (possibly) opening a log file,
### creating pid file, reopening STDIN/STDOUT to /dev/null and daemonizing;
-@@ -11845,5 +11859,5 @@
+@@ -11857,5 +11871,5 @@
#
sub post_configure_hook {
-# umask(0007); # affect protection of Unix sockets created by Net::Server
+ umask(0007); # affect protection of Unix sockets created by Net::Server
}
-@@ -11864,9 +11878,18 @@
+@@ -11876,9 +11890,18 @@
### Net::Server hook
### Occurs in the parent (master) process after binding to sockets,
-### but before chrooting and dropping privileges
@@ -61,7 +61,7 @@
+ }
}
-@@ -11924,4 +11947,15 @@
+@@ -11936,4 +11959,15 @@
}
$spamcontrol_obj->init_pre_fork if $spamcontrol_obj;
+ if ($courierfilter_shutdown) {
@@ -77,7 +77,7 @@
+ }
my(@modules_extra) = grep(!exists $modules_basic{$_}, keys %INC);
if (@modules_extra) {
-@@ -12393,5 +12427,7 @@
+@@ -12405,5 +12439,7 @@
$ampdp_in_obj->process_policy_request($sock, $conn, \&check_mail, 0);
} elsif ($suggested_protocol eq 'COURIER') {
- die "unavailable support for protocol: $suggested_protocol";
@@ -86,7 +86,7 @@
+ $courier_in_obj->process_courier_request($sock, $conn, \&check_mail);
} elsif ($suggested_protocol eq 'QMQPqq') {
die "unavailable support for protocol: $suggested_protocol";
-@@ -12501,4 +12537,24 @@
+@@ -12513,4 +12549,24 @@
}
+### Net::Server hook
@@ -111,7 +111,7 @@
+
### Child is about to be terminated
### user customizable Net::Server hook
-@@ -17662,4 +17718,9 @@
+@@ -17687,4 +17743,9 @@
undef $Amavis::Conf::log_verbose_templ;
+# courierfilter shutdown needs can_read_hook, added in Net::Server 0.90
@@ -121,14 +121,14 @@
+
if (defined $desired_user && $daemon_user ne '') {
local($1);
-@@ -18315,4 +18376,6 @@
+@@ -18340,4 +18401,6 @@
host => $bind_to[0], # default bind, redundant, merged to @listen_sockets
listen => $listen_queue_size, # undef for a default
+ # need to set multi_port for can_read_hook
+ multi_port => $courierfilter_shutdown ? 1 : undef,
max_servers => $max_servers, # number of pre-forked children
!defined($min_servers) ? ()
-@@ -21801,5 +21864,424 @@
+@@ -21826,5 +21889,424 @@
no warnings 'uninitialized';
-BEGIN { die "Code not available for module Amavis::In::Courier" }
diff --git a/amavisd-new-qmqpqq.patch b/amavisd-new-qmqpqq.patch
index 62e60fc..4118326 100644
--- a/amavisd-new-qmqpqq.patch
+++ b/amavisd-new-qmqpqq.patch
@@ -1,36 +1,36 @@
---- amavisd.ori 2014-05-07 16:50:03.712143074 +0200
-+++ amavisd 2014-05-07 16:51:36.275142228 +0200
+--- amavisd.ori 2014-06-27 19:43:59.240215903 +0200
++++ amavisd 2014-06-27 19:45:10.174210666 +0200
@@ -109,4 +109,5 @@
# Amavis::In::SMTP
#( Amavis::In::Courier )
+# Amavis::In::QMQPqq
# Amavis::Out::SMTP::Protocol
# Amavis::Out::SMTP::Session
-@@ -4746,4 +4747,5 @@
+@@ -4755,4 +4756,5 @@
$myproduct_name,
$conn->socket_port eq '' ? 'unix socket' : "port ".$conn->socket_port);
+ # must not use proto name QMQPqq in 'with'
$s .= "\n with $smtp_proto" if $smtp_proto=~/^(ES|S|L)MTPS?A?\z/i; #RFC 3848
$s .= "\n id $id" if defined $id && $id ne '';
-@@ -10977,4 +10979,5 @@
+@@ -10989,4 +10991,5 @@
$extra_code_sql_lookup $extra_code_ldap
$extra_code_in_ampdp $extra_code_in_smtp $extra_code_in_courier
+ $extra_code_in_qmqpqq
$extra_code_out_smtp $extra_code_out_pipe
$extra_code_out_bsmtp $extra_code_out_local $extra_code_p0f
-@@ -11004,4 +11007,5 @@
+@@ -11016,4 +11019,5 @@
# Amavis::In::AMPDP, Amavis::In::SMTP and In::Courier objects
use vars qw($ampdp_in_obj $smtp_in_obj $courier_in_obj);
+use vars qw($qmqpqq_in_obj); # Amavis::In::QMQPqq object
use vars qw($sql_dataset_conn_lookups); # Amavis::Out::SQL::Connection object
-@@ -11749,4 +11753,5 @@
+@@ -11761,4 +11765,5 @@
do_log(0,"SMTP-in proto code %s loaded", $extra_code_in_smtp ?'':" NOT");
do_log(0,"Courier proto code %s loaded", $extra_code_in_courier ?'':" NOT");
+ do_log(0,"QMQPqq-in proto code %s loaded", $extra_code_in_qmqpqq ?'':" NOT");
do_log(0,"SMTP-out proto code %s loaded", $extra_code_out_smtp ?'':" NOT");
do_log(0,"Pipe-out proto code %s loaded", $extra_code_out_pipe ?'':" NOT");
-@@ -12395,5 +12400,9 @@
+@@ -12407,5 +12412,9 @@
die "unavailable support for protocol: $suggested_protocol";
} elsif ($suggested_protocol eq 'QMQPqq') {
- die "unavailable support for protocol: $suggested_protocol";
@@ -41,20 +41,20 @@
+ $qmqpqq_in_obj->process_qmqpqq_request($sock,$conn,\&check_mail);
} elsif ($suggested_protocol eq 'TCP-LOOKUP') { #postfix maps, experimental
process_tcp_lookup_request($sock, $conn);
-@@ -12518,4 +12527,6 @@
+@@ -12530,4 +12539,6 @@
do_log_safe(5,"child_finish_hook: invoking DESTROY methods");
undef $smtp_in_obj; undef $ampdp_in_obj; undef $courier_in_obj;
+ undef $qmqpqq_in_obj;
+ undef $qmqpqq_in_obj;
undef $sql_storage; undef $sql_wblist; undef $sql_lookups;
undef $sql_dataset_conn_lookups; undef $sql_dataset_conn_storage;
-@@ -17456,4 +17467,5 @@
+@@ -17481,4 +17492,5 @@
$extra_code_sql_lookup, $extra_code_ldap,
$extra_code_in_ampdp, $extra_code_in_smtp, $extra_code_in_courier,
+ $extra_code_in_qmqpqq,
$extra_code_out_smtp, $extra_code_out_pipe,
$extra_code_out_bsmtp, $extra_code_out_local,
-@@ -17813,5 +17825,11 @@
+@@ -17838,5 +17850,11 @@
undef $extra_code_in_courier;
}
- if ($needed_protocols_in{'QMQPqq'}) { die "In::QMQPqq code not available" }
@@ -67,7 +67,7 @@
+ }
}
-@@ -21807,4 +21825,276 @@
+@@ -21832,4 +21850,276 @@
__DATA__
#
+package Amavis::In::QMQPqq;
@@ -344,8 +344,8 @@
+#
package Amavis::Out::SMTP::Protocol;
use strict;
---- amavisd.conf.ori 2014-05-07 16:50:20.541141753 +0200
-+++ amavisd.conf 2014-05-07 16:51:36.277142196 +0200
+--- amavisd.conf.ori 2014-06-27 19:44:08.520275737 +0200
++++ amavisd.conf 2014-06-27 19:45:10.175209744 +0200
@@ -56,6 +56,6 @@
# option(s) -p overrides $inet_socket_port and $unix_socketname
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/amavisd-new/pkg-amavisd-new.git
More information about the Amavisd-new-commits
mailing list