From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 8865B1382C5 for ; Sat, 26 Dec 2020 00:54:01 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D59E6E0BC3; Sat, 26 Dec 2020 00:54:00 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id AAE8CE0BC3 for ; Sat, 26 Dec 2020 00:54:00 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 7D84C3419D6 for ; Sat, 26 Dec 2020 00:53:59 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 1F81E50 for ; Sat, 26 Dec 2020 00:53:58 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1608944036.0a9241bfb4f3a6c78a570b1fec92c78bbe21ad2b.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: mail-filter/postgrey/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: mail-filter/postgrey/files/targrey-0.31-postgrey-1.34.patch X-VCS-Directories: mail-filter/postgrey/files/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 0a9241bfb4f3a6c78a570b1fec92c78bbe21ad2b X-VCS-Branch: master Date: Sat, 26 Dec 2020 00:53:58 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 0d5bdb99-70f4-474c-9aeb-b2cc72e6a8a9 X-Archives-Hash: 9d6f383df36816b7527809f76781bfd0 commit: 0a9241bfb4f3a6c78a570b1fec92c78bbe21ad2b Author: Sam James gentoo org> AuthorDate: Sat Dec 26 00:53:49 2020 +0000 Commit: Sam James gentoo org> CommitDate: Sat Dec 26 00:53:56 2020 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0a9241bf mail-filter/postgrey: remove old patch Package-Manager: Portage-3.0.12-prefix, Repoman-3.0.2 Signed-off-by: Sam James gentoo.org> .../files/targrey-0.31-postgrey-1.34.patch | 202 --------------------- 1 file changed, 202 deletions(-) diff --git a/mail-filter/postgrey/files/targrey-0.31-postgrey-1.34.patch b/mail-filter/postgrey/files/targrey-0.31-postgrey-1.34.patch deleted file mode 100644 index a17b6457d39..00000000000 --- a/mail-filter/postgrey/files/targrey-0.31-postgrey-1.34.patch +++ /dev/null @@ -1,202 +0,0 @@ ---- postgrey.orig 2011-05-04 22:54:15.000000000 +0200 -+++ postgrey 2011-10-17 10:10:21.000000000 +0200 -@@ -309,6 +309,22 @@ - $self->mylog(1, "cleaning clients database finished. before: $nr_keys_before, after: $nr_keys_after"); - } - -+ if($self->{postgrey}{targrey}) { -+ # cleanup tarpit blacklist database -+ my $tarpit_db = $self->{postgrey}{db_tarpit}; -+ ($nr_keys_before, $nr_keys_after) = (0, 0); -+ while (my ($key, $tarpit_last_seen) = each %$tarpit_db) { -+ $nr_keys_before++; -+ if($now - $tarpit_last_seen > $retry_window) { -+ delete $tarpit_db->{$key}; -+ } -+ else { -+ $nr_keys_after++; -+ } -+ } -+ $self->mylog(1, "cleaning tarpit blacklist database finished. before: $nr_keys_before, after: $nr_keys_after"); -+ } -+ - $self->{postgrey}{last_maint_keys}=$now; - } - } -@@ -383,7 +399,7 @@ - # whitelist if count is enough - if(defined $cawl_count and $cawl_count >= $self->{postgrey}{awl_clients}) - { -- if(($now >= $cawl_last+3600) or ($cawl_last > $now)) { -+ if(($now >= $cawl_last + $self->{postgrey}{awl_delay}) or ($cawl_last > $now)) { - $cawl_count++; # for statistics - $cawl_db->{$cawl_key}=$cawl_count.','.$now; - } -@@ -392,6 +408,28 @@ - } - } - -+ # check tarpit passed if targrey mode -+ if ($self->{postgrey}{targrey} && $attr->{protocol_state} eq 'DATA') { # passed tarpit -+ # remove tarpit blacklist -+ my $tarpit_db = $self->{postgrey}{db_tarpit}; -+ my $tarpit_key = $attr->{client_address}; -+ delete $tarpit_db->{$tarpit_key}; -+ -+ # auto whitelist clients by tarpit -+ if ($self->{postgrey}{awl_clients}) { -+ # enough time has passed (record only one attempt per hour) -+ if (! defined $cawl_last or $now >= $cawl_last + $self->{postgrey}{awl_delay}) { -+ # ok, increase count -+ $cawl_count++; -+ $cawl_db->{$cawl_key}=$cawl_count.','.$now; -+ $self->mylog(1, "tarpit whitelisted: $attr->{client_name}"."[".$attr->{client_address}."]") -+ if $cawl_count==$self->{postgrey}{awl_clients}; -+ } -+ } -+ -+ return 'DUNNO'; -+ } -+ - # lookup - my $sender = $self->do_sender_substitutions($attr->{sender}); - my ($client_net, $client_host) = -@@ -402,10 +440,11 @@ - } - my $val = $db->{$key}; - my $first; -+ my $retry_count=0; - my $last_was_successful=0; - if(defined $val) { - my $last; -- ($first, $last) = split(/,/,$val); -+ ($first, $last, $retry_count) = split(/,/,$val); - # find out if the last time was unsuccessful, so that we can add a header - # to say how much had to be waited - if($last - $first >= $self->{postgrey}{delay}) { -@@ -426,16 +465,19 @@ - $first = $now; - } - -+ my $diff = $self->{postgrey}{delay} - ($now - $first); -+ -+ # enough waited? -> increase retry_count -+ $retry_count++ if($diff <= 0); -+ - # update (put as last element stripped host-part if it was stripped) - if(defined $client_host) { -- $db->{$key}="$first,$now,$client_host"; -+ $db->{$key}="$first,$now,$retry_count,$client_host"; - } - else { -- $db->{$key}="$first,$now"; -+ $db->{$key}="$first,$now,$retry_count"; - } - -- my $diff = $self->{postgrey}{delay} - ($now - $first); -- - # auto whitelist clients - # algorithm: - # - on successful entry in the greylist db of a triplet: -@@ -443,23 +485,41 @@ - # - client whitelisted already? -> update last-seen timestamp - if($self->{postgrey}{awl_clients}) { - # greylisting succeeded -- if($diff <= 0 and !$last_was_successful) { -+ if($retry_count >= $self->{postgrey}{retry_count} and !$last_was_successful) { - # enough time has passed (record only one attempt per hour) -- if(! defined $cawl_last or $now >= $cawl_last + 3600) { -+ if(! defined $cawl_last or $now >= $cawl_last + $self->{postgrey}{awl_delay}) { - # ok, increase count - $cawl_count++; - $cawl_db->{$cawl_key}=$cawl_count.','.$now; - my $client = $attr->{client_name} ? - $attr->{client_name}.'['.$attr->{client_address}.']' : - $attr->{client_address}; -- $self->mylog(1, "whitelisted: $client") -+ $self->mylog(1, "whitelisted: $attr->{client_name}"."[".$attr->{client_address}."]") - if $cawl_count==$self->{postgrey}{awl_clients}; - } - } - } - -- # not enough waited? -> greylist -- if ($diff > 0 ) { -+ # not enough retry? -> greylist -+ if ($retry_count < $self->{postgrey}{retry_count}) { -+ if($self->{postgrey}{tarpit} && ! $self->{postgrey}{targrey}) { -+ # do tarpit and greylist if tarpit option only -+ # don't add message after greylist_action -+ return "SLEEP $self->{postgrey}{tarpit}, $self->{postgrey}{greylist_action}"; -+ } -+ if($self->{postgrey}{targrey}) { -+ # do tarpit if targrey option -+ # add tarpit blacklist -+ my $tarpit_db = $self->{postgrey}{db_tarpit}; -+ my $tarpit_key = $attr->{client_address}; -+ my $tarpit_last = $tarpit_db->{$tarpit_key}; -+ $tarpit_last = 0 unless (defined $tarpit_last); -+ $tarpit_db->{$tarpit_key} = "$now" if ($now >= $tarpit_last+300); # update if 5min ago -+ -+ # return sleep if not tarpit blacklisted -+ return "SLEEP $self->{postgrey}{tarpit}" if ($tarpit_last == 0); -+ # greylist if tarpit blacklisted -+ } - my $msg = $self->{postgrey}{greylist_text}; - # Workaround for an Exchange bug related to Greylisting: - # use DSN 4.2.0 instead of the default 4.7.1. This works -@@ -517,6 +577,7 @@ - 'syslogfacility|syslog-facility|facility=s', - 'retry-window=s', 'greylist-action=s', 'greylist-text=s', 'privacy', - 'hostname=s', 'exim', 'listen-queue-size=i', 'x-greylist-header=s', -+ 'tarpit:s', 'targrey', 'retry-count=i', 'auto-whitelist-delay=i', - ) or exit(1); - # note: lookup-by-subnet can be given for compatibility, but it is default - # so do not do nothing with it... -@@ -606,7 +667,9 @@ - awl_clients => defined $opt{'auto-whitelist-clients'} ? - ($opt{'auto-whitelist-clients'} ne '' ? - $opt{'auto-whitelist-clients'} : 5) : 5, -+ awl_delay => $opt{'auto-whitelist-delay'} || 3600, - retry_window => $retry_window, -+ retry_count => $opt{'retry-count'} || 1, - greylist_action => $opt{'greylist-action'} || 'DEFER_IF_PERMIT', - greylist_text => $opt{'greylist-text'} || 'Greylisted, see http://postgrey.schweikert.ch/help/%r.html', - whitelist_clients_files => $opt{'whitelist-clients'} || -@@ -618,6 +681,10 @@ - hostname => defined $opt{hostname} ? $opt{hostname} : hostname, - exim => defined $opt{'exim'}, - x_greylist_header => $opt{'x-greylist-header'} || 'X-Greylist: delayed %t seconds by postgrey-%v at %h; %d', -+ tarpit => defined $opt{'tarpit'} ? -+ ($opt{'tarpit'} ne '' ? -+ $opt{'tarpit'} : 65) : undef, -+ targrey => defined $opt{'targrey'}, - }, - }, 'postgrey'; - -@@ -633,6 +700,11 @@ - require Digest::SHA; - } - -+ # --targrey needs tarpit sec -+ if(defined $opt{'targrey'} && ! defined $opt{'tarpit'}) { -+ $server->{postgrey}{tarpit} = 125; -+ } -+ - $0 = join(' ', @{$server->{server}{commandline}}); - $server->run; - -@@ -711,6 +783,13 @@ - -Env => $self->{postgrey}{db_env} - ) or die "ERROR: can't create database $self->{server}{dbdir}/postgrey_clients.db: $!\n"; - } -+ if($self->{postgrey}{targrey}) { # use targrey -+ tie(%{$self->{postgrey}{db_tarpit}}, 'BerkeleyDB::Btree', -+ -Filename => 'tarpit_clients.db', -+ -Flags => DB_CREATE, -+ -Env => $self->{postgrey}{db_env} -+ ) or die "ERROR: can't create database $self->{server}{dbdir}/tarpit_clients.db: $!\n"; -+ } - } - - sub mux_input()