commit: c451ddd99efb034d745ddb27ab54d34d6ccfb737 Author: Eray Aslan <eras <AT> gentoo <DOT> org> AuthorDate: Thu May 8 13:40:52 2025 +0000 Commit: Eray Aslan <eras <AT> gentoo <DOT> org> CommitDate: Thu May 8 13:40:52 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c451ddd9
net-mail/dovecot: add 2.4.1 Closes: https://bugs.gentoo.org/954404 Closes: https://bugs.gentoo.org/942896 Closes: https://bugs.gentoo.org/934548 Closes: https://bugs.gentoo.org/929133 Closes: https://bugs.gentoo.org/905406 Closes: https://bugs.gentoo.org/877367 Closes: https://bugs.gentoo.org/802864 Signed-off-by: Eray Aslan <eras <AT> gentoo.org> net-mail/dovecot/Manifest | 2 + net-mail/dovecot/dovecot-2.4.1.ebuild | 244 +++++++++++++++++++++ net-mail/dovecot/files/50-misc.conf | 109 +++++++++ .../files/dovecot-2.4.1-gssapi-regression.patch | 14 ++ .../files/dovecot-autoconf-lua-version-v3.patch | 18 ++ net-mail/dovecot/metadata.xml | 1 + 6 files changed, 388 insertions(+) diff --git a/net-mail/dovecot/Manifest b/net-mail/dovecot/Manifest index e22ced3458cc..d91527ef557a 100644 --- a/net-mail/dovecot/Manifest +++ b/net-mail/dovecot/Manifest @@ -1,2 +1,4 @@ DIST dovecot-2.3-pigeonhole-0.5.21.1.tar.gz 1956404 BLAKE2B ad0ea5c2c181aa9cdf12a7b58141a9812cad11e6ead4d4f38366e13589a84135db1998da179192a6e66a53240647906d96bb330982e7f2f204ba8c402f14cbbd SHA512 7387b417611599fe70d1a83d3b408321e66f5a883bf78a9d55c7496b1a17220677daebaefde2061e0d7064fe07c410ecfc64662878bb253ddcd9e128dd83fbaa DIST dovecot-2.3.21.1.tar.gz 7842044 BLAKE2B 3f4238a2f6a73bce1ed37d0def7dc2e61823173836879ed8b4ef5806b4403300335d551215fc4fb2ee8b4106276f84d16b24c2be53148b92da3f946a3b904e46 SHA512 9de6ce3a579ef2040248b692874a6d64a732bb735a9cee3144604927cad49690c4b0e29f7ecf3af23190d56f30956d955d13acd5d352534df62fbdfde4b60f9f +DIST dovecot-2.4.1.tar.gz 6288223 BLAKE2B 4e0864984682e3b8a7e0cfb91794d7b8609fa1f33323443921a10abd286e58aa9e1e07807ddaf55d80e7994c6490e11d5f2543235c9a538cca2c8f4a268ea4f1 SHA512 4915e9282898a4bce4dc3c9781f9aa849e8a2d5bb89dffc2222b417560eaa0135d66342ef342098a86dd5e9b4e76d41145381b7264144411cf45a6f88ca36698 +DIST dovecot-pigeonhole-2.4.1.tar.gz 2014526 BLAKE2B 29b395065bbc8bb535ff15ba84238db4bb5494662814208eb03d1104d16914e9954fbec6bd406f2f3d1d267177694c47defb69d9b04565916d8b2dc52c89cde8 SHA512 47b9cc62b13d710123389c47d13c104e70b815d683dc6b957e86b57b2f175101d07f462d0fdb0488d6dcdcfbbc137c926825ba9a0d798551576aa7f3c9082100 diff --git a/net-mail/dovecot/dovecot-2.4.1.ebuild b/net-mail/dovecot/dovecot-2.4.1.ebuild new file mode 100644 index 000000000000..0d6f35dd653f --- /dev/null +++ b/net-mail/dovecot/dovecot-2.4.1.ebuild @@ -0,0 +1,244 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +LUA_COMPAT=( lua5-1 lua5-{3..4} ) +# do not add a ssl USE flag. ssl is mandatory +SSL_DEPS_SKIP=1 +inherit autotools flag-o-matic lua-single ssl-cert systemd toolchain-funcs + +MY_P="${P/_/.}-4" +MY_PV="${PV}-4" +major_minor="$(ver_cut 1-2)" + +DESCRIPTION="An IMAP and POP3 server written with security primarily in mind" +HOMEPAGE="https://www.dovecot.org/" +SRC_URI="https://www.dovecot.org/releases/${major_minor}/${MY_P}.tar.gz \ + -> ${P}.tar.gz + sieve? ( + https://pigeonhole.dovecot.org/releases/${major_minor}/${PN}-pigeonhole-${MY_PV}.tar.gz \ + -> ${PN}-pigeonhole-${PV}.tar.gz + ) + managesieve? ( + https://pigeonhole.dovecot.org/releases/${major_minor}/${PN}-pigeonhole-${MY_PV}.tar.gz \ + -> ${PN}-pigeonhole-${PV}.tar.gz + ) " +S="${WORKDIR}/${MY_P}" +LICENSE="LGPL-2.1 MIT" +SLOT="0/${PV}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + +IUSE_DOVECOT_AUTH_DICT="cdb kerberos ldap lua mysql pam postgres sqlite" +IUSE_DOVECOT_COMPRESS="lz4 zstd" +IUSE_DOVECOT_FTS="solr stemmer textcat xapian" +IUSE_DOVECOT_OTHER="argon2 managesieve selinux sieve static-libs suid systemd unwind" + +IUSE="${IUSE_DOVECOT_AUTH_DICT} ${IUSE_DOVECOT_COMPRESS} ${IUSE_DOVECOT_FTS} ${IUSE_DOVECOT_OTHER}" + +# ldap requirement for sieve seems to be a bug +REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} ) + sieve? ( ldap )" + +DEPEND=" + app-arch/bzip2 + dev-libs/icu:= + dev-libs/openssl:0= + net-libs/libtirpc:= + net-libs/rpcsvc-proto + sys-libs/libcap + sys-libs/zlib:= + virtual/libiconv + argon2? ( dev-libs/libsodium:= ) + cdb? ( dev-db/tinycdb ) + kerberos? ( virtual/krb5 ) + ldap? ( net-nds/openldap:= ) + lua? ( ${LUA_DEPS} ) + xapian? ( dev-libs/xapian:= ) + lz4? ( app-arch/lz4 ) + mysql? ( dev-db/mysql-connector-c:0= ) + pam? ( sys-libs/pam:= ) + postgres? ( dev-db/postgresql:* ) + selinux? ( sec-policy/selinux-dovecot ) + solr? ( net-misc/curl dev-libs/expat ) + sqlite? ( dev-db/sqlite:* ) + stemmer? ( dev-libs/snowball-stemmer:= ) + suid? ( acct-group/mail ) + systemd? ( sys-apps/systemd:= ) + textcat? ( app-text/libexttextcat ) + unwind? ( sys-libs/libunwind:= ) + zstd? ( app-arch/zstd:= ) + virtual/libcrypt:= + " + +RDEPEND=" + ${DEPEND} + acct-group/dovecot + acct-group/dovenull + acct-user/dovecot + acct-user/dovenull + net-mail/mailbase[pam?] + " + +BDEPEND="virtual/pkgconfig" + +PATCHES=( + "${FILESDIR}/${PN}-autoconf-lua-version-v3.patch" + "${FILESDIR}/${PN}-2.4.1-gssapi-regression.patch" +) + +pkg_setup() { + use lua && lua-single_pkg_setup + if use managesieve && ! use sieve; then + ewarn "managesieve USE flag selected but sieve USE flag unselected" + ewarn "sieve USE flag will be turned on" + fi +} + +src_prepare() { + default + + # rename default cert files + sed -i -e "s:ssl-cert.pem:server.pem:" \ + -e "s:ssl-key.pem:server.key:" \ + doc/dovecot.conf.in || die "sed failed" + + # bug 657108, 782631 + #elibtoolize + eautoreconf + + # Bug #727244 + append-cflags -fasynchronous-unwind-tables +} + +src_configure() { + # --disable-hardening because our toolchain already defaults to + # these bits on, and it actually regresses the default _FORTIFY_SOURCE + # level for hardened at least from 3 to 2. + # + # turn valgrind tests off. Bug #340791 + VALGRIND=no \ + LUAPC="${ELUA}" \ + systemdsystemunitdir="$(systemd_get_systemunitdir)" \ + econf \ + --with-rundir="${EPREFIX}/run/dovecot" \ + --with-statedir="${EPREFIX}/var/lib/dovecot" \ + --with-moduledir="${EPREFIX}/usr/$(get_libdir)/dovecot" \ + --disable-hardening \ + --disable-rpath \ + --with-bzlib \ + --without-libbsd \ + --with-libcap \ + --with-icu \ + --enable-experimental-mail-utf8 \ + $( use_with argon2 sodium ) \ + $( use_with cdb) \ + $( use_with kerberos gssapi ) \ + $( use_with lua ) \ + $( use_with ldap ) \ + $( use_with xapian flatcurve ) \ + $( use_with lz4 ) \ + $( use_with mysql ) \ + $( use_with pam ) \ + $( use_with postgres pgsql ) \ + $( use_with sqlite ) \ + $( use_with solr ) \ + $( use_with stemmer ) \ + $( use_with systemd ) \ + $( use_with textcat ) \ + $( use_with unwind libunwind ) \ + $( use_with zstd ) \ + $( use_enable static-libs static ) + + if use sieve || use managesieve; then + # The sieve plugin needs this file to be build to determine the plugin + # directory and the list of libraries to link to + emake dovecot-config + cd "../dovecot-pigeonhole-${MY_PV}" || die "cd failed" + econf \ + $( use_enable static-libs static ) \ + --localstatedir="${EPREFIX}/var" \ + --enable-shared \ + --disable-hardening \ + --with-dovecot="${S}" \ + $( use_with ldap ) \ + $( use_with managesieve ) + fi +} + +src_compile() { + default + if use sieve || use managesieve; then + cd "../dovecot-pigeonhole-${MY_PV}" || die "cd failed" + emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" + fi +} + +src_test() { + # bug #340791 and bug #807178 + local -x NOVALGRIND=true + + default + if use sieve || use managesieve; then + cd "../dovecot-pigeonhole-${MY_PV}" || die "cd failed" + default + fi +} + +src_install() { + default + + if use suid; then + einfo "Changing perms to allow deliver to be suided" + fowners root:mail "/usr/libexec/dovecot/dovecot-lda" + fperms 4750 "/usr/libexec/dovecot/dovecot-lda" + fi + + newinitd "${FILESDIR}"/dovecot.init-r6 dovecot + + use pam && dosym imap /etc/pam.d/dovecot + + insinto /etc/dovecot/conf.d + doins "${FILESDIR}/50-misc.conf" + + dodoc AUTHORS NEWS README.md TODO + docinto stopwords + dodoc src/lib-language/stopwords/stopwords*.txt + + if use sieve || use managesieve; then + cd "../dovecot-pigeonhole-${MY_PV}" || die "cd failed" + emake DESTDIR="${ED}" install + + newdoc README README.pigeonhole + insinto /etc/dovecot/conf.d + doins doc/example-config/conf.d/90-sieve{,-extprograms}.conf + use managesieve && doins doc/example-config/conf.d/20-managesieve.conf + fi + + rm -r "${ED}"/usr/share/dovecot + use static-libs || find "${ED}"/usr/lib* -name '*.la' -delete +} + +pkg_postinst() { + local replacing_version + for replacing_version in ${REPLACING_VERSIONS} ; do + if ver_test "${replacing_version}" -lt 2.4 ; then + # This is an upgrade which requires user review + ewarn "" + ewarn "Dovecot-2.4.x has new settings and WILL NOT work" + ewarn "unless the configuration files are updated." + ewarn "Please read the migration guide at:" + ewarn " https://doc.dovecot.org/2.4.1/installation/upgrade/2.3-to-2.4.html" + # Show this elog only once + break + fi + done + + # Let's not make a new certificate if we already have one + if ! [[ -e "${ROOT}"/etc/ssl/dovecot/server.pem && \ + -e "${ROOT}"/etc/ssl/dovecot/server.key ]]; then + einfo "Creating SSL certificate" + SSL_ORGANIZATION="${SSL_ORGANIZATION:-Dovecot IMAP Server}" + install_cert /etc/dovecot/server + fi +} diff --git a/net-mail/dovecot/files/50-misc.conf b/net-mail/dovecot/files/50-misc.conf new file mode 100644 index 000000000000..3038506c9451 --- /dev/null +++ b/net-mail/dovecot/files/50-misc.conf @@ -0,0 +1,109 @@ +## Some additional configuration options that might be useful +## Full documentation at https://doc.dovecot.org/ +# +#auth_mechanisms = plain login +# +## maildir is gentoo default +#mail_driver = maildir +## maildir directory +#mail_path = ~/.maildir +# +## Integrate with postfix +#service lmtp { +# unix_listener /var/spool/postfix/private/dovecot-lmtp { +# group = postfix +# mode = 0600 +# user = postfix +# } +#} +# +## Dovecot SASL for postfix +#service auth { +# unix_listener /var/spool/postfix/private/auth { +# mode = 0660 +# # Assuming the default Postfix user and group +# user = postfix +# group = postfix +# } +#} +# +## Sieve with LMTP +#protocol lmtp { +# # REQUIRED +# postmaster_address = postmaster@domainname +# mail_plugins { +# #quota = yes +# sieve = yes +# } +#} +# +## Login Processes +#service imap-login { +# restart_request_count = 1 +# #process_min_avail = 0 +#} +# +#service pop3-login { +# restart_request_count = 1 +#} +# +## Pass and User Databases +#passdb passwd-file { +# default_password_scheme = plain-md5 +# auth_username_format = %{user | username} +# passwd_file_path = /etc/dovecot/users +#} +#userdb passwd-file { +# auth_username_format = %{user | username} +# passwd_file_path = /etc/dovecot/users +# fields { +# uid:default = vmail +# gid:default = vmail +# home:default = /home/vmail/%{user} +# } +#} +# +## Namespaces +#namespace inbox { +# inbox = yes +# +# mailbox Drafts { +# auto = subscribe +# special_use = \Drafts +# } +# +# mailbox Sent { +# auto = subscribe +# special_use = \Sent +# } +# +# mailbox "Sent Messages" { +# auto = no +# special_use = \Sent +# } +# +# mailbox Spam { +# auto = create +# special_use = \Junk +# } +# +# mailbox Trash { +# auto = subscribe +# special_use = \Trash +# } +#} +# +## Optimization +#import_environment { +# TZ = :/etc/localtime +# MALLOC_MMAP_THRESHOLD_ = 131072 +#} +# +## Flatcurve FTS Plugin +#mail_plugins { +# fts = yes +# fts_flatcurve = yes +#} +# +#fts flatcurve { +#} diff --git a/net-mail/dovecot/files/dovecot-2.4.1-gssapi-regression.patch b/net-mail/dovecot/files/dovecot-2.4.1-gssapi-regression.patch new file mode 100644 index 000000000000..1f810c2b0e48 --- /dev/null +++ b/net-mail/dovecot/files/dovecot-2.4.1-gssapi-regression.patch @@ -0,0 +1,14 @@ +#see https://dovecot.org/mailman3/archives/list/[email protected]/message/O54EAGLIXXHMOH7BQCCKHHB3Z32HDWVR/ +diff --git a/src/auth/mech-gssapi.c b/src/auth/mech-gssapi.c +index 57a2b125b2..4ff5716528 100644 +--- a/src/auth/mech-gssapi.c ++++ b/src/auth/mech-gssapi.c +@@ -672,7 +672,7 @@ mech_gssapi_auth_initial(struct auth_req + + if (data_size == 0) { + /* The client should go first */ +- auth_request_handler_reply_continue(request, NULL, 0); ++ auth_request_handler_reply_continue(request, uchar_empty_ptr, 0); + } else { + mech_gssapi_auth_continue(request, data, data_size); + } diff --git a/net-mail/dovecot/files/dovecot-autoconf-lua-version-v3.patch b/net-mail/dovecot/files/dovecot-autoconf-lua-version-v3.patch new file mode 100644 index 000000000000..7fd32e71bcea --- /dev/null +++ b/net-mail/dovecot/files/dovecot-autoconf-lua-version-v3.patch @@ -0,0 +1,18 @@ +--- a/m4/want_lua.m4 2025-05-04 20:10:02.438557238 +0200 ++++ b/m4/want_lua.m4 2025-05-04 20:10:51.606553311 +0200 +@@ -6,7 +6,6 @@ + dnl Use pkgconfig to first find out all luas that are there + LUAPCS=$($PKG_CONFIG --list-all | $EGREP "lua-?...? " | sort -r) + dnl Then we pick suitable one +- for LUAPC in $LUAPCS lua; do + PKG_CHECK_MODULES([LUA], [$LUAPC >= 5.1 $LUAPC != 5.2], [ + have_lua=yes + AC_MSG_NOTICE([using library $LUAPC]) +@@ -14,7 +13,6 @@ + ], [ + : + ]) +- done + ], [have_lua=yes]) + AS_IF([test "$want_lua" = "yes" && test "$have_lua" = "no"], [ + AC_MSG_ERROR([cannot build with Lua support: lua not found]) diff --git a/net-mail/dovecot/metadata.xml b/net-mail/dovecot/metadata.xml index d94fbb16f7df..bb978c3336f3 100644 --- a/net-mail/dovecot/metadata.xml +++ b/net-mail/dovecot/metadata.xml @@ -14,6 +14,7 @@ <flag name="solr">Add solr full text search (FTS) support</flag> <flag name="stemmer">Add libstemmer support (for FTS)</flag> <flag name="textcat">Add libtextcat language guessing support for full text search (FTS)</flag> + <flag name="xapian">Add xapian (flatcurve) full text search (FTS) support</flag> </use> <upstream> <remote-id type="github">dovecot/core</remote-id>
