spamassassin: major service fixes -> added more perl packages to spamassassin and abstracted service to not use /etc/spamassassin, also running sa-update as spamd user periodically (#26470)
thanks @grahamc for IRC comments
This commit is contained in:
@@ -1,17 +1,7 @@
|
||||
{ stdenv, fetchurl, buildPerlPackage, perl, HTMLParser, NetDNS, NetAddrIP, DBFile
|
||||
{ stdenv, fetchurl, buildPerlPackage, perl, perlPackages, HTMLParser, NetDNS, NetAddrIP, DBFile
|
||||
, HTTPDate, MailDKIM, LWP, IOSocketSSL, makeWrapper, gnupg1
|
||||
}:
|
||||
|
||||
# TODO: Add the Perl modules ...
|
||||
#
|
||||
# DBI
|
||||
# Encode::Detect
|
||||
# IP::Country::Fast
|
||||
# Mail::SPF
|
||||
# Net::Ident
|
||||
# Razor2::Client::Agent
|
||||
#
|
||||
|
||||
buildPerlPackage rec {
|
||||
name = "SpamAssassin-3.4.1";
|
||||
|
||||
@@ -20,14 +10,17 @@ buildPerlPackage rec {
|
||||
sha256 = "0la6s5ilamf9129kyjckcma8cr6fpb6b5f2fb64v7106iy0ckhd0";
|
||||
};
|
||||
|
||||
buildInputs = [ makeWrapper HTMLParser NetDNS NetAddrIP DBFile HTTPDate MailDKIM
|
||||
LWP IOSocketSSL ];
|
||||
# https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7434
|
||||
patches = [ ./sa-update_add--siteconfigpath.patch ];
|
||||
|
||||
buildInputs = with perlPackages; [ makeWrapper HTMLParser NetDNS NetAddrIP DBFile HTTPDate MailDKIM
|
||||
LWP IOSocketSSL DBI EncodeDetect IPCountry NetIdent Razor2ClientAgent MailSPF NetDNSResolverProgrammable ];
|
||||
|
||||
# Enabling 'taint' mode is desirable, but that flag disables support
|
||||
# for the PERL5LIB environment variable. Needs further investigation.
|
||||
makeFlags = "PERL_BIN=${perl}/bin/perl PERL_TAINT=no";
|
||||
|
||||
makeMakerFlags = "CONFDIR=/etc/spamassassin LOCALSTATEDIR=/var/lib/spamassassin";
|
||||
makeMakerFlags = "CONFDIR=/homeless/shelter LOCALSTATEDIR=/var/lib/spamassassin";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
@@ -45,6 +38,6 @@ buildPerlPackage rec {
|
||||
description = "Open-Source Spam Filter";
|
||||
license = stdenv.lib.licenses.asl20;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
maintainers = [ stdenv.lib.maintainers.peti ];
|
||||
maintainers = with stdenv.lib.maintainers; [ peti qknight ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
From 60abf3ee8864980a95b32e2d6cf60e26b49654c0 Mon Sep 17 00:00:00 2001
|
||||
From: joachim schiele <js@lastlog.de>
|
||||
Date: Wed, 7 Jun 2017 22:15:39 +0200
|
||||
Subject: [PATCH 2/2] Adding --siteconfigpath to not be forced to use global /etc/spamasassin configuration directory but to provide an alternative location.
|
||||
|
||||
---
|
||||
sa-update.raw | 5 +++++
|
||||
lib/Mail/SpamAssassin/PerMsgStatus.pm | 2 +
|
||||
2 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sa-update.raw b/sa-update.raw
|
||||
index bb7396d..39f681f 100755
|
||||
--- a/sa-update.raw
|
||||
+++ b/sa-update.raw
|
||||
@@ -196,6 +196,7 @@ GetOptions(
|
||||
'gpgkeyfile=s' => \$opt{'gpgkeyfile'},
|
||||
'channelfile=s' => \$opt{'channelfile'},
|
||||
'updatedir=s' => \$opt{'updatedir'},
|
||||
+ 'siteconfigpath=s' => \$opt{'siteconfigpath'},
|
||||
'gpg!' => \$GPG_ENABLED,
|
||||
|
||||
'4' => sub { $opt{'force_pf'} = 'inet' },
|
||||
@@ -267,6 +268,9 @@ else {
|
||||
$opt{'updatedir'} = $SA->sed_path('__local_state_dir__/__version__');
|
||||
}
|
||||
|
||||
+if (defined $opt{'siteconfigpath'}) {
|
||||
+ $LOCAL_RULES_DIR = untaint_file_path($opt{'siteconfigpath'});
|
||||
+}
|
||||
|
||||
# check only disabled gpg
|
||||
# https://issues.apache.org/SpamAssassin/show_bug.cgi?id=5854
|
||||
@@ -1808,6 +1812,7 @@ Options:
|
||||
--updatedir path Directory to place updates, defaults to the
|
||||
SpamAssassin site rules directory
|
||||
(default: @@LOCAL_STATE_DIR@@/@@VERSION@@)
|
||||
+ --siteconfigpath=path Path for site configs
|
||||
--refreshmirrors Force the MIRRORED.BY file to be updated
|
||||
-D, --debug [area=n,...] Print debugging messages
|
||||
-v, --verbose Be verbose, like print updated channel names;
|
||||
--
|
||||
diff --git a/lib/Mail/SpamAssassin/PerMsgStatus.pm b/lib/Mail/SpamAssassin/PerMsgStatus.pm
|
||||
index 6d8beaa..6ad87dc 100644
|
||||
--- a/lib/Mail/SpamAssassin/PerMsgStatus.pm
|
||||
+++ b/lib/Mail/SpamAssassin/PerMsgStatus.pm
|
||||
@@ -389,7 +389,8 @@ sub check_timed {
|
||||
if (!$self->{main}->have_plugin("check_main")) {
|
||||
die "check: no loaded plugin implements 'check_main': cannot scan!\n".
|
||||
"Check that the necessary '.pre' files are in the config directory.\n".
|
||||
- "At a minimum, v320.pre loads the Check plugin which is required.\n";
|
||||
+ "At a minimum, v320.pre loads the Check plugin which is required.\n".
|
||||
+ "NixOS: Since there is no '/etc/spamassassin' simply restart 'spamd.service' which on its behalf will run 'sa-learn --siteconfigpath=/nix/store/l4hr4yxk8mb4wbkha6vm6rh92pj19rj6-spamd-env ...' to update the /var/lib/spamassassin configs.\n";
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
|
||||
2.12.2
|
||||
|
||||
Reference in New Issue
Block a user