diff options
author | Craig Andrews <candrews@gentoo.org> | 2018-10-24 16:57:27 -0400 |
---|---|---|
committer | Craig Andrews <candrews@gentoo.org> | 2018-10-25 09:39:26 -0400 |
commit | bb8b6bb78adfa6f50f37a09b7fa8b16c5fd85471 (patch) | |
tree | b6223e380c0de34c01cbf84989b74c29fdb68ce1 /mail-filter | |
parent | media-video/rtmpdump: OpenSSL 1.1 fix, swf verification type 2 (diff) | |
download | gentoo-bb8b6bb78adfa6f50f37a09b7fa8b16c5fd85471.tar.gz gentoo-bb8b6bb78adfa6f50f37a09b7fa8b16c5fd85471.tar.bz2 gentoo-bb8b6bb78adfa6f50f37a09b7fa8b16c5fd85471.zip |
mail-filter/opendkim: Fix building with OpenSSL 1.1.1
Closes: https://bugs.gentoo.org/669512
Signed-off-by: Craig Andrews <candrews@gentoo.org>
Package-Manager: Portage-2.3.51, Repoman-2.3.11
Diffstat (limited to 'mail-filter')
-rw-r--r-- | mail-filter/opendkim/files/opendkim-2.10.3-openssl-1.1.1.patch | 170 | ||||
-rw-r--r-- | mail-filter/opendkim/opendkim-2.10.3-r4.ebuild | 205 |
2 files changed, 375 insertions, 0 deletions
diff --git a/mail-filter/opendkim/files/opendkim-2.10.3-openssl-1.1.1.patch b/mail-filter/opendkim/files/opendkim-2.10.3-openssl-1.1.1.patch new file mode 100644 index 000000000000..825d7753aca2 --- /dev/null +++ b/mail-filter/opendkim/files/opendkim-2.10.3-openssl-1.1.1.patch @@ -0,0 +1,170 @@ +From FreeBSD: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=223568 +--- a/configure.ac 2015-05-12 18:43:09 UTC ++++ b/configure.ac +@@ -860,26 +860,28 @@ then + AC_SEARCH_LIBS([ERR_peek_error], [crypto], , + AC_MSG_ERROR([libcrypto not found])) + +- AC_SEARCH_LIBS([SSL_library_init], [ssl], , +- [ +- if test x"$enable_shared" = x"yes" +- then +- AC_MSG_ERROR([Cannot build shared opendkim +- against static openssl libraries. +- Configure with --disable-shared +- to get this working or obtain a +- shared libssl library for +- opendkim to use.]) +- fi + +- # avoid caching issue - last result of SSL_library_init +- # shouldn't be cached for this next check +- unset ac_cv_search_SSL_library_init +- LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS -ldl" +- AC_SEARCH_LIBS([SSL_library_init], [ssl], , +- AC_MSG_ERROR([libssl not found]), [-ldl]) +- ] +- ) ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([[#include <openssl/ssl.h>]], ++ [[SSL_library_init();]])], ++ [od_have_ossl="yes";], ++ [od_have_ossl="no";]) ++ if test x"$od_have_ossl" = x"no" ++ then ++ if test x"$enable_shared" = x"yes" ++ then ++ AC_MSG_ERROR([Cannot build shared opendkim ++ against static openssl libraries. ++ Configure with --disable-shared ++ to get this working or obtain a ++ shared libssl library for ++ opendkim to use.]) ++ fi ++ ++ LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS -ldl" ++ AC_SEARCH_LIBS([SSL_library_init], [ssl], , ++ AC_MSG_ERROR([libssl not found]), [-ldl]) ++ fi + + AC_CHECK_DECL([SHA256_DIGEST_LENGTH], + AC_DEFINE([HAVE_SHA256], 1, +--- a/libopendkim/tests/Makefile.in 2015-05-12 18:43:48 UTC ++++ b/libopendkim/tests/Makefile.in +@@ -1108,8 +1108,10 @@ am__nobase_list = $(am__nobase_strip_setup); \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' + am__base_list = \ +- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ +- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\ ++/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\ ++/ /g' + am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ +@@ -4131,16 +4133,19 @@ uninstall-am: uninstall-dist_docDATA + @LCOV_TRUE@description.txt: $(check_PROGRAMS) $(check_SCRIPTS) + @LCOV_TRUE@ rm -f $@ + @LCOV_TRUE@ for i in $(check_PROGRAMS); do \ +-@LCOV_TRUE@ testname=$${i/t-}; \ +-@LCOV_TRUE@ testname=$${testname//-/_}; \ ++@LCOV_TRUE@ testname=$${i#t-}; \ ++@LCOV_TRUE@ testname=$$(echo $${testname} | sed -e 's/-/_/g'); \ + @LCOV_TRUE@ fgrep '***' $$i.c | tail -n 1 | \ +-@LCOV_TRUE@ (echo $${testname} ; sed -e 's/[^*]*\*\*\*\(.*\)\\n.*/\t\1\n/g' ) >> $@; \ ++@LCOV_TRUE@ (echo $${testname} ; sed -e 's/[^*]*\*\*\*\(.*\)\\ ++@LCOV_TRUE@.*/ \1\ ++@LCOV_TRUE@/g' ) >> $@; \ + @LCOV_TRUE@ done + @LCOV_TRUE@ for i in $(check_SCRIPTS); do \ +-@LCOV_TRUE@ testname=$${i/t-}; \ +-@LCOV_TRUE@ testname=$${testname//-/_}; \ ++@LCOV_TRUE@ testname=$${i#t-}; \ ++@LCOV_TRUE@ testname=$$(echo $${testname} | sed -e 's/-/_/g'); \ + @LCOV_TRUE@ grep '^#' $$i | tail -n 1 | \ +-@LCOV_TRUE@ (echo $${testname} ; sed -e 's/^# \(.*\)/\t\1\n/g' ) >> $@; \ ++@LCOV_TRUE@ (echo $${testname} ; sed -e 's/^# \(.*\)/ \1\ ++@LCOV_TRUE@/g' ) >> $@; \ + @LCOV_TRUE@ done + + @LCOV_TRUE@description.html: description.txt +--- a/libopendkim/dkim-canon.c 2015-05-11 03:56:13 UTC ++++ b/libopendkim/dkim-canon.c +@@ -388,7 +388,7 @@ dkim_canon_header_string(struct dkim_dstring *dstr, dk + } + + /* skip all spaces before first word */ +- while (*p != '\0' && DKIM_ISWSP(*p)) ++ while (*p != '\0' && DKIM_ISLWSP(*p)) + p++; + + space = FALSE; /* just saw a space */ +--- a/opendkim/tests/Makefile.in 2015-05-12 18:43:49 UTC ++++ b/opendkim/tests/Makefile.in +@@ -139,8 +139,10 @@ am__nobase_list = $(am__nobase_strip_setup); \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' + am__base_list = \ +- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ +- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' ++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\ ++/ /g' | \ ++ sed '$$!N;$$!N;$$!N;$$!N;s/\ ++/ /g' + am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ +@@ -1298,14 +1300,16 @@ uninstall-am: uninstall-dist_docDATA + @LCOV_TRUE@description.txt: $(check_SCRIPTS) + @LCOV_TRUE@ rm -f $@ + @LCOV_TRUE@ for test in $? ; do \ +-@LCOV_TRUE@ testname=$${test/t-}; \ +-@LCOV_TRUE@ testname=$${testname//-/_}; \ ++@LCOV_TRUE@ testname=$${test#t-}; \ ++@LCOV_TRUE@ testname=$$(echo $${testname} | sed -e 's/-/_/g'); \ + @LCOV_TRUE@ grep ^# $$test | tail -n 1 | \ +-@LCOV_TRUE@ sed -e "s/^#\(.*\)/$${testname}\n\t\1\n/g" >> $@; \ ++@LCOV_TRUE@ sed -e "s/^#\(.*\)/$${testname}\ ++@LCOV_TRUE@ \1\ ++@LCOV_TRUE@/g" >> $@; \ + @LCOV_TRUE@ done + + @LCOV_TRUE@description.html: description.txt +-@LCOV_TRUE@ gendesc --output $@ $< ++@LCOV_TRUE@ gendesc --output $@ $? + + @LCOV_TRUE@maintainer-clean-local: + @LCOV_TRUE@ -rm -rf lcov/[^C]* +--- a/opendkim/opendkim-crypto.c 2013-02-25 21:02:41 UTC ++++ b/opendkim/opendkim-crypto.c +@@ -222,7 +222,11 @@ dkimf_crypto_free_id(void *ptr) + { + assert(pthread_setspecific(id_key, ptr) == 0); + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ OPENSSL_thread_stop(); ++#else + ERR_remove_state(0); ++#endif + + free(ptr); + +@@ -392,11 +396,15 @@ dkimf_crypto_free(void) + { + if (crypto_init_done) + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000 ++ OPENSSL_thread_stop(); ++#else + CRYPTO_cleanup_all_ex_data(); + CONF_modules_free(); + EVP_cleanup(); + ERR_free_strings(); + ERR_remove_state(0); ++#endif + + if (nmutexes > 0) + { + diff --git a/mail-filter/opendkim/opendkim-2.10.3-r4.ebuild b/mail-filter/opendkim/opendkim-2.10.3-r4.ebuild new file mode 100644 index 000000000000..6c1b66b18e1b --- /dev/null +++ b/mail-filter/opendkim/opendkim-2.10.3-r4.ebuild @@ -0,0 +1,205 @@ +# Copyright 1999-2018 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools db-use eutils systemd user + +# for betas +#MY_P=${P/_b/.B} +#S=${WORKDIR}/${PN}-2.8.0 +#SRC_URI="mirror://sourceforge/opendkim/${MY_P}.tar.gz" + +DESCRIPTION="A milter-based application to provide DKIM signing and verification" +HOMEPAGE="http://opendkim.org" +SRC_URI="mirror://sourceforge/opendkim/${P}.tar.gz" + +LICENSE="Sendmail-Open-Source BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+berkdb gnutls ldap libressl lmdb lua memcached opendbx poll sasl selinux +ssl static-libs unbound" + +DEPEND="|| ( mail-filter/libmilter mail-mta/sendmail ) + dev-libs/libbsd + ssl? ( + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + ) + berkdb? ( >=sys-libs/db-3.2:* ) + opendbx? ( >=dev-db/opendbx-1.4.0 ) + lua? ( dev-lang/lua:* ) + ldap? ( net-nds/openldap ) + lmdb? ( dev-db/lmdb ) + memcached? ( dev-libs/libmemcached ) + sasl? ( dev-libs/cyrus-sasl ) + unbound? ( >=net-dns/unbound-1.4.1:= net-dns/dnssec-root ) + !unbound? ( net-libs/ldns ) + gnutls? ( >=net-libs/gnutls-3.3 )" + +RDEPEND="${DEPEND} + sys-process/psmisc + selinux? ( sec-policy/selinux-dkim ) +" + +REQUIRED_USE="sasl? ( ldap )" + +PATCHES=( + "${FILESDIR}/${P}-gnutls-3.4.patch" + "${FILESDIR}/${P}-openssl-1.1.1.patch" +) + +pkg_setup() { + enewgroup milter + # mail-milter/spamass-milter creates milter user with this home directory + # For consistency reasons, milter user must be created here with this home directory + # even though this package doesn't need a home directory for this user (#280571) + enewuser milter -1 -1 /var/lib/milter milter +} + +src_prepare() { + default + + sed -i -e 's:/var/db/dkim:/etc/opendkim:g' \ + -e 's:/var/db/opendkim:/var/lib/opendkim:g' \ + -e 's:/etc/mail:/etc/opendkim:g' \ + -e 's:mailnull:milter:g' \ + -e 's:^#[[:space:]]*PidFile.*:PidFile /run/opendkim/opendkim.pid:' \ + opendkim/opendkim.conf.sample opendkim/opendkim.conf.simple.in \ + stats/opendkim-reportstats{,.in} || die + + sed -i -e 's:dist_doc_DATA:dist_html_DATA:' libopendkim/docs/Makefile.am \ + || die + + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/tmp":' opendkim/tests/*.lua + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/proc/self/cwd":' opendkim/tests/*.lua + + eautoreconf +} + +src_configure() { + local myconf=() + if use berkdb ; then + myconf+=( + $(db_includedir) + --with-db-incdir=${myconf#-I} + --enable-popauth + --enable-query_cache + --enable-stats + ) + fi + if use unbound; then + myconf+=( --with-unbound ) + else + myconf+=( --with-ldns ) + fi + if use ldap; then + myconf+=( $(use_with sasl) ) + fi + econf \ + $(use_with berkdb db) \ + $(use_with opendbx odbx) \ + $(use_with lua) \ + $(use_enable lua rbl) \ + $(use_with ldap openldap) \ + $(use_with lmdb) \ + $(use_enable poll) \ + $(use_enable static-libs static) \ + $(use_with gnutls) \ + $(use_with memcached libmemcached) \ + "${myconf[@]}" \ + --enable-filter \ + --enable-atps \ + --enable-identity_header \ + --enable-rate_limit \ + --enable-resign \ + --enable-replace_rules \ + --enable-default_sender \ + --enable-sender_macro \ + --enable-vbr \ + --disable-live-testing + #--with-test-socket=/tmp/opendkim-$(echo ${RANDOM})-S + #--disable-rpath +} + +src_install() { + default + prune_libtool_files + + dosbin stats/opendkim-reportstats + + newinitd "${FILESDIR}/opendkim.init.r3" opendkim + systemd_newunit "${FILESDIR}/opendkim-r1.service" opendkim.service + + dodir /etc/opendkim /var/lib/opendkim + fowners milter:milter /var/lib/opendkim + + # default configuration + if [ ! -f "${ROOT}"/etc/opendkim/opendkim.conf ]; then + grep ^[^#] "${S}"/opendkim/opendkim.conf.simple \ + > "${D}"/etc/opendkim/opendkim.conf + if use unbound; then + echo TrustAnchorFile /etc/dnssec/root-anchors.txt >> "${D}"/etc/opendkim/opendkim.conf + fi + echo UserID milter >> "${D}"/etc/opendkim/opendkim.conf + if use berkdb; then + echo Statistics /var/lib/opendkim/stats.dat >> \ + "${D}"/etc/opendkim/opendkim.conf + fi + fi +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSION} ]]; then + elog "If you want to sign your mail messages and need some help" + elog "please run:" + elog " emerge --config ${CATEGORY}/${PN}" + elog "It will help you create your key and give you hints on how" + elog "to configure your DNS and MTA." + + ewarn "Make sure your MTA has r/w access to the socket file." + ewarn "This can be done either by setting UMask to 002 and adding MTA's user" + ewarn "to milter group or you can simply set UMask to 000." + fi +} + +pkg_config() { + local selector keysize pubkey + + read -p "Enter the selector name (default ${HOSTNAME}): " selector + [[ -n "${selector}" ]] || selector=${HOSTNAME} + if [[ -z "${selector}" ]]; then + eerror "Oddly enough, you don't have a HOSTNAME." + return 1 + fi + if [[ -f "${ROOT}"etc/opendkim/${selector}.private ]]; then + ewarn "The private key for this selector already exists." + else + keysize=1024 + # generate the private and public keys + opendkim-genkey -b ${keysize} -D "${ROOT}"etc/opendkim/ \ + -s ${selector} -d '(your domain)' && \ + chown milter:milter \ + "${ROOT}"etc/opendkim/"${selector}".private || \ + { eerror "Failed to create private and public keys." ; return 1; } + chmod go-r "${ROOT}"etc/opendkim/"${selector}".private + fi + + # opendkim selector configuration + echo + einfo "Make sure you have the following settings in your /etc/opendkim/opendkim.conf:" + einfo " Keyfile /etc/opendkim/${selector}.private" + einfo " Selector ${selector}" + + # MTA configuration + echo + einfo "If you are using Postfix, add following lines to your main.cf:" + einfo " smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " and read http://www.postfix.org/MILTER_README.html" + + # DNS configuration + einfo "After you configured your MTA, publish your key by adding this TXT record to your domain:" + cat "${ROOT}"etc/opendkim/${selector}.txt + einfo "t=y signifies you only test the DKIM on your domain. See following page for the complete list of tags:" + einfo " http://www.dkim.org/specs/rfc4871-dkimbase.html#key-text" +} |