summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-11-14 12:32:51 -0800
committerWilliam A. Kennington III <william@wkennington.com>2015-11-14 12:32:51 -0800
commit6602f49495c94e8533c8b482698bcf570a8d8933 (patch)
tree07065424002052ed9e726b4feb689697845ff4a7 /pkgs/servers
parente4feccce818416c39c8e86e6f9ac01674ad98c88 (diff)
downloadnixlib-6602f49495c94e8533c8b482698bcf570a8d8933.tar
nixlib-6602f49495c94e8533c8b482698bcf570a8d8933.tar.gz
nixlib-6602f49495c94e8533c8b482698bcf570a8d8933.tar.bz2
nixlib-6602f49495c94e8533c8b482698bcf570a8d8933.tar.lz
nixlib-6602f49495c94e8533c8b482698bcf570a8d8933.tar.xz
nixlib-6602f49495c94e8533c8b482698bcf570a8d8933.tar.zst
nixlib-6602f49495c94e8533c8b482698bcf570a8d8933.zip
Revert "Revert "Merge pull request #9543 from NixOS/staging.post-15.06""
This reverts commit 741bf840dad05cd1728481045466811ae8ae8281.

This reverts the fallout from reverting the major changes.
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/mail/opensmtpd/default.nix7
-rw-r--r--pkgs/servers/mail/opensmtpd/extras.nix79
-rw-r--r--pkgs/servers/mail/opensmtpd/proc_path.diff76
3 files changed, 160 insertions, 2 deletions
diff --git a/pkgs/servers/mail/opensmtpd/default.nix b/pkgs/servers/mail/opensmtpd/default.nix
index a95a5d81ce95..2fd3f0421b97 100644
--- a/pkgs/servers/mail/opensmtpd/default.nix
+++ b/pkgs/servers/mail/opensmtpd/default.nix
@@ -4,16 +4,18 @@
 
 stdenv.mkDerivation rec {
   name = "opensmtpd-${version}";
-  version = "5.4.5p1";
+  version = "5.7.1p1";
 
   nativeBuildInputs = [ autoconf automake libtool bison ];
   buildInputs = [ libasr libevent zlib openssl db pam ];
 
   src = fetchurl {
     url = "http://www.opensmtpd.org/archives/${name}.tar.gz";
-    sha256 = "15sicrpqsgg72igdckkwpmbgrapcjbfjsdrvm0zl8z13kgp6r4ks";
+    sha256 = "67e9dd9682ca8c181e84e66c76245a4a8f6205834f915a2c021cdfeb22049e3a";
   };
 
+  patches = [ ./proc_path.diff ];
+
   configureFlags = [
     "--sysconfdir=/etc"
     "--localstatedir=/var"
@@ -24,6 +26,7 @@ stdenv.mkDerivation rec {
     "--with-privsep-user=smtpd"
     "--with-queue-user=smtpq"
     "--with-ca-file=/etc/ssl/certs/ca-certificates.crt"
+    "--with-libevent-dir=${libevent}"
   ];
 
   installFlags = [
diff --git a/pkgs/servers/mail/opensmtpd/extras.nix b/pkgs/servers/mail/opensmtpd/extras.nix
new file mode 100644
index 000000000000..0123d19bf3fa
--- /dev/null
+++ b/pkgs/servers/mail/opensmtpd/extras.nix
@@ -0,0 +1,79 @@
+{ stdenv, fetchurl, openssl, libevent, libasr,
+  python2, pkgconfig, lua5, perl, mariadb, postgresql, sqlite, hiredis }:
+stdenv.mkDerivation rec {
+  name = "opensmtpd-extras-${version}";
+  version = "5.7.1";
+
+  src = fetchurl {
+    url = "https://www.opensmtpd.org/archives/${name}.tar.gz";
+    sha256 = "1kld4hxgz792s0cb2gl7m2n618ikzqkj88w5dhaxdrxg4x2c4vdm";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl libevent
+    libasr python2 lua5 perl mariadb postgresql sqlite hiredis ];
+
+  configureFlags = [
+    "--sysconfdir=/etc"
+    "--localstatedir=/var"
+    "--with-privsep-user=smtpd"
+    "--with-libevent-dir=${libevent}"
+
+    "--with-filter-clamav"
+    "--with-filter-dkim-signer"
+    "--with-filter-dnsbl"
+    "--with-filter-monkey"
+    "--with-filter-pause"
+    "--with-filter-regex"
+    "--with-filter-spamassassin"
+    "--with-filter-stub"
+    "--with-filter-trace"
+    "--with-filter-void"
+    "--with-queue-null"
+    "--with-queue-ram"
+    "--with-queue-stub"
+    "--with-table-ldap"
+    "--with-table-socketmap"
+    "--with-table-passwd"
+    "--with-table-stub"
+    "--with-scheduler-ram"
+    "--with-scheduler-stub"
+
+  ] ++ stdenv.lib.optional (python2 != null) [
+    "--with-python=${python2}"
+    "--with-filter-python"
+    "--with-queue-python"
+    "--with-table-python"
+    "--with-scheduler-python"
+
+  ] ++ stdenv.lib.optional (lua5 != null) [
+    "--with-lua=${pkgconfig}"
+    "--with-filter-lua"
+
+  ] ++ stdenv.lib.optional (perl != null) [
+    "--with-perl=${perl}"
+    "--with-filter-perl"
+
+  ] ++ stdenv.lib.optional (mariadb != null) [
+    "--with-table-mysql"
+
+  ] ++ stdenv.lib.optional (postgresql != null) [
+    "--with-table-postgres"
+
+  ] ++ stdenv.lib.optional (sqlite != null) [
+    "--with-table-sqlite"
+
+  ] ++ stdenv.lib.optional (hiredis != null) [
+    "--with-table-redis"
+  ];
+
+  NIX_CFLAGS_COMPILE = stdenv.lib.optional (hiredis != null) [ "-I${hiredis}/include/hiredis" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://www.opensmtpd.org/;
+    description = "Extra plugins for the OpenSMTPD mail server";
+    license = licenses.isc;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ gebner ];
+  };
+}
diff --git a/pkgs/servers/mail/opensmtpd/proc_path.diff b/pkgs/servers/mail/opensmtpd/proc_path.diff
new file mode 100644
index 000000000000..0e8eac0bb83b
--- /dev/null
+++ b/pkgs/servers/mail/opensmtpd/proc_path.diff
@@ -0,0 +1,76 @@
+diff -Naur opensmtpd-5.7.1p1/smtpd/parse.y opensmtpd-5.7.1p1.patched/smtpd/parse.y
+--- opensmtpd-5.7.1p1/smtpd/parse.y	2015-06-30 10:13:34.000000000 +0200
++++ opensmtpd-5.7.1p1.patched/smtpd/parse.y	2015-09-26 08:41:17.012472516 +0200
+@@ -2519,13 +2519,19 @@
+ {
+ 	struct filter_conf	*f;
+ 	char			*path;
++        const char              *proc_path;
+ 
+ 	if (dict_get(&conf->sc_filters, name)) {
+ 		yyerror("filter \"%s\" already defined", name);
+ 		return (NULL);
+ 	}
+ 
+-	if (asprintf(&path, "%s/filter-%s", PATH_LIBEXEC, prog) == -1) {
++        proc_path = getenv("OPENSMTPD_PROC_PATH");
++        if (proc_path == NULL) {
++                proc_path = PATH_LIBEXEC;
++        }
++
++	if (asprintf(&path, "%s/filter-%s", proc_path, prog) == -1) {
+ 		yyerror("filter \"%s\" asprintf failed", name);
+ 		return (0);
+ 	}
+diff -Naur opensmtpd-5.7.1p1/smtpd/smtpd.c opensmtpd-5.7.1p1.patched/smtpd/smtpd.c
+--- opensmtpd-5.7.1p1/smtpd/smtpd.c	2015-06-30 10:13:34.000000000 +0200
++++ opensmtpd-5.7.1p1.patched/smtpd/smtpd.c	2015-09-26 08:41:16.998472557 +0200
+@@ -854,6 +854,7 @@
+ 	char		path[PATH_MAX];
+ 	char		name[PATH_MAX];
+ 	char		*arg;
++        char            *proc_path;
+ 
+ 	if (strlcpy(name, conf, sizeof(name)) >= sizeof(name)) {
+ 		log_warnx("warn: %s-proc: conf too long", key);
+@@ -864,7 +865,12 @@
+ 	if (arg)
+ 		*arg++ = '\0';
+ 
+-	if (snprintf(path, sizeof(path), PATH_LIBEXEC "/%s-%s", key, name) >=
++        proc_path = getenv("OPENSMTPD_PROC_PATH");
++        if (proc_path == NULL) {
++                proc_path = PATH_LIBEXEC;
++        }
++
++	if (snprintf(path, sizeof(path), "%s/%s-%s", proc_path, key, name) >=
+ 	    (ssize_t)sizeof(path)) {
+ 		log_warn("warn: %s-proc: exec path too long", key);
+ 		return (-1);
+diff -Naur opensmtpd-5.7.1p1/smtpd/table.c opensmtpd-5.7.1p1.patched/smtpd/table.c
+--- opensmtpd-5.7.1p1/smtpd/table.c	2015-06-30 10:13:34.000000000 +0200
++++ opensmtpd-5.7.1p1.patched/smtpd/table.c	2015-09-26 08:41:17.005472536 +0200
+@@ -201,6 +201,7 @@
+ 	struct table_backend	*tb;
+ 	char			 buf[LINE_MAX];
+ 	char			 path[LINE_MAX];
++        const char              *proc_path;
+ 	size_t			 n;
+ 	struct stat		 sb;
+ 
+@@ -215,8 +216,14 @@
+ 	if (name && table_find(name, NULL))
+ 		fatalx("table_create: table \"%s\" already defined", name);
+ 
++        proc_path = getenv("OPENSMTPD_PROC_PATH");
++        if (proc_path == NULL) {
++                proc_path = PATH_LIBEXEC;
++        }
++
+ 	if ((tb = table_backend_lookup(backend)) == NULL) {
+-		if ((size_t)snprintf(path, sizeof(path), PATH_LIBEXEC "/table-%s",
++		if ((size_t)snprintf(path, sizeof(path), "%s/table-%s",
++                    proc_path,
+ 		    backend) >= sizeof(path)) {
+ 			fatalx("table_create: path too long \""
+ 			    PATH_LIBEXEC "/table-%s\"", backend);