diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/mail/spamassassin/default.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/mail/spamassassin/default.nix | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/mail/spamassassin/default.nix b/nixpkgs/pkgs/servers/mail/spamassassin/default.nix new file mode 100644 index 000000000000..8b6623200eba --- /dev/null +++ b/nixpkgs/pkgs/servers/mail/spamassassin/default.nix @@ -0,0 +1,91 @@ +{ lib, fetchurl, perlPackages, makeBinaryWrapper, gnupg, re2c, gcc, gnumake, libxcrypt, openssl, coreutils, poppler_utils, tesseract, iana-etc }: + +perlPackages.buildPerlPackage rec { + pname = "SpamAssassin"; + version = "4.0.0"; + rulesRev = "r1905950"; + + src = fetchurl { + url = "mirror://apache/spamassassin/source/Mail-${pname}-${version}.tar.bz2"; + hash = "sha256-5aoXBQowvHK6qGr9xgSMrepNHsLsxh14dxegWbgxnog="; + }; + defaultRulesSrc = fetchurl { + url = "mirror://apache/spamassassin/source/Mail-${pname}-rules-${version}.${rulesRev}.tgz"; + hash = "sha256-rk/7uRfrx/76ckD8W7UVHdpmP45AWRYa18m0Lu0brG0="; + }; + + patches = [ + ./satest-no-clean-path.patch + ./sa_compile-use-perl5lib.patch + ]; + + nativeBuildInputs = [ makeBinaryWrapper ]; + buildInputs = (with perlPackages; [ + HTMLParser NetCIDRLite NetDNS NetAddrIP DBFile HTTPDate MailDKIM LWP + LWPProtocolHttps IOSocketSSL DBI EncodeDetect IPCountry NetIdent + Razor2ClientAgent MailSPF NetDNSResolverProgrammable Socket6 + ArchiveZip EmailAddressXS NetLibIDN2 MaxMindDBReader GeoIP MailDMARC + MaxMindDBReaderXS + ]) ++ [ + openssl + ]; + + makeFlags = [ "PERL_BIN=${perlPackages.perl}/bin/perl" "ENABLE_SSL=yes" ]; + + makeMakerFlags = [ "SYSCONFDIR=/etc LOCALSTATEDIR=/var/lib/spamassassin" ]; + + checkInputs = (with perlPackages; [ + TextDiff # t/strip2.t + ]) ++ [ + coreutils # date, t/basic_meta.t + poppler_utils # pdftotext, t/extracttext.t + tesseract # tesseract, t/extracttext.t + iana-etc # t/dnsbl_subtests.t (/etc/protocols used by Net::DNS::Nameserver) + re2c gcc gnumake + ]; + preCheck = '' + substituteInPlace t/spamc_x_e.t \ + --replace "/bin/echo" "${coreutils}/bin/echo" + export C_INCLUDE_PATH='${lib.makeSearchPathOutput "include" "include" [ libxcrypt ]}' + export HARNESS_OPTIONS="j''${NIX_BUILD_CORES}" + + export HOME=$NIX_BUILD_TOP/home + mkdir -p $HOME + mkdir t/log # pre-create to avoid race conditions + + # https://bz.apache.org/SpamAssassin/show_bug.cgi?id=8068 + checkFlagsArray+=(TEST_FILES='$(shell find t -name *.t -not -name spamd_ssl_accept_fail.t)') + ''; + + postInstall = '' + mkdir -p $out/share/spamassassin + mv "rules/"* $out/share/spamassassin/ + + tar -xzf ${defaultRulesSrc} -C $out/share/spamassassin/ + local moduleversion="$(${perlPackages.perl}/bin/perl -I lib -e 'use Mail::SpamAssassin; print $Mail::SpamAssassin::VERSION')" + sed -i -e "s/@@VERSION@@/$moduleversion/" $out/share/spamassassin/*.cf + + for n in "$out/bin/"*; do + # Skip if this isn't a perl script + if ! head -n1 "$n" | grep -q bin/perl; then + continue + fi + echo "Wrapping $n for taint mode" + orig="$out/bin/.$(basename "$n")-wrapped" + mv "$n" "$orig" + # We don't inherit argv0 so that $^X works properly in e.g. sa-compile + makeWrapper "${perlPackages.perl}/bin/perl" "$n" \ + --add-flags "-T $perlFlags $orig" \ + --prefix PATH : ${lib.makeBinPath [ gnupg re2c gcc gnumake ]} \ + --prefix C_INCLUDE_PATH : ${lib.makeSearchPathOutput "include" "include" [ libxcrypt ]} + done + ''; + + meta = { + homepage = "https://spamassassin.apache.org/"; + description = "Open-Source Spam Filter"; + license = lib.licenses.asl20; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ qknight qyliss ]; + }; +} |