commit: ce287dbd842b65b2b8ed92e62e1f79a50e2a455e Author: Ulrich Müller <ulm <AT> gentoo <DOT> org> AuthorDate: Sun Aug 31 09:17:16 2025 +0000 Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org> CommitDate: Sun Aug 31 09:54:05 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ce287dbd
mail-filter/postsrsd: Add support for Redis and SQLite Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org> mail-filter/postsrsd/metadata.xml | 8 ++ mail-filter/postsrsd/postsrsd-2.0.11-r4.ebuild | 105 +++++++++++++++++++++++++ 2 files changed, 113 insertions(+) diff --git a/mail-filter/postsrsd/metadata.xml b/mail-filter/postsrsd/metadata.xml index 031be196863a..03e3fb90d925 100644 --- a/mail-filter/postsrsd/metadata.xml +++ b/mail-filter/postsrsd/metadata.xml @@ -2,6 +2,14 @@ <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> <!-- maintainer-needed --> + <use> + <flag name="redis"> + Add support for <pkg>dev-libs/hiredis</pkg> database backend + </flag> + <flag name="sqlite"> + Add support for <pkg>dev-db/sqlite</pkg> database backend + </flag> + </use> <upstream> <remote-id type="github">roehling/postsrsd</remote-id> </upstream> diff --git a/mail-filter/postsrsd/postsrsd-2.0.11-r4.ebuild b/mail-filter/postsrsd/postsrsd-2.0.11-r4.ebuild new file mode 100644 index 000000000000..c09adf4e5ef9 --- /dev/null +++ b/mail-filter/postsrsd/postsrsd-2.0.11-r4.ebuild @@ -0,0 +1,105 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake eapi9-pipestatus eapi9-ver readme.gentoo-r1 systemd + +DESCRIPTION="Postfix Sender Rewriting Scheme daemon" +HOMEPAGE="https://github.com/roehling/postsrsd" +SRC_URI="https://github.com/roehling/postsrsd/archive/${PV}.tar.gz -> ${P}.tar.gz" + +# See REUSE.toml; GPL-3 for the main software, BSD for src/sha*. +LICENSE="GPL-3 BSD" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="redis sqlite test" +RESTRICT="!test? ( test )" + +RDEPEND="acct-user/postsrsd + dev-libs/confuse:= + redis? ( dev-libs/hiredis:= ) + sqlite? ( dev-db/sqlite:3 )" + +DEPEND="${RDEPEND} + test? ( dev-libs/check )" + +CHROOT_DIR="${EPREFIX}/var/lib/postsrsd" + +PATCHES=( + "${FILESDIR}"/${PN}-2.0.11-sysconfdir.patch +) +DOCS=( README.rst CHANGELOG.rst ) + +src_configure() { + local mycmakeargs=( + -DBUILD_TESTING=$(usex test) + + -DPOSTSRSD_USER=postsrsd + -DPOSTSRSD_CHROOTDIR="${CHROOT_DIR}" + -DSYSTEMD_UNITDIR="$(systemd_get_systemunitdir)" + -DSYSTEMD_SYSUSERSDIR="${EPREFIX}/usr/lib/sysusers.d" + + -DINSTALL_SYSTEMD_SERVICE=ON + # https://github.com/roehling/postsrsd/blob/main/doc/packaging.rst#third-party-dependencies + -DFETCHCONTENT_TRY_FIND_PACKAGE_MODE=ALWAYS + # We don't want to run tests with sanitizers. They're + # unreliable under sandbox and don't run on all platforms + -DTESTS_WITH_ASAN=OFF + + # Do not generate the signing secret in src_install, as it would + # a) embed it in binary packages and b) overwrite existing secrets + # on every reinstall. Generate the secret in pkg_postinst instead. + -DGENERATE_SRS_SECRET=OFF + + # "Note that the Milter code is less tested and should be + # considered experimental for now and not ready for production." + -DWITH_MILTER=OFF + -DWITH_REDIS=$(usex redis) + -DWITH_SQLITE=$(usex sqlite) + ) + + cmake_src_configure +} + +src_install() { + cmake_src_install + + newinitd "${FILESDIR}"/postsrsd-2.0.11.initd postsrsd + newconfd "${FILESDIR}"/postsrsd-2.0.11.confd postsrsd + diropts -o postsrsd -g root -m 0755 + keepdir "${CHROOT_DIR}" + + local DOC_CONTENTS="When updating from version 1.x: + \n\nNote that most configuration options can no longer be set from the + command line, therefore we cannot define them in OpenRC's conf.d file + either. You will have to set them in ${EPREFIX}/etc/postsrsd.conf + instead. + \n\nIn the config file, you must *at least* set the \"domains\" + variable, i.e. the local domain name. In most cases, using the output + of \"postconf -h mydomain\" should be okay. + \n\nAlso note that PostSRSd 2.x by default uses Unix domain sockets + instead of TCP sockets, so you must update \"sender_canonical_maps\" + and \"recipient_canonical_maps\" in ${EPREFIX}/etc/postfix/main.cf. + (Alternatively, you can update \"socketmap\" in postsrsd.conf.) + \n\nSee README.rst and the comments in postsrsd.conf for more detailed + information." + readme.gentoo_create_doc +} + +pkg_postinst() { + local f="${EROOT}/etc/postsrsd.secret" ret=0 + + if [[ ! -e ${f} ]]; then + ebegin "Generate the SRS signing secret and install it in ${f}" + ( + umask 077 + dd if=/dev/urandom bs=18 count=1 status=none | base64 > "${f}" + pipestatus + ) + eend $? "Installing ${f} failed" + fi + + ver_replacing -lt 2.0.11-r1 && local FORCE_PRINT_ELOG=1 + readme.gentoo_print_elog +}
