diff options
author | Joachim Schiele <js@lastlog.de> | 2017-06-10 09:35:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-10 09:35:35 +0200 |
commit | 507c2079580d51c5a48c6267c3ad2ca6febd2fe9 (patch) | |
tree | 1d112c6eff1cd14a68677c505c972c034a4d3970 /pkgs/servers | |
parent | d17bcfc5f088d487da65d4ec9a2dc1990c912319 (diff) | |
download | nixpkgs-507c2079580d51c5a48c6267c3ad2ca6febd2fe9.tar nixpkgs-507c2079580d51c5a48c6267c3ad2ca6febd2fe9.tar.gz nixpkgs-507c2079580d51c5a48c6267c3ad2ca6febd2fe9.tar.bz2 nixpkgs-507c2079580d51c5a48c6267c3ad2ca6febd2fe9.tar.lz nixpkgs-507c2079580d51c5a48c6267c3ad2ca6febd2fe9.tar.xz nixpkgs-507c2079580d51c5a48c6267c3ad2ca6febd2fe9.tar.zst nixpkgs-507c2079580d51c5a48c6267c3ad2ca6febd2fe9.zip |
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
Diffstat (limited to 'pkgs/servers')
-rw-r--r-- | pkgs/servers/mail/spamassassin/default.nix | 23 | ||||
-rw-r--r-- | pkgs/servers/mail/spamassassin/sa-update_add--siteconfigpath.patch | 59 |
2 files changed, 67 insertions, 15 deletions
diff --git a/pkgs/servers/mail/spamassassin/default.nix b/pkgs/servers/mail/spamassassin/default.nix index 14149713ee8..f4ab6a02995 100644 --- a/pkgs/servers/mail/spamassassin/default.nix +++ b/pkgs/servers/mail/spamassassin/default.nix @@ -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 ]; }; } diff --git a/pkgs/servers/mail/spamassassin/sa-update_add--siteconfigpath.patch b/pkgs/servers/mail/spamassassin/sa-update_add--siteconfigpath.patch new file mode 100644 index 00000000000..3264aefc072 --- /dev/null +++ b/pkgs/servers/mail/spamassassin/sa-update_add--siteconfigpath.patch @@ -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 + |