mail-mta/netqmail: fix SMTPUTF8 mode
authorRolf Eike Beer <eike@sf-mail.de>
Tue, 29 Oct 2019 22:09:12 +0000 (23:09 +0100)
committerJoonas Niilola <juippis@gentoo.org>
Fri, 1 Nov 2019 13:59:14 +0000 (15:59 +0200)
This fix was provided by the original patch author, but he sadly did not provide
a new patch.

Closes: https://bugs.gentoo.org/611142
Signed-off-by: Rolf Eike Beer <eike@sf-mail.de>
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
mail-mta/netqmail/files/qmail-smtputf8-crlf-fix.patch [new file with mode: 0644]
mail-mta/netqmail/netqmail-1.06-r10.ebuild [new file with mode: 0644]

diff --git a/mail-mta/netqmail/files/qmail-smtputf8-crlf-fix.patch b/mail-mta/netqmail/files/qmail-smtputf8-crlf-fix.patch
new file mode 100644 (file)
index 0000000..cde34e0
--- /dev/null
@@ -0,0 +1,12 @@
+https://bugs.gentoo.org/611142
+
+--- a/qmail-remote.c   2019-10-29 22:46:27.076000000 +0100
++++ b/qmail-remote.c   2019-10-29 22:48:18.868000000 +0100
+@@ -556,6 +556,7 @@ void checkutf8message()
+     if (r == 0) break;
+     if (r == -1) temp_read();
++    if (ch == '\n' && !stralloc_cats(&firstpart,"\r")) temp_nomem();
+     if (!stralloc_append(&firstpart,&ch)) temp_nomem();
+     if (ch == '\r')
diff --git a/mail-mta/netqmail/netqmail-1.06-r10.ebuild b/mail-mta/netqmail/netqmail-1.06-r10.ebuild
new file mode 100644 (file)
index 0000000..315e297
--- /dev/null
@@ -0,0 +1,196 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+GENQMAIL_PV=20191010
+QMAIL_SPP_PV=0.42
+
+QMAIL_TLS_PV=20190114
+QMAIL_TLS_F=${PN}-1.05-tls-smtpauth-${QMAIL_TLS_PV}.patch
+QMAIL_TLS_CVE=vu555316.patch
+
+QMAIL_BIGTODO_PV=103
+QMAIL_BIGTODO_F=big-todo.${QMAIL_BIGTODO_PV}.patch
+
+QMAIL_LARGE_DNS='qmail-103.patch'
+
+QMAIL_SMTPUTF8='qmail-smtputf8.patch'
+
+inherit qmail
+
+DESCRIPTION="qmail -- a secure, reliable, efficient, simple message transfer agent"
+HOMEPAGE="
+       http://netqmail.org
+       https://cr.yp.to/qmail.html
+       http://qmail.org
+"
+SRC_URI="mirror://qmail/${P}.tar.gz
+       https://github.com/DerDakon/genqmail/releases/download/genqmail-${GENQMAIL_PV}/${GENQMAIL_F}
+       https://www.ckdhr.com/ckd/${QMAIL_LARGE_DNS}
+       !vanilla? (
+               highvolume? ( mirror://qmail/${QMAIL_BIGTODO_F} )
+               qmail-spp? ( mirror://sourceforge/qmail-spp/${QMAIL_SPP_F} )
+               ssl? (
+                       https://mirror.alexh.name/qmail/netqmail/${QMAIL_TLS_F}
+                       http://inoa.net/qmail-tls/${QMAIL_TLS_CVE}
+                       https://arnt.gulbrandsen.priv.no/qmail/qmail-smtputf8.patch
+               )
+       )
+"
+
+LICENSE="public-domain"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~x86"
+IUSE="authcram gencertdaily highvolume libressl qmail-spp ssl vanilla"
+REQUIRED_USE="vanilla? ( !ssl !qmail-spp !highvolume )"
+RESTRICT="test"
+
+DEPEND="
+       acct-group/nofiles
+       acct-group/qmail
+       acct-user/alias
+       acct-user/qmaild
+       acct-user/qmaill
+       acct-user/qmailp
+       acct-user/qmailq
+       acct-user/qmailr
+       acct-user/qmails
+       net-dns/libidn2
+       net-mail/queue-repair
+       sys-apps/gentoo-functions
+       sys-apps/groff
+       ssl? (
+               !libressl? ( >=dev-libs/openssl-1.1:0= )
+               libressl? ( dev-libs/libressl:= )
+       )
+"
+RDEPEND="${DEPEND}
+       sys-apps/ucspi-tcp
+       virtual/checkpassword
+       virtual/daemontools
+       authcram? ( >=net-mail/cmd5checkpw-0.30 )
+       ssl? ( sys-apps/ucspi-ssl )
+       !mail-mta/courier
+       !mail-mta/esmtp
+       !mail-mta/exim
+       !mail-mta/mini-qmail
+       !mail-mta/msmtp[mta]
+       !mail-mta/nullmailer
+       !mail-mta/opensmtpd
+       !mail-mta/postfix
+       !mail-mta/qmail-ldap
+       !mail-mta/sendmail
+       !mail-mta/ssmtp[mta]
+"
+
+pkg_setup() {
+       if [[ -n "${QMAIL_PATCH_DIR}" ]]; then
+               eerror
+               eerror "The QMAIL_PATCH_DIR variable for custom patches"
+               eerror "has been removed from ${PN}. If you need custom patches"
+               eerror "see 'user patches' in the portage manual."
+               eerror
+               die "QMAIL_PATCH_DIR is not supported anymore"
+       fi
+}
+
+src_unpack() {
+       genqmail_src_unpack
+       use qmail-spp && qmail_spp_src_unpack
+
+       unpack ${P}.tar.gz
+}
+
+PATCHES=(
+       "${FILESDIR}/${PV}-exit.patch"
+       "${FILESDIR}/${PV}-readwrite.patch"
+       "${DISTDIR}/${QMAIL_LARGE_DNS}"
+       "${FILESDIR}/${PV}-fbsd-utmpx.patch"
+       "${FILESDIR}/${P}-ipme-multiple.patch"
+)
+
+src_prepare() {
+       if ! use vanilla; then
+               if use ssl; then
+                       # This patch contains relative paths and needs to be cleaned up.
+                       sed 's~^--- \.\./\.\./~--- ~g' \
+                               < "${DISTDIR}"/${QMAIL_TLS_F} \
+                               > "${T}"/${QMAIL_TLS_F} || die
+                       PATCHES+=( "${T}/${QMAIL_TLS_F}"
+                               "${DISTDIR}/${QMAIL_TLS_CVE}"
+                               "${FILESDIR}/qmail-smtputf8.patch"
+                               "${FILESDIR}/qmail-smtputf8-crlf-fix.patch"
+                       )
+               fi
+               if use highvolume; then
+                       PATCHES+=( "${DISTDIR}/${QMAIL_BIGTODO_F}" )
+               fi
+
+               if use qmail-spp; then
+                       if use ssl; then
+                               SPP_PATCH="${QMAIL_SPP_S}/qmail-spp-smtpauth-tls-20060105.diff"
+                       else
+                               SPP_PATCH="${QMAIL_SPP_S}/netqmail-spp.diff"
+                       fi
+                       # make the patch work with "-p1"
+                       sed -e 's#^--- \([Mq]\)#--- a/\1#' -e 's#^+++ \([Mq]\)#+++ b/\1#' -i ${SPP_PATCH} || die
+
+                       PATCHES+=( "${SPP_PATCH}" )
+               fi
+       fi
+
+       default
+
+       qmail_src_postunpack
+
+       # Fix bug #33818 but for netqmail (Bug 137015)
+       if ! use authcram; then
+               einfo "Disabled CRAM_MD5 support"
+               sed -e 's,^#define CRAM_MD5$,/*&*/,' -i "${S}"/qmail-smtpd.c || die
+       else
+               einfo "Enabled CRAM_MD5 support"
+       fi
+
+       ht_fix_file Makefile*
+}
+
+src_compile() {
+       qmail_src_compile
+       use qmail-spp && qmail_spp_src_compile
+}
+
+src_install() {
+       qmail_src_install
+}
+
+pkg_postinst() {
+       qmail_queue_setup
+       qmail_rootmail_fixup
+       qmail_tcprules_build
+
+       qmail_config_notice
+       qmail_supervise_config_notice
+       elog
+       elog "If you are looking for documentation, check those links:"
+       elog "https://wiki.gentoo.org/wiki/Virtual_mail_hosting_with_qmail"
+       elog "  -- qmail/vpopmail Virtual Mail Hosting System Guide"
+       elog "http://www.lifewithqmail.com/"
+       elog "  -- Life with qmail"
+       elog
+}
+
+pkg_preinst() {
+       qmail_tcprules_fixup
+}
+
+pkg_config() {
+       # avoid some weird locale problems
+       export LC_ALL=C
+
+       qmail_config_fast
+       qmail_tcprules_config
+       qmail_tcprules_build
+
+       use ssl && qmail_ssl_generate
+}