From 2fb3bfb178b2f0002b47b290f2479ea04251875b Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Mon, 10 Oct 2022 07:51:11 +0200 Subject: [PATCH 1/5] python3Packages.pymilter: init at 1.0.5 --- .../python-modules/pymilter/default.nix | 30 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 32 insertions(+) create mode 100644 pkgs/development/python-modules/pymilter/default.nix diff --git a/pkgs/development/python-modules/pymilter/default.nix b/pkgs/development/python-modules/pymilter/default.nix new file mode 100644 index 000000000000..6362ba2cfb35 --- /dev/null +++ b/pkgs/development/python-modules/pymilter/default.nix @@ -0,0 +1,30 @@ +{ lib, python, buildPythonPackage, fetchFromGitHub, libmilter, bsddb3, pydns }: + +buildPythonPackage rec { + pname = "pymilter"; + version = "1.0.5"; + + src = fetchFromGitHub { + owner = "sdgathman"; + repo = pname; + rev = "${pname}-${version}"; + hash = "sha256-gZUWEDVZfDRiOOdG3lpiQldHxm/93l8qYVOHOEpHhzQ="; + }; + + buildInputs = [ libmilter ]; + propagatedBuildInputs = [ bsddb3 pydns ]; + + preBuild = '' + sed -i 's/import thread/import _thread as thread/' Milter/greylist.py + ''; + + # requires /etc/resolv.conf + doCheck = false; + + meta = with lib; { + homepage = "http://bmsi.com/python/milter.html"; + description = "Python bindings for libmilter api"; + maintainers = with maintainers; [ yorickvp ]; + license = licenses.gpl2; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index dd1dca64c91c..2f94ee98a7b4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8142,6 +8142,8 @@ self: super: with self; { pymicrobot = callPackage ../development/python-modules/pymicrobot { }; + pymilter = callPackage ../development/python-modules/pymilter { }; + pymitv = callPackage ../development/python-modules/pymitv { }; pymfy = callPackage ../development/python-modules/pymfy { }; From 37cc873ac8275cc6b5cdbf0f8ac8eab1f01a8038 Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Sun, 9 Oct 2022 10:40:07 +0200 Subject: [PATCH 2/5] pypolicyd-spf 2.0.2 -> spf-engine 2.9.3 Fixes CVE-2019-20790 --- pkgs/servers/mail/pypolicyd-spf/default.nix | 26 --------------------- pkgs/servers/mail/spf-engine/default.nix | 26 +++++++++++++++++++++ pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 2 +- 4 files changed, 28 insertions(+), 27 deletions(-) delete mode 100644 pkgs/servers/mail/pypolicyd-spf/default.nix create mode 100644 pkgs/servers/mail/spf-engine/default.nix diff --git a/pkgs/servers/mail/pypolicyd-spf/default.nix b/pkgs/servers/mail/pypolicyd-spf/default.nix deleted file mode 100644 index cbc63ff535a1..000000000000 --- a/pkgs/servers/mail/pypolicyd-spf/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ lib, buildPythonApplication, fetchurl, pyspf }: - -buildPythonApplication rec { - pname = "pypolicyd-spf"; - majorVersion = "2.0"; - version = "${majorVersion}.2"; - - src = fetchurl { - url = "https://launchpad.net/pypolicyd-spf/${majorVersion}/${version}/+download/${pname}-${version}.tar.gz"; - sha256 = "1nm8y1jjgx6mxrbcxrbdnmkf8vglwp0wiw6jipzh641wb24gi76z"; - }; - - propagatedBuildInputs = [ pyspf ]; - - preBuild = '' - substituteInPlace setup.py --replace "'/etc'" "'$out/etc'" - ''; - - meta = with lib; { - homepage = "https://launchpad.net/pypolicyd-spf/"; - description = "Postfix policy engine for Sender Policy Framework (SPF) checking"; - maintainers = with maintainers; [ abbradar ]; - license = licenses.asl20; - platforms = platforms.all; - }; -} diff --git a/pkgs/servers/mail/spf-engine/default.nix b/pkgs/servers/mail/spf-engine/default.nix new file mode 100644 index 000000000000..9237d735971a --- /dev/null +++ b/pkgs/servers/mail/spf-engine/default.nix @@ -0,0 +1,26 @@ +{ lib, buildPythonApplication, fetchurl, pyspf, dnspython, authres, pymilter }: + +buildPythonApplication rec { + pname = "spf-engine"; + majorVersion = lib.versions.majorMinor version; + version = "2.9.3"; + + src = fetchurl { + url = "https://launchpad.net/${pname}/${majorVersion}/${version}/+download/${pname}-${version}.tar.gz"; + sha256 = "sha256-w0Nb+L/Os3KPApENoylxCVaCD4FvgmvpfVvwCkt2IDE="; + }; + + propagatedBuildInputs = [ pyspf dnspython authres pymilter ]; + + preBuild = '' + substituteInPlace setup.py --replace "'/etc'" "'$out/etc'" + ''; + + meta = with lib; { + homepage = "https://launchpad.net/${pname}/"; + description = "Postfix policy engine for Sender Policy Framework (SPF) checking"; + maintainers = with maintainers; [ abbradar ]; + license = licenses.asl20; + platforms = platforms.all; + }; +} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 239794471469..c169dfe53ed8 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1232,6 +1232,7 @@ mapAliases ({ pyload = throw "pyload has been removed from nixpkgs, as it was unmaintained"; # Added 2021-03-21 pynagsystemd = throw "pynagsystemd was removed as it was unmaintained and incompatible with recent systemd versions. Instead use its fork check_systemd"; # Added 2020-10-24 pyo3-pack = maturin; + pypolicyd-spf = spf-engine; # Added 2022-10-09 pyrex = throw "pyrex has been removed from nixpkgs as the project is still stuck on python2"; # Added 2022-01-12 pyrex095 = throw "pyrex has been removed from nixpkgs as the project is still stuck on python2"; # Added 2022-01-12 pyrex096 = throw "pyrex has been removed from nixpkgs as the project is still stuck on python2"; # Added 2022-01-12 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fcb049f54fc0..daf914cb71fd 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -24406,7 +24406,7 @@ with pkgs; pure-ftpd = callPackage ../servers/ftp/pure-ftpd { }; - pypolicyd-spf = python3.pkgs.callPackage ../servers/mail/pypolicyd-spf { }; + spf-engine = python3.pkgs.callPackage ../servers/mail/spf-engine { }; pypiserver = with python3Packages; toPythonApplication pypiserver; From 46b4a9d74a1b78978a8058eac07feaea613bf096 Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Tue, 11 Oct 2022 13:01:23 +0200 Subject: [PATCH 3/5] pimilter: fix some tests using libredirect --- pkgs/development/python-modules/pymilter/default.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/pymilter/default.nix b/pkgs/development/python-modules/pymilter/default.nix index 6362ba2cfb35..46ca3d27c3aa 100644 --- a/pkgs/development/python-modules/pymilter/default.nix +++ b/pkgs/development/python-modules/pymilter/default.nix @@ -1,4 +1,4 @@ -{ lib, python, buildPythonPackage, fetchFromGitHub, libmilter, bsddb3, pydns }: +{ lib, python, buildPythonPackage, fetchFromGitHub, libmilter, bsddb3, pydns, iana-etc, libredirect }: buildPythonPackage rec { pname = "pymilter"; @@ -19,7 +19,15 @@ buildPythonPackage rec { ''; # requires /etc/resolv.conf - doCheck = false; + # testpolicy: requires makemap (#100419) + # using exec -a makemap smtpctl results in "unknown group smtpq" + preCheck = '' + echo "nameserver 127.0.0.1" > resolv.conf + export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf) + export LD_PRELOAD=${libredirect}/lib/libredirect.so + sed -i '/testpolicy/d' test.py + rm testpolicy.py + ''; meta = with lib; { homepage = "http://bmsi.com/python/milter.html"; From d316aeccdf0c1c645027354a55872391e2ae6bb8 Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Thu, 13 Oct 2022 11:08:36 +0200 Subject: [PATCH 4/5] libmilter: add fixDarwinDylibNames call to fix imports on darwin --- pkgs/development/libraries/libmilter/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libmilter/default.nix b/pkgs/development/libraries/libmilter/default.nix index 9287b0a0dea7..38788b3c964b 100644 --- a/pkgs/development/libraries/libmilter/default.nix +++ b/pkgs/development/libraries/libmilter/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, m4 }: +{ lib, stdenv, fetchurl, m4, fixDarwinDylibNames }: stdenv.mkDerivation rec { pname = "libmilter"; @@ -34,7 +34,11 @@ stdenv.mkDerivation rec { patches = [ ./install.patch ./sharedlib.patch ./glibc-2.30.patch ./darwin.patch ]; - nativeBuildInputs = [ m4 ]; + nativeBuildInputs = [ m4 ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; + + postInstall = lib.optionalString stdenv.isDarwin '' + fixDarwinDylibNames $out/lib/libmilter.dylib.1 + ''; meta = with lib; { description = "Sendmail Milter mail filtering API library"; From 3d8ffea12c2932cc355971a68c7bdaf15f6d7e7a Mon Sep 17 00:00:00 2001 From: Yorick van Pelt Date: Mon, 21 Nov 2022 11:40:32 +0100 Subject: [PATCH 5/5] spf-engine: apply review comments --- .../python-modules/pymilter/default.nix | 2 ++ pkgs/servers/mail/spf-engine/default.nix | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/development/python-modules/pymilter/default.nix b/pkgs/development/python-modules/pymilter/default.nix index 46ca3d27c3aa..0724161bf423 100644 --- a/pkgs/development/python-modules/pymilter/default.nix +++ b/pkgs/development/python-modules/pymilter/default.nix @@ -29,6 +29,8 @@ buildPythonPackage rec { rm testpolicy.py ''; + pythonImportsCheck = [ "Milter" ]; + meta = with lib; { homepage = "http://bmsi.com/python/milter.html"; description = "Python bindings for libmilter api"; diff --git a/pkgs/servers/mail/spf-engine/default.nix b/pkgs/servers/mail/spf-engine/default.nix index 9237d735971a..0f2e98582514 100644 --- a/pkgs/servers/mail/spf-engine/default.nix +++ b/pkgs/servers/mail/spf-engine/default.nix @@ -2,25 +2,29 @@ buildPythonApplication rec { pname = "spf-engine"; - majorVersion = lib.versions.majorMinor version; version = "2.9.3"; src = fetchurl { - url = "https://launchpad.net/${pname}/${majorVersion}/${version}/+download/${pname}-${version}.tar.gz"; + url = "https://launchpad.net/${pname}/${lib.versions.majorMinor version}/${version}/+download/${pname}-${version}.tar.gz"; sha256 = "sha256-w0Nb+L/Os3KPApENoylxCVaCD4FvgmvpfVvwCkt2IDE="; }; propagatedBuildInputs = [ pyspf dnspython authres pymilter ]; - preBuild = '' + pythonImportsCheck = [ + "spf_engine" + "spf_engine.milter_spf" + "spf_engine.policyd_spf" + ]; + + postPatch = '' substituteInPlace setup.py --replace "'/etc'" "'$out/etc'" ''; meta = with lib; { - homepage = "https://launchpad.net/${pname}/"; + homepage = "https://launchpad.net/spf-engine/"; description = "Postfix policy engine for Sender Policy Framework (SPF) checking"; maintainers = with maintainers; [ abbradar ]; license = licenses.asl20; - platforms = platforms.all; }; }