diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/mail/dovecot')
3 files changed, 235 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch b/nixpkgs/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch new file mode 100644 index 000000000000..1914933c558c --- /dev/null +++ b/nixpkgs/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch @@ -0,0 +1,122 @@ +diff --git a/src/auth/main.c b/src/auth/main.c +index 5a87c57..74bff52 100644 +--- a/src/auth/main.c ++++ b/src/auth/main.c +@@ -194,7 +194,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) +@@ -225,7 +225,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 de223a5..2df2d21 100644 +--- a/src/config/all-settings.c ++++ b/src/config/all-settings.c +@@ -836,7 +836,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): ", + +@@ -3545,7 +3545,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 2a5009a..134f92b 100644 +--- a/src/config/config-parser.c ++++ b/src/config/config-parser.c +@@ -1047,7 +1047,7 @@ void config_parse_load_modules(void) + + memset(&mod_set, 0, sizeof(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 e6c945e..06ad6c5 100644 +--- a/src/dict/main.c ++++ b/src/dict/main.c +@@ -62,7 +62,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 df12284..19c18da 100644 +--- a/src/doveadm/doveadm-settings.c ++++ b/src/doveadm/doveadm-settings.c +@@ -81,7 +81,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 b50fbe0..ace3aff 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 a0659ab..dba3729 100644 +--- a/src/lib-ssl-iostream/iostream-ssl.c ++++ b/src/lib-ssl-iostream/iostream-ssl.c +@@ -34,7 +34,7 @@ static 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 e2233bf..bbf981e 100644 +--- a/src/lib-storage/mail-storage-settings.c ++++ b/src/lib-storage/mail-storage-settings.c +@@ -274,7 +274,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): ", + diff --git a/nixpkgs/pkgs/servers/mail/dovecot/default.nix b/nixpkgs/pkgs/servers/mail/dovecot/default.nix new file mode 100644 index 000000000000..6c6ddf651e62 --- /dev/null +++ b/nixpkgs/pkgs/servers/mail/dovecot/default.nix @@ -0,0 +1,75 @@ +{ stdenv, lib, fetchurl, perl, pkgconfig, systemd, openssl +, bzip2, zlib, lz4, inotify-tools, pam, libcap +, clucene_core_2, icu, openldap, libsodium, libstemmer, cyrus_sasl +, nixosTests +# Auth modules +, withMySQL ? false, mysql +, withPgSQL ? false, postgresql +, withSQLite ? true, sqlite +}: + +stdenv.mkDerivation rec { + name = "dovecot-2.3.4"; + + nativeBuildInputs = [ perl pkgconfig ]; + buildInputs = + [ openssl bzip2 zlib lz4 clucene_core_2 icu openldap libsodium libstemmer cyrus_sasl.dev ] + ++ lib.optionals (stdenv.isLinux) [ systemd pam libcap inotify-tools ] + ++ lib.optional withMySQL mysql.connector-c + ++ lib.optional withPgSQL postgresql + ++ lib.optional withSQLite sqlite; + + src = fetchurl { + url = "https://dovecot.org/releases/2.3/${name}.tar.gz"; + sha256 = "01ggzf7b3jpl89mjiqr7xbpbs181g2gjf6wzg70qaqfzz3ppc6yr"; + }; + + preConfigure = '' + patchShebangs src/config/settings-get.pl + ''; + + # We need this for sysconfdir, see remark below. + installFlags = [ "DESTDIR=$(out)" ]; + + postInstall = '' + cp -r $out/$out/* $out + rm -rf $out/$(echo "$out" | cut -d "/" -f2) + ''; + + patches = [ + # 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 + ]; + + configureFlags = [ + # It will hardcode this for /var/lib/dovecot. + # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626211 + "--localstatedir=/var" + # We need this so utilities default to reading /etc/dovecot/dovecot.conf file. + "--sysconfdir=/etc" + "--with-ldap" + "--with-ssl=openssl" + "--with-zlib" + "--with-bzlib" + "--with-lz4" + "--with-ldap" + "--with-lucene" + "--with-icu" + ] ++ lib.optional (stdenv.isLinux) "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + ++ lib.optional (stdenv.isDarwin) "--enable-static" + ++ lib.optional withMySQL "--with-mysql" + ++ lib.optional withPgSQL "--with-pgsql" + ++ lib.optional withSQLite "--with-sqlite"; + + meta = { + homepage = https://dovecot.org/; + description = "Open source IMAP and POP3 email server written with security primarily in mind"; + maintainers = with stdenv.lib.maintainers; [ peti rickynils fpletz ]; + platforms = stdenv.lib.platforms.unix; + }; + passthru.tests = { + opensmtpd-interaction = nixosTests.opensmtpd; + }; +} diff --git a/nixpkgs/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix b/nixpkgs/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix new file mode 100644 index 000000000000..73d6b5d593c9 --- /dev/null +++ b/nixpkgs/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, dovecot, openssl }: + +stdenv.mkDerivation rec { + name = "dovecot-pigeonhole-${version}"; + version = "0.5.4"; + + src = fetchurl { + url = "https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-${version}.tar.gz"; + sha256 = "05l5y0gc8ycswdbl58j7kbx5gq1z7mjkazjccmgbq6h0gbk9jyal"; + }; + + buildInputs = [ dovecot openssl ]; + + preConfigure = '' + substituteInPlace src/managesieve/managesieve-settings.c --replace \ + ".executable = \"managesieve\"" \ + ".executable = \"$out/libexec/dovecot/managesieve\"" + substituteInPlace src/managesieve-login/managesieve-login-settings.c --replace \ + ".executable = \"managesieve-login\"" \ + ".executable = \"$out/libexec/dovecot/managesieve-login\"" + ''; + + configureFlags = [ + "--with-dovecot=${dovecot}/lib/dovecot" + "--without-dovecot-install-dirs" + "--with-moduledir=$(out)/lib/dovecot" + ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + homepage = http://pigeonhole.dovecot.org/; + description = "A sieve plugin for the Dovecot IMAP server"; + license = licenses.lgpl21; + maintainers = [ maintainers.rickynils ]; + platforms = platforms.unix; + }; +} |