diff --git a/MANIFEST b/MANIFEST index e16e0da..601f886 100644 --- a/MANIFEST +++ b/MANIFEST @@ -101,7 +101,6 @@ lib/Mail/SpamAssassin/Plugin/Pyzor.pm lib/Mail/SpamAssassin/Plugin/Razor2.pm lib/Mail/SpamAssassin/Plugin/RelayCountry.pm lib/Mail/SpamAssassin/Plugin/RelayEval.pm -lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm lib/Mail/SpamAssassin/Plugin/ReplaceTags.pm lib/Mail/SpamAssassin/Plugin/Reuse.pm lib/Mail/SpamAssassin/Plugin/Rule2XSBody.pm diff --git a/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm b/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm deleted file mode 100644 index 9179b93..0000000 --- a/lib/Mail/SpamAssassin/Plugin/ResourceLimits.pm +++ /dev/null @@ -1,143 +0,0 @@ -# <@LICENSE> -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to you under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -=head1 NAME - -Mail::SpamAssassin::Plugin::ResourceLimits - Limit the memory and/or CPU of child spamd processes - -=head1 SYNOPSIS - - # This plugin is for admin only and cannot be specified in user config. - loadplugin Mail::SpamAssassin::Plugin::ResourceLimits - - # Sets to RLIMIT_CPU from BSD::Resource. The quota is based on max CPU Time seconds. - resource_limit_cpu 120 - - # Sets to RLIMIT_RSS and RLIMIT_AS via BSD::Resource. - resource_limit_cpu 536870912 - -=head1 DESCRIPTION - -This module leverages BSD::Resource to assure your spamd child processes do not exceed -specified CPU or memory limit. If this happens, the child process will die. -See the L for more details. - -NOTE: Because this plugin uses BSD::Resource, it will not function on Windows. - -=head1 ADMINISTRATOR SETTINGS - -=over 4 - -=item resource_limit_cpu 120 (default: 0 or no limit) - -How many cpu cycles are allowed on this process before it dies. - -=item resource_limit_mem 536870912 (default: 0 or no limit) - -The maximum number of bytes of memory allowed both for: - -=over - -=item * - -(virtual) address space bytes - -=item * - -resident set size - -=back - -=back - -=cut - -package Mail::SpamAssassin::Plugin::ResourceLimits; - -use Mail::SpamAssassin::Plugin (); -use Mail::SpamAssassin::Logger (); -use Mail::SpamAssassin::Util (); -use Mail::SpamAssassin::Constants qw(:sa); - -use strict; -use warnings; - -use BSD::Resource qw(RLIMIT_RSS RLIMIT_AS RLIMIT_CPU); - -our @ISA = qw(Mail::SpamAssassin::Plugin); - -sub new { - my $class = shift; - my $mailsaobject = shift; - - $class = ref($class) || $class; - my $self = $class->SUPER::new($mailsaobject); - bless( $self, $class ); - - $self->set_config( $mailsaobject->{conf} ); - return $self; -} - -sub set_config { - my ( $self, $conf ) = @_; - my @cmds = (); - - push( - @cmds, - { - setting => 'resource_limit_mem', - is_admin => 1, - default => '0', - type => $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC - } - ); - - push( - @cmds, - { - setting => 'resource_limit_cpu', - is_admin => 1, - default => '0', - type => $Mail::SpamAssassin::Conf::CONF_TYPE_NUMERIC - } - ); - - $conf->{parser}->register_commands( \@cmds ); -} - -sub spamd_child_init { - my ($self) = @_; - - # Set CPU Resource limits if they were specified. - Mail::SpamAssassin::Util::dbg("resourcelimitplugin: In spamd_child_init"); - Mail::SpamAssassin::Util::dbg( "resourcelimitplugin: cpu limit: " . $self->{main}->{conf}->{resource_limit_cpu} ); - if ( $self->{main}->{conf}->{resource_limit_cpu} ) { - BSD::Resource::setrlimit( RLIMIT_CPU, $self->{main}->{conf}->{resource_limit_cpu}, $self->{main}->{conf}->{resource_limit_cpu} ) - || info("resourcelimitplugin: Unable to set RLIMIT_CPU"); - } - - # Set Resource limits if they were specified. - Mail::SpamAssassin::Util::dbg( "resourcelimitplugin: mem limit: " . $self->{main}->{conf}->{resource_limit_mem} ); - if ( $self->{main}->{conf}->{resource_limit_mem} ) { - BSD::Resource::setrlimit( RLIMIT_RSS, $self->{main}->{conf}->{resource_limit_mem}, $self->{main}->{conf}->{resource_limit_mem} ) - || info("resourcelimitplugin: Unable to set RLIMIT_RSS"); - BSD::Resource::setrlimit( RLIMIT_AS, $self->{main}->{conf}->{resource_limit_mem}, $self->{main}->{conf}->{resource_limit_mem} ) - || info("resourcelimitplugin: Unable to set RLIMIT_AS"); - } -} - -1; diff --git a/lib/Mail/SpamAssassin/Util/DependencyInfo.pm b/lib/Mail/SpamAssassin/Util/DependencyInfo.pm index b5b05cf..8223b26 100644 --- a/lib/Mail/SpamAssassin/Util/DependencyInfo.pm +++ b/lib/Mail/SpamAssassin/Util/DependencyInfo.pm @@ -234,12 +234,6 @@ our @OPTIONAL_MODULES = ( check for both Net::DNS and Net::DNS::Nameserver. However, Net::DNS::Nameserver is only used in make test as of June 2014.', }, -{ - module => 'BSD::Resource', - version => 0, - desc => 'BSD::Resource provides BSD process resource limit and priority - functions. It is used by the optional ResourceLimits Plugin.', -}, { module => 'Archive::Zip', version => 0, diff --git a/rules/v342.pre b/rules/v342.pre index 8e0fb07..c4758e9 100644 --- a/rules/v342.pre +++ b/rules/v342.pre @@ -19,10 +19,6 @@ # HashBL - Query hashed/unhashed strings, emails, uris etc from DNS lists # loadplugin Mail::SpamAssassin::Plugin::HashBL -# ResourceLimits - assure your spamd child processes -# do not exceed specified CPU or memory limit -# loadplugin Mail::SpamAssassin::Plugin::ResourceLimits - # FromNameSpoof - help stop spam that tries to spoof other domains using # the from name # loadplugin Mail::SpamAssassin::Plugin::FromNameSpoof