dovecot: enable lzma/lucene support and switch to libressl.

- lzma has been enabled by default
- lucene support is provided by the -plugin-lucene subpkg.
- switch to libressl with some patches from OpenBSD
This commit is contained in:
Juan RP 2014-08-04 19:26:22 +02:00
parent 312815c60a
commit 9d830ac67a
5 changed files with 133 additions and 11 deletions

View File

@ -0,0 +1 @@
dovecot

View File

@ -0,0 +1,33 @@
$OpenBSD: patch-src_lib-ssl-iostream_iostream-openssl-context_c,v 1.1 2014/07/30 14:28:24 naddy Exp $
Check for SSL_CTRL_SET_ECDH_AUTO macro instead of OpenSSL version number.
--- src/lib-ssl-iostream/iostream-openssl-context.c.orig Tue Nov 19 15:36:30 2013
+++ src/lib-ssl-iostream/iostream-openssl-context.c Tue Jul 29 15:51:04 2014
@@ -416,7 +416,7 @@ ssl_iostream_context_set(struct ssl_iostream_context *
return 0;
}
-#if defined(HAVE_ECDH) && OPENSSL_VERSION_NUMBER < 0x10002000L
+#if defined(HAVE_ECDH) && !defined(SSL_CTRL_SET_ECDH_AUTO)
static int
ssl_proxy_ctx_get_pkey_ec_curve_name(const struct ssl_iostream_settings *set,
int *nid_r, const char **error_r)
@@ -446,7 +446,7 @@ ssl_proxy_ctx_set_crypto_params(SSL_CTX *ssl_ctx,
const struct ssl_iostream_settings *set ATTR_UNUSED,
const char **error_r ATTR_UNUSED)
{
-#if defined(HAVE_ECDH) && OPENSSL_VERSION_NUMBER < 0x10002000L
+#if defined(HAVE_ECDH) && !defined(SSL_CTRL_SET_ECDH_AUTO)
EC_KEY *ecdh;
int nid;
const char *curve_name;
@@ -459,7 +459,7 @@ ssl_proxy_ctx_set_crypto_params(SSL_CTX *ssl_ctx,
used instead of ECDHE, do not reuse the same ECDH key pair for
different sessions. This option improves forward secrecy. */
SSL_CTX_set_options(ssl_ctx, SSL_OP_SINGLE_ECDH_USE);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
+#ifdef SSL_CTRL_SET_ECDH_AUTO
/* OpenSSL >= 1.0.2 automatically handles ECDH temporary key parameter
selection. */
SSL_CTX_set_ecdh_auto(ssl_ctx, 1);

View File

@ -0,0 +1,24 @@
$OpenBSD: patch-src_lib-ssl-iostream_iostream-openssl_c,v 1.1 2014/07/30 14:28:24 naddy Exp $
Fixed compiling with SSL compression disabled.
--- src/lib-ssl-iostream/iostream-openssl.c.orig Tue Jul 29 15:35:56 2014
+++ src/lib-ssl-iostream/iostream-openssl.c Tue Jul 29 15:36:29 2014
@@ -675,7 +675,7 @@ static const char *
openssl_iostream_get_security_string(struct ssl_iostream *ssl_io)
{
const SSL_CIPHER *cipher;
-#ifdef HAVE_SSL_COMPRESSION
+#if defined(HAVE_SSL_COMPRESSION) && !defined(OPENSSL_NO_COMP)
const COMP_METHOD *comp;
#endif
const char *comp_str;
@@ -686,7 +686,7 @@ openssl_iostream_get_security_string(struct ssl_iostre
cipher = SSL_get_current_cipher(ssl_io->ssl);
bits = SSL_CIPHER_get_bits(cipher, &alg_bits);
-#ifdef HAVE_SSL_COMPRESSION
+#if defined(HAVE_SSL_COMPRESSION) && !defined(OPENSSL_NO_COMP)
comp = SSL_get_current_compression(ssl_io->ssl);
comp_str = comp == NULL ? "" :
t_strconcat(" ", SSL_COMP_get_name(comp), NULL);

View File

@ -0,0 +1,58 @@
Check for SSL_CTRL_SET_ECDH_AUTO macro instead of OpenSSL version number.
Fixed compiling with SSL compression disabled.
Based on the existing OpenBSD patch, but updated for 2.2.13.
--- src/login-common/ssl-proxy-openssl.c.orig 2014-08-04 19:00:05.463014161 +0200
+++ src/login-common/ssl-proxy-openssl.c 2014-08-04 19:02:39.069231713 +0200
@@ -125,7 +125,7 @@ static void ssl_server_context_deinit(st
static void ssl_proxy_ctx_set_crypto_params(SSL_CTX *ssl_ctx,
const struct master_service_ssl_settings *set);
-#if defined(HAVE_ECDH) && OPENSSL_VERSION_NUMBER < 0x10002000L
+#if defined(HAVE_ECDH) && !defined(SSL_CTRL_SET_ECDH_AUTO)
static int ssl_proxy_ctx_get_pkey_ec_curve_name(const struct master_service_ssl_settings *set);
#endif
@@ -769,7 +769,7 @@ const char *ssl_proxy_get_security_strin
const char *ssl_proxy_get_compression(struct ssl_proxy *proxy ATTR_UNUSED)
{
-#ifdef HAVE_SSL_COMPRESSION
+#if defined(HAVE_SSL_COMPRESSION) && !defined(OPENSSL_NO_COMP)
const COMP_METHOD *comp;
comp = SSL_get_current_compression(proxy->ssl);
@@ -1024,7 +1024,7 @@ static void
ssl_proxy_ctx_set_crypto_params(SSL_CTX *ssl_ctx,
const struct master_service_ssl_settings *set ATTR_UNUSED)
{
-#if defined(HAVE_ECDH) && OPENSSL_VERSION_NUMBER < 0x10002000L
+#if defined(HAVE_ECDH) && !defined(SSL_CTRL_SET_ECDH_AUTO)
EC_KEY *ecdh;
int nid;
const char *curve_name;
@@ -1032,12 +1032,12 @@ ssl_proxy_ctx_set_crypto_params(SSL_CTX
if (SSL_CTX_need_tmp_RSA(ssl_ctx))
SSL_CTX_set_tmp_rsa_callback(ssl_ctx, ssl_gen_rsa_key);
SSL_CTX_set_tmp_dh_callback(ssl_ctx, ssl_tmp_dh_callback);
-#ifdef HAVE_ECDH
+#if defined(HAVE_ECDH) && !defined(SSL_CTRL_SET_ECDH_AUTO)
/* In the non-recommended situation where ECDH cipher suites are being
used instead of ECDHE, do not reuse the same ECDH key pair for
different sessions. This option improves forward secrecy. */
SSL_CTX_set_options(ssl_ctx, SSL_OP_SINGLE_ECDH_USE);
-#if OPENSSL_VERSION_NUMBER >= 0x10002000L
+#ifdef SSL_CTRL_SET_ECDH_AUTO
/* OpenSSL >= 1.0.2 automatically handles ECDH temporary key parameter
selection. */
SSL_CTX_set_ecdh_auto(ssl_ctx, 1);
@@ -1152,7 +1152,7 @@ ssl_proxy_ctx_use_key(SSL_CTX *ctx,
EVP_PKEY_free(pkey);
}
-#if defined(HAVE_ECDH) && OPENSSL_VERSION_NUMBER < 0x10002000L
+#if defined(HAVE_ECDH) && !defined(SSL_CTRL_SET_ECDH_AUTO)
static int
ssl_proxy_ctx_get_pkey_ec_curve_name(const struct master_service_ssl_settings *set)
{

View File

@ -1,13 +1,14 @@
# Template file for 'dovecot' # Template file for 'dovecot'
pkgname=dovecot pkgname=dovecot
version=2.2.13 version=2.2.13
revision=3 revision=4
build_style=gnu-configure build_style=gnu-configure
configure_args="--with-moduledir=/usr/lib/dovecot/modules --with-sql=plugin configure_args="--with-moduledir=/usr/lib/dovecot/modules --with-sql=plugin
--disable-static --with-nss --with-pam --with-mysql --with-pgsql --disable-static --with-nss --with-pam --with-mysql --with-pgsql
--with-sqlite --with-ssl=openssl --with-ssldir=/etc/dovecot/ssl --with-sqlite --with-ssl=openssl --with-ssldir=/etc/dovecot/ssl
--with-gssapi --with-ldap=plugin --with-zlib --with-bzlib --with-libcap --with-gssapi --with-ldap=plugin --with-zlib --with-bzlib --with-lzma
--with-solr --with-docs --with-systemdsystemunitdir=/usr/lib/systemd/system" --with-libcap --with-solr --with-lucene --with-docs
--with-systemdsystemunitdir=/usr/lib/systemd/system"
short_desc="IMAP and POP3 server written with security primarily in mind" short_desc="IMAP and POP3 server written with security primarily in mind"
maintainer="Juan RP <xtraeme@gmail.com>" maintainer="Juan RP <xtraeme@gmail.com>"
license="LGPL-2.1" license="LGPL-2.1"
@ -32,10 +33,11 @@ if [ "$CROSS_BUILD" ]; then
lib_cv_va_val_copy=yes" lib_cv_va_val_copy=yes"
fi fi
lib32disabled=yes makedepends="
makedepends="zlib-devel bzip2-devel openssl-devel mit-krb5-devel zlib-devel bzip2-devel liblzma-devel libressl-devel mit-krb5-devel
libmysqlclient-devel>=5.5.27 postgresql-libs-devel sqlite-devel libmysqlclient-devel>=5.5.27 postgresql-libs-devel sqlite-devel
libldap-devel libcap-devel pam-devel libcurl-devel expat-devel" libldap-devel libcap-devel pam-devel libcurl-devel expat-devel
clucene-devel>=2.3.3.4_4"
# For SSL support. # For SSL support.
depends="openssl>=0" depends="openssl>=0"
systemd_services="dovecot.service true" systemd_services="dovecot.service true"
@ -66,7 +68,6 @@ conf_files="
/etc/dovecot/conf.d/auth-vpopmail.conf.ext /etc/dovecot/conf.d/auth-vpopmail.conf.ext
/etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf
/etc/ssl/dovecot-openssl.cnf" /etc/ssl/dovecot-openssl.cnf"
lib32disabled=yes
post_install() { post_install() {
local econfdir=usr/share/doc/dovecot/example-config local econfdir=usr/share/doc/dovecot/example-config
@ -89,7 +90,6 @@ post_install() {
} }
dovecot-plugin-ldap_package() { dovecot-plugin-ldap_package() {
lib32disabled=yes
depends="dovecot>=${version}" depends="dovecot>=${version}"
short_desc+=" - LDAP plugin" short_desc+=" - LDAP plugin"
conf_files="/etc/dovecot/conf.d/auth-ldap.conf.ext" conf_files="/etc/dovecot/conf.d/auth-ldap.conf.ext"
@ -100,8 +100,16 @@ dovecot-plugin-ldap_package() {
} }
} }
dovecot-plugin-lucene_package() {
depends="dovecot>=${version}"
short_desc+=" - Full Text Search plugin (Lucene)"
pkg_install() {
vmove usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so
vmove usr/lib/dovecot/modules/lib21_fts_lucene_plugin.so
}
}
dovecot-plugin-mysql_package() { dovecot-plugin-mysql_package() {
lib32disabled=yes
depends="dovecot>=${version}" depends="dovecot>=${version}"
short_desc+=" - MySQL plugin" short_desc+=" - MySQL plugin"
pkg_install() { pkg_install() {
@ -112,7 +120,6 @@ dovecot-plugin-mysql_package() {
} }
dovecot-plugin-pgsql_package() { dovecot-plugin-pgsql_package() {
lib32disabled=yes
depends="dovecot>=${version}" depends="dovecot>=${version}"
short_desc+=" - PostgreSQL plugin" short_desc+=" - PostgreSQL plugin"
pkg_install() { pkg_install() {
@ -123,7 +130,6 @@ dovecot-plugin-pgsql_package() {
} }
dovecot-plugin-sqlite_package() { dovecot-plugin-sqlite_package() {
lib32disabled=yes
depends="dovecot>=${version}" depends="dovecot>=${version}"
short_desc+=" - SQLite plugin" short_desc+=" - SQLite plugin"
pkg_install() { pkg_install() {