summary refs log tree commit diff
path: root/pkgs/servers/mail
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2019-12-26 14:16:15 +0100
committerFranz Pletz <fpletz@fnordicwalking.de>2019-12-26 14:17:36 +0100
commit77b6c3cd06a679140fb5a44f81f904497007f333 (patch)
treee8ed1606b326cdafba719cc2a14c527c1b601f2e /pkgs/servers/mail
parent602bccd1a8262d4e6bd787838d21fc3c2c1c50ba (diff)
parent4d2dd1554618831f0a5b159b8a4dff86612c02a9 (diff)
downloadnixpkgs-77b6c3cd06a679140fb5a44f81f904497007f333.tar
nixpkgs-77b6c3cd06a679140fb5a44f81f904497007f333.tar.gz
nixpkgs-77b6c3cd06a679140fb5a44f81f904497007f333.tar.bz2
nixpkgs-77b6c3cd06a679140fb5a44f81f904497007f333.tar.lz
nixpkgs-77b6c3cd06a679140fb5a44f81f904497007f333.tar.xz
nixpkgs-77b6c3cd06a679140fb5a44f81f904497007f333.tar.zst
nixpkgs-77b6c3cd06a679140fb5a44f81f904497007f333.zip
Merge remote-tracking branch 'origin/master' into gcc-9
Diffstat (limited to 'pkgs/servers/mail')
-rw-r--r--pkgs/servers/mail/dovecot/2.2.x-module_dir.patch135
-rw-r--r--pkgs/servers/mail/dovecot/2.3.x-module_dir.patch165
-rw-r--r--pkgs/servers/mail/dovecot/default.nix6
-rw-r--r--pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix4
-rw-r--r--pkgs/servers/mail/opensmtpd/default.nix6
-rw-r--r--pkgs/servers/mail/postfix/default.nix4
-rw-r--r--pkgs/servers/mail/public-inbox/default.nix66
-rw-r--r--pkgs/servers/mail/spamassassin/default.nix11
8 files changed, 247 insertions, 150 deletions
diff --git a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
deleted file mode 100644
index 422bfad92e6..00000000000
--- a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-diff --git a/src/auth/main.c b/src/auth/main.c
-index 2dbf9e1..b1e778a 100644
---- a/src/auth/main.c
-+++ b/src/auth/main.c
-@@ -192,7 +192,7 @@ static void main_preinit(void)
- 	mod_set.debug = global_auth_settings->debug;
- 	mod_set.filter_callback = auth_module_filter;
- 
--	modules = module_dir_load(AUTH_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/etc/dovecot/modules/auth", NULL, &mod_set);
- 	module_dir_init(modules);
- 
- 	if (!worker)
-@@ -223,7 +223,7 @@ void auth_module_load(const char *names)
- 	mod_set.debug = global_auth_settings->debug;
- 	mod_set.ignore_missing = TRUE;
- 
--	modules = module_dir_load_missing(modules, AUTH_MODULE_DIR, names,
-+	modules = module_dir_load_missing(modules, "/etc/dovecot/modules/auth", names,
- 					  &mod_set);
- 	module_dir_init(modules);
- }
-diff --git a/src/config/all-settings.c b/src/config/all-settings.c
-index 4a2ab53..5057d63 100644
---- a/src/config/all-settings.c
-+++ b/src/config/all-settings.c
-@@ -1079,7 +1079,7 @@ static const struct mail_user_settings mail_user_default_settings = {
- 	.last_valid_gid = 0,
- 
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 
- 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
- 
-@@ -4723,7 +4723,7 @@ const struct doveadm_settings doveadm_default_settings = {
- 	.base_dir = PKG_RUNDIR,
- 	.libexec_dir = PKG_LIBEXECDIR,
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 	.auth_debug = FALSE,
- 	.auth_socket_path = "auth-userdb",
- 	.doveadm_socket_path = "doveadm-server",
-diff --git a/src/config/config-parser.c b/src/config/config-parser.c
-index 6894123..07e9fec 100644
---- a/src/config/config-parser.c
-+++ b/src/config/config-parser.c
-@@ -1077,7 +1077,7 @@ void config_parse_load_modules(void)
- 
- 	i_zero(&mod_set);
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
--	modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/etc/dovecot/modules/settings", NULL, &mod_set);
- 	module_dir_init(modules);
- 
- 	i_array_init(&new_roots, 64);
-diff --git a/src/dict/main.c b/src/dict/main.c
-index 722ed02..4ed12ae 100644
---- a/src/dict/main.c
-+++ b/src/dict/main.c
-@@ -104,7 +104,7 @@ static void main_init(void)
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
- 	mod_set.require_init_funcs = TRUE;
- 
--	modules = module_dir_load(DICT_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/etc/dovecot/modules/dict", NULL, &mod_set);
- 	module_dir_init(modules);
- 
- 	/* Register only after loading modules. They may contain SQL drivers,
-diff --git a/src/doveadm/doveadm-settings.c b/src/doveadm/doveadm-settings.c
-index 88da40c..141ed05 100644
---- a/src/doveadm/doveadm-settings.c
-+++ b/src/doveadm/doveadm-settings.c
-@@ -86,7 +86,7 @@ const struct doveadm_settings doveadm_default_settings = {
- 	.base_dir = PKG_RUNDIR,
- 	.libexec_dir = PKG_LIBEXECDIR,
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 	.auth_debug = FALSE,
- 	.auth_socket_path = "auth-userdb",
- 	.doveadm_socket_path = "doveadm-server",
-diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c
-index a939f61..846cf86 100644
---- a/src/lib-fs/fs-api.c
-+++ b/src/lib-fs/fs-api.c
-@@ -114,7 +114,7 @@ static void fs_class_try_load_plugin(const char *driver)
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
- 	mod_set.ignore_missing = TRUE;
- 
--	fs_modules = module_dir_load_missing(fs_modules, MODULE_DIR,
-+	fs_modules = module_dir_load_missing(fs_modules, "/etc/dovecot/modules",
- 					     module_name, &mod_set);
- 	module_dir_init(fs_modules);
- 
-diff --git a/src/lib-ssl-iostream/iostream-ssl.c b/src/lib-ssl-iostream/iostream-ssl.c
-index f857ec9..0d1023b 100644
---- a/src/lib-ssl-iostream/iostream-ssl.c
-+++ b/src/lib-ssl-iostream/iostream-ssl.c
-@@ -53,7 +53,7 @@ int ssl_module_load(const char **error_r)
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
- 	mod_set.setting_name = "<built-in lib-ssl-iostream lookup>";
- 	mod_set.require_init_funcs = TRUE;
--	ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set);
-+	ssl_module = module_dir_load("/etc/dovecot/modules", plugin_name, &mod_set);
- 	if (module_dir_try_load_missing(&ssl_module, MODULE_DIR, plugin_name,
- 					&mod_set, error_r) < 0)
- 		return -1;
-diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c
-index b314b52..7055094 100644
---- a/src/lib-storage/mail-storage-settings.c
-+++ b/src/lib-storage/mail-storage-settings.c
-@@ -337,7 +337,7 @@ static const struct mail_user_settings mail_user_default_settings = {
- 	.last_valid_gid = 0,
- 
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 
- 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
- 
-diff --git a/src/lmtp/lmtp-settings.c b/src/lmtp/lmtp-settings.c
-index 1666ec9..8a27200 100644
---- a/src/lmtp/lmtp-settings.c
-+++ b/src/lmtp/lmtp-settings.c
-@@ -89,7 +89,7 @@ static const struct lmtp_settings lmtp_default_settings = {
- 	.login_trusted_networks = "",
- 
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- };
- 
- static const struct setting_parser_info *lmtp_setting_dependencies[] = {
diff --git a/pkgs/servers/mail/dovecot/2.3.x-module_dir.patch b/pkgs/servers/mail/dovecot/2.3.x-module_dir.patch
new file mode 100644
index 00000000000..0f987b44d8a
--- /dev/null
+++ b/pkgs/servers/mail/dovecot/2.3.x-module_dir.patch
@@ -0,0 +1,165 @@
+diff -ru dovecot-2.3.9.2.orig/src/auth/main.c dovecot-2.3.9.2/src/auth/main.c
+--- dovecot-2.3.9.2.orig/src/auth/main.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/auth/main.c	2019-12-15 19:46:52.101597499 +0100
+@@ -191,7 +191,7 @@
+ 	mod_set.debug = global_auth_settings->debug;
+ 	mod_set.filter_callback = auth_module_filter;
+ 
+-	modules = module_dir_load(AUTH_MODULE_DIR, NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/auth", NULL, &mod_set);
+ 	module_dir_init(modules);
+ 
+ 	if (!worker)
+@@ -222,7 +222,7 @@
+ 	mod_set.debug = global_auth_settings->debug;
+ 	mod_set.ignore_missing = TRUE;
+ 
+-	modules = module_dir_load_missing(modules, AUTH_MODULE_DIR, names,
++	modules = module_dir_load_missing(modules, "/etc/dovecot/modules/auth", names,
+ 					  &mod_set);
+ 	module_dir_init(modules);
+ }
+diff -ru dovecot-2.3.9.2.orig/src/config/all-settings.c dovecot-2.3.9.2/src/config/all-settings.c
+--- dovecot-2.3.9.2.orig/src/config/all-settings.c	2019-12-13 14:12:32.000000000 +0100
++++ dovecot-2.3.9.2/src/config/all-settings.c	2019-12-15 19:49:42.764650074 +0100
+@@ -1080,7 +1080,7 @@
+ 	.last_valid_gid = 0,
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 
+ 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
+ 
+@@ -3849,7 +3849,7 @@
+ 	.login_log_format = "%$: %s",
+ 	.login_access_sockets = "",
+ 	.login_proxy_notify_path = "proxy-notify",
+-	.login_plugin_dir = MODULEDIR"/login",
++	.login_plugin_dir = "/etc/dovecot/modules""/login",
+ 	.login_plugins = "",
+ 	.login_proxy_max_disconnect_delay = 0,
+ 	.director_username_hash = "%u",
+@@ -4058,7 +4058,7 @@
+ 	.login_trusted_networks = "",
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ };
+ static const struct setting_parser_info *lmtp_setting_dependencies[] = {
+ 	&lda_setting_parser_info,
+@@ -4823,7 +4823,7 @@
+ 	.base_dir = PKG_RUNDIR,
+ 	.libexec_dir = PKG_LIBEXECDIR,
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 	.mail_temp_dir = "/tmp",
+ 	.auth_debug = FALSE,
+ 	.auth_socket_path = "auth-userdb",
+diff -ru dovecot-2.3.9.2.orig/src/config/config-parser.c dovecot-2.3.9.2/src/config/config-parser.c
+--- dovecot-2.3.9.2.orig/src/config/config-parser.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/config/config-parser.c	2019-12-15 19:46:52.102597505 +0100
+@@ -1077,7 +1077,7 @@
+ 
+ 	i_zero(&mod_set);
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+-	modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/settings", NULL, &mod_set);
+ 	module_dir_init(modules);
+ 
+ 	i_array_init(&new_roots, 64);
+diff -ru dovecot-2.3.9.2.orig/src/dict/main.c dovecot-2.3.9.2/src/dict/main.c
+--- dovecot-2.3.9.2.orig/src/dict/main.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/dict/main.c	2019-12-15 19:46:52.102597505 +0100
+@@ -104,7 +104,7 @@
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+ 	mod_set.require_init_funcs = TRUE;
+ 
+-	modules = module_dir_load(DICT_MODULE_DIR, NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/dict", NULL, &mod_set);
+ 	module_dir_init(modules);
+ 
+ 	/* Register only after loading modules. They may contain SQL drivers,
+diff -ru dovecot-2.3.9.2.orig/src/doveadm/doveadm-settings.c dovecot-2.3.9.2/src/doveadm/doveadm-settings.c
+--- dovecot-2.3.9.2.orig/src/doveadm/doveadm-settings.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/doveadm/doveadm-settings.c	2019-12-15 19:47:29.525812499 +0100
+@@ -89,7 +89,7 @@
+ 	.base_dir = PKG_RUNDIR,
+ 	.libexec_dir = PKG_LIBEXECDIR,
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 	.mail_temp_dir = "/tmp",
+ 	.auth_debug = FALSE,
+ 	.auth_socket_path = "auth-userdb",
+diff -ru dovecot-2.3.9.2.orig/src/doveadm/doveadm-util.c dovecot-2.3.9.2/src/doveadm/doveadm-util.c
+--- dovecot-2.3.9.2.orig/src/doveadm/doveadm-util.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/doveadm/doveadm-util.c	2019-12-15 19:52:32.003844670 +0100
+@@ -33,7 +33,7 @@
+ 	mod_set.debug = doveadm_debug;
+ 	mod_set.ignore_dlopen_errors = TRUE;
+ 
+-	modules = module_dir_load_missing(modules, DOVEADM_MODULEDIR,
++	modules = module_dir_load_missing(modules, "/etc/dovecot/modules/doveadm",
+ 					  NULL, &mod_set);
+ 	module_dir_init(modules);
+ }
+@@ -58,7 +58,7 @@
+ 			return FALSE;
+ 	}
+ 
+-	dir = opendir(DOVEADM_MODULEDIR);
++	dir = opendir("/etc/dovecot/modules/doveadm");
+ 	if (dir == NULL)
+ 		return FALSE;
+ 
+diff -ru dovecot-2.3.9.2.orig/src/lib-fs/fs-api.c dovecot-2.3.9.2/src/lib-fs/fs-api.c
+--- dovecot-2.3.9.2.orig/src/lib-fs/fs-api.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lib-fs/fs-api.c	2019-12-15 19:46:52.102597505 +0100
+@@ -114,7 +114,7 @@
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+ 	mod_set.ignore_missing = TRUE;
+ 
+-	fs_modules = module_dir_load_missing(fs_modules, MODULE_DIR,
++	fs_modules = module_dir_load_missing(fs_modules, "/etc/dovecot/modules",
+ 					     module_name, &mod_set);
+ 	module_dir_init(fs_modules);
+ 
+diff -ru dovecot-2.3.9.2.orig/src/lib-ssl-iostream/iostream-ssl.c dovecot-2.3.9.2/src/lib-ssl-iostream/iostream-ssl.c
+--- dovecot-2.3.9.2.orig/src/lib-ssl-iostream/iostream-ssl.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lib-ssl-iostream/iostream-ssl.c	2019-12-15 19:46:52.102597505 +0100
+@@ -54,7 +54,7 @@
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+ 	mod_set.setting_name = "<built-in lib-ssl-iostream lookup>";
+ 	mod_set.require_init_funcs = TRUE;
+-	ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set);
++	ssl_module = module_dir_load("/etc/dovecot/modules", plugin_name, &mod_set);
+ 	if (module_dir_try_load_missing(&ssl_module, MODULE_DIR, plugin_name,
+ 					&mod_set, error_r) < 0)
+ 		return -1;
+diff -ru dovecot-2.3.9.2.orig/src/lib-storage/mail-storage-settings.c dovecot-2.3.9.2/src/lib-storage/mail-storage-settings.c
+--- dovecot-2.3.9.2.orig/src/lib-storage/mail-storage-settings.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lib-storage/mail-storage-settings.c	2019-12-15 19:46:52.102597505 +0100
+@@ -337,7 +337,7 @@
+ 	.last_valid_gid = 0,
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 
+ 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
+ 
+diff -ru dovecot-2.3.9.2.orig/src/lmtp/lmtp-settings.c dovecot-2.3.9.2/src/lmtp/lmtp-settings.c
+--- dovecot-2.3.9.2.orig/src/lmtp/lmtp-settings.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lmtp/lmtp-settings.c	2019-12-15 19:46:52.102597505 +0100
+@@ -95,7 +95,7 @@
+ 	.login_trusted_networks = "",
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ };
+ 
+ static const struct setting_parser_info *lmtp_setting_dependencies[] = {
diff --git a/pkgs/servers/mail/dovecot/default.nix b/pkgs/servers/mail/dovecot/default.nix
index 35c274eff25..3aff9f53ce7 100644
--- a/pkgs/servers/mail/dovecot/default.nix
+++ b/pkgs/servers/mail/dovecot/default.nix
@@ -9,7 +9,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "dovecot-2.3.8";
+  name = "dovecot-2.3.9.2";
 
   nativeBuildInputs = [ perl pkgconfig ];
   buildInputs =
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://dovecot.org/releases/2.3/${name}.tar.gz";
-    sha256 = "0jdng27hqqagjy6v7ymd0xflbv5dbc1rhh450nk39ar6pw1qsxy5";
+    sha256 = "1yc6hi4hqg4hcc4495sf4m5f1lnargphi6dawj43if21vncgp127";
   };
 
   enableParallelBuilding = true;
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
     # Make dovecot look for plugins in /etc/dovecot/modules
     # so we can symlink plugins from several packages there.
     # The symlinking needs to be done in NixOS.
-    ./2.2.x-module_dir.patch
+    ./2.3.x-module_dir.patch
   ];
 
   configureFlags = [
diff --git a/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix b/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
index 4184771f8a8..71a5c20dea3 100644
--- a/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
+++ b/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "dovecot-pigeonhole";
-  version = "0.5.8";
+  version = "0.5.9";
 
   src = fetchurl {
     url = "https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-${version}.tar.gz";
-    sha256 = "08lhfl877xm790f1mqdhvz74xqr2kkl8wpz2m6p0j6hv1kan1f4g";
+    sha256 = "01dxidrnmrr2gqggfsgkfxa6ynvyjyw13xw32gi86yqmwnm6inin";
   };
 
   buildInputs = [ dovecot openssl ];
diff --git a/pkgs/servers/mail/opensmtpd/default.nix b/pkgs/servers/mail/opensmtpd/default.nix
index fdc2b3fd2c4..5a768178ee7 100644
--- a/pkgs/servers/mail/opensmtpd/default.nix
+++ b/pkgs/servers/mail/opensmtpd/default.nix
@@ -4,14 +4,14 @@
 
 stdenv.mkDerivation rec {
   pname = "opensmtpd";
-  version = "6.4.2p1";
+  version = "6.6.1p1";
 
   nativeBuildInputs = [ autoconf automake libtool bison ];
   buildInputs = [ libasr libevent zlib libressl db pam ];
 
   src = fetchurl {
     url = "https://www.opensmtpd.org/archives/${pname}-${version}.tar.gz";
-    sha256 = "0pgv080ai7d98l9340jadp9wjiaqj2qvgpqhilcz0kps2mdiawbd";
+    sha256 = "1ngil8j13m2rq07g94j4yjr6zmaimzy8wbfr17shi7rxnazys6zb";
   };
 
   patches = [
@@ -21,8 +21,6 @@ stdenv.mkDerivation rec {
   # See https://github.com/OpenSMTPD/OpenSMTPD/issues/885 for the `sh bootstrap`
   # requirement
   postPatch = ''
-    substituteInPlace smtpd/parse.y \
-      --replace "/usr/libexec/" "$out/libexec/opensmtpd/"
     substituteInPlace mk/smtpctl/Makefile.am --replace "chgrp" "true"
     substituteInPlace mk/smtpctl/Makefile.am --replace "chmod 2555" "chmod 0555"
     sh bootstrap
diff --git a/pkgs/servers/mail/postfix/default.nix b/pkgs/servers/mail/postfix/default.nix
index 8b6a46b9657..b3345f9420c 100644
--- a/pkgs/servers/mail/postfix/default.nix
+++ b/pkgs/servers/mail/postfix/default.nix
@@ -26,11 +26,11 @@ in stdenv.mkDerivation rec {
 
   pname = "postfix";
 
-  version = "3.4.7";
+  version = "3.4.8";
 
   src = fetchurl {
     url = "ftp://ftp.cs.uu.nl/mirror/postfix/postfix-release/official/${pname}-${version}.tar.gz";
-    sha256 = "0rzr0n1gljhmxidsslbr9505xcv0hm8jahkp4dm87a1v3l956cpy";
+    sha256 = "0hw9kbr05qdzvfqhxi4dp4n3s9xvdh0gr0la08a4bip06ybl4pcd";
   };
 
   nativeBuildInputs = [ makeWrapper m4 ];
diff --git a/pkgs/servers/mail/public-inbox/default.nix b/pkgs/servers/mail/public-inbox/default.nix
new file mode 100644
index 00000000000..b4749558500
--- /dev/null
+++ b/pkgs/servers/mail/public-inbox/default.nix
@@ -0,0 +1,66 @@
+{ buildPerlPackage, lib, fetchurl, makeWrapper
+, DBDSQLite, EmailMIME, IOSocketSSL, IPCRun, Plack, PlackMiddlewareReverseProxy
+, SearchXapian, TimeDate, URI
+, git, highlight, openssl, xapian
+}:
+
+let
+
+  # These tests would fail, and produce "Operation not permitted"
+  # errors from git, because they use git init --shared.  This tries
+  # to set the setgid bit, which isn't permitted inside build
+  # sandboxes.
+  #
+  # These tests were indentified with
+  #     grep -r shared t/
+  skippedTests = [ "convert-compact" "search" "v2writable" "www_listing" ];
+
+  testConditions = with lib;
+    concatMapStringsSep " " (n: "! -name ${escapeShellArg n}.t") skippedTests;
+
+in
+
+buildPerlPackage rec {
+  pname = "public-inbox";
+  version = "1.2.0";
+
+  src = fetchurl {
+    url = "https://public-inbox.org/releases/public-inbox-${version}.tar.gz";
+    sha256 = "0sa2m4f2x7kfg3mi4im7maxqmqvawafma8f7g92nyfgybid77g6s";
+  };
+
+  outputs = [ "out" "devdoc" "sa_config" ];
+
+  postConfigure = ''
+    substituteInPlace Makefile --replace 'TEST_FILES = t/*.t' \
+        'TEST_FILES = $(shell find t -name *.t ${testConditions})'
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [
+    DBDSQLite EmailMIME IOSocketSSL IPCRun Plack PlackMiddlewareReverseProxy
+    SearchXapian TimeDate URI highlight
+  ];
+
+  checkInputs = [ git openssl xapian ];
+  preCheck = ''
+    perl certs/create-certs.perl
+  '';
+
+  installTargets = [ "install" ];
+  postInstall = ''
+    for prog in $out/bin/*; do
+        wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ git ]}
+    done
+
+    mv sa_config $sa_config
+  '';
+
+  meta = with lib; {
+    homepage = "https://public-inbox.org/";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ qyliss ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/servers/mail/spamassassin/default.nix b/pkgs/servers/mail/spamassassin/default.nix
index 186f4670153..f3032bfc86a 100644
--- a/pkgs/servers/mail/spamassassin/default.nix
+++ b/pkgs/servers/mail/spamassassin/default.nix
@@ -2,18 +2,21 @@
 
 perlPackages.buildPerlPackage rec {
   pname = "SpamAssassin";
-  version = "3.4.2";
+  version = "3.4.3";
 
   src = fetchurl {
     url = "mirror://apache/spamassassin/source/Mail-${pname}-${version}.tar.bz2";
-    sha256 = "1np8h293bzg33i0xn9gj9krwgr7k6xbyf1yhxr2j2xci95d080yg";
+    sha256 = "1380cmrgjsyidnznr844c5yr9snz36dw7xchdfryi2s61vjzvf55";
   };
 
   # https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7434
   patches = [ ./sa-update_add--siteconfigpath.patch ];
 
-  buildInputs = [ makeWrapper ] ++ (with perlPackages; [ HTMLParser NetDNS NetAddrIP DBFile HTTPDate MailDKIM
-    LWP IOSocketSSL DBI EncodeDetect IPCountry NetIdent Razor2ClientAgent MailSPF NetDNSResolverProgrammable ]);
+  buildInputs = [ makeWrapper ] ++ (with perlPackages; [
+    HTMLParser NetCIDRLite NetDNS NetAddrIP DBFile HTTPDate MailDKIM LWP
+    IOSocketSSL DBI EncodeDetect IPCountry NetIdent Razor2ClientAgent MailSPF
+    NetDNSResolverProgrammable Socket6
+  ]);
 
   # Enabling 'taint' mode is desirable, but that flag disables support
   # for the PERL5LIB environment variable. Needs further investigation.