git: fe966ba02729 - main - mail/dovecot24-pigeonhole: new port

From: Kurt Jaeger <pi_at_FreeBSD.org>
Date: Sun, 13 Sep 2026 12:29:16 UTC
The branch main has been updated by pi:

URL: https://cgit.FreeBSD.org/ports/commit/?id=fe966ba0272989618c80888c9bbee285e04b6528

commit fe966ba0272989618c80888c9bbee285e04b6528
Author:     Jordan Ostreff <jordan@ostreff.info>
AuthorDate: 2026-09-13 12:27:03 +0000
Commit:     Kurt Jaeger <pi@FreeBSD.org>
CommitDate: 2026-09-13 12:27:03 +0000

    mail/dovecot24-pigeonhole: new port
    
    Sieve language support by a plugin for the Dovecot deliver LDA&LMTP
    
        * Mail filtering
        * Mail forwarding
        * Vacation auto-reply
    
    PR:             298046
    Reviewed-by:    Martin Waschbüsch <martin@waschbuesch.de>
                    Michael Grimm <trashcan@ellael.org>
---
 mail/Makefile                                      |   1 +
 mail/dovecot24-pigeonhole/Makefile                 |  73 ++++++++++++++
 mail/dovecot24-pigeonhole/distinfo                 |   3 +
 .../files/patch-src_plugins_settings_Makefile.in   |  11 ++
 mail/dovecot24-pigeonhole/pkg-descr                |   5 +
 mail/dovecot24-pigeonhole/pkg-message              |  17 ++++
 mail/dovecot24-pigeonhole/pkg-plist                | 111 +++++++++++++++++++++
 7 files changed, 221 insertions(+)

diff --git a/mail/Makefile b/mail/Makefile
index 0aadbb28dc99..31903cbf4ecf 100644
--- a/mail/Makefile
+++ b/mail/Makefile
@@ -107,6 +107,7 @@
     SUBDIR += dovecot-pigeonhole
     SUBDIR += dovecot-xaps
     SUBDIR += dovecot24
+    SUBDIR += dovecot24-pigeonhole
     SUBDIR += dovecot24-wormhole
     SUBDIR += dspam
     SUBDIR += ecartis
diff --git a/mail/dovecot24-pigeonhole/Makefile b/mail/dovecot24-pigeonhole/Makefile
new file mode 100644
index 000000000000..5bd5b2ea7d66
--- /dev/null
+++ b/mail/dovecot24-pigeonhole/Makefile
@@ -0,0 +1,73 @@
+PORTNAME=	pigeonhole
+DISTVERSION=	2.4.5
+CATEGORIES=	mail
+MASTER_SITES=	https://pigeonhole.dovecot.org/releases/2.4/
+PKGNAMEPREFIX=	dovecot24-
+PKGNAMESUFFIX=	${FLAVOR:Ndefault:C/.+/-${FLAVOR}/}
+DISTNAME=	dovecot-pigeonhole-${DISTVERSION}
+
+MAINTAINER=	jordan@ostreff.info
+COMMENT=	Sieve plugin for the Dovecot '2.4' IMAP and POP3 server
+WWW=		https://pigeonhole.dovecot.org/
+
+LICENSE=	LGPL21
+LICENSE_FILE=	${WRKSRC}/COPYING.LGPL
+
+# Dependencies
+BUILD_DEPENDS=	dovecot24${PKGNAMESUFFIX}>=2.4.5:mail/dovecot24@${FLAVOR}
+RUN_DEPENDS=	dovecot24${PKGNAMESUFFIX}>=2.4.5:mail/dovecot24@${FLAVOR}
+
+# Flavors
+FLAVORS=	default mysql pgsql sqlite3 ldap cdb
+FLAVOR?=	${FLAVORS:[1]}
+
+USES=		cpe libtool localbase pkgconfig python:build,test ssl
+CPE_VENDOR=	dovecot
+CPE_PRODUCT=	pigeonhole
+USE_LDCONFIG=	${PREFIX}/lib/dovecot
+
+GNU_CONFIGURE=	yes
+GNU_CONFIGURE_MANPREFIX=	${PREFIX}/share
+CONFIGURE_ARGS=	--with-dovecot=${LOCALBASE}/lib/dovecot
+INSTALL_TARGET=	install-strip
+
+CONFLICTS_INSTALL=	dovecot-pigeonhole dovecot-pigeonhole-* \
+			dovecot24-pigeonhole dovecot24-pigeonhole-*
+
+# Options definitions
+# For FLAVOR=ldap, LDAP support is mandatory and must not be
+# deselectable, so the LDAP option is only exposed for the other flavors.
+.if ${FLAVOR} == ldap
+OPTIONS_DEFINE=		DOCS EXAMPLES MANAGESIEVE
+.else
+OPTIONS_DEFINE=		DOCS EXAMPLES LDAP MANAGESIEVE
+.endif
+OPTIONS_DEFAULT=	DOCS MANAGESIEVE
+OPTIONS_SUB=		yes
+
+# Options descriptions
+.if ${FLAVOR} != ldap
+LDAP_DESC=		LDAP protocol support
+.endif
+MANAGESIEVE_DESC=	ManageSieve support
+
+# Options helpers
+.if ${FLAVOR} != ldap
+LDAP_USES=			ldap
+LDAP_CONFIGURE_WITH=		ldap
+.endif
+MANAGESIEVE_CONFIGURE_WITH=	managesieve
+
+.include <bsd.port.options.mk>
+
+# FLAVOR=ldap always builds with LDAP support enabled. Set the same
+# USES/CONFIGURE_ARGS/PLIST_SUB values here that the LDAP option would
+# set for non-flavor users, so both paths produce an identical pkg-plist.
+.if ${FLAVOR} == ldap
+USES+=			ldap
+CONFIGURE_ARGS+=	--with-ldap
+PLIST_SUB+=		LDAP="" \
+			NO_LDAP="@comment "
+.endif
+
+.include <bsd.port.mk>
diff --git a/mail/dovecot24-pigeonhole/distinfo b/mail/dovecot24-pigeonhole/distinfo
new file mode 100644
index 000000000000..7ac95c235c0c
--- /dev/null
+++ b/mail/dovecot24-pigeonhole/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1788035651
+SHA256 (dovecot-pigeonhole-2.4.5.tar.gz) = ad7c478cb3aaa76c5f81f86727a3e6843645b0a1253f5684fb8a0beec0d22925
+SIZE (dovecot-pigeonhole-2.4.5.tar.gz) = 2127811
diff --git a/mail/dovecot24-pigeonhole/files/patch-src_plugins_settings_Makefile.in b/mail/dovecot24-pigeonhole/files/patch-src_plugins_settings_Makefile.in
new file mode 100644
index 000000000000..170a777a4b9f
--- /dev/null
+++ b/mail/dovecot24-pigeonhole/files/patch-src_plugins_settings_Makefile.in
@@ -0,0 +1,11 @@
+--- src/plugins/settings/Makefile.in.orig	2026-06-21 13:53:00 UTC
++++ src/plugins/settings/Makefile.in
+@@ -819,7 +819,7 @@ settings-history-pigeonhole.h: $(srcdir)/settings-hist
+ 
+ pigeonhole-settings.c: settings-history-pigeonhole.h
+ settings-history-pigeonhole.h: $(srcdir)/settings-history-pigeonhole.txt $(SETTINGS_HISTORY_PY)
+-	$(AM_V_GEN)$(PYTHON) $(SETTINGS_HISTORY_PY) --pro 1 --plugin pigeonhole $< $@
++	$(AM_V_GEN)$(PYTHON) $(SETTINGS_HISTORY_PY) --pro 1 --plugin pigeonhole $(srcdir)/settings-history-pigeonhole.txt $@
+ 
+ pigeonhole-settings-dynamic.c: $(SETTING_FILES) $(SETTING_LINKED_FILES) $(top_srcdir)/src/plugins/settings/settings-get.pl
+	$(AM_V_GEN)$(top_srcdir)/src/plugins/settings/settings-get.pl \
diff --git a/mail/dovecot24-pigeonhole/pkg-descr b/mail/dovecot24-pigeonhole/pkg-descr
new file mode 100644
index 000000000000..2811dd170eaf
--- /dev/null
+++ b/mail/dovecot24-pigeonhole/pkg-descr
@@ -0,0 +1,5 @@
+Sieve language support by a plugin for the Dovecot deliver LDA&LMTP
+
+    * Mail filtering
+    * Mail forwarding
+    * Vacation auto-reply
diff --git a/mail/dovecot24-pigeonhole/pkg-message b/mail/dovecot24-pigeonhole/pkg-message
new file mode 100644
index 000000000000..edacb7a687f4
--- /dev/null
+++ b/mail/dovecot24-pigeonhole/pkg-message
@@ -0,0 +1,17 @@
+[
+{
+  type: install
+  message: <<EOM
+This port assumes you are familiar with Dovecot and have it installed
+and running on the system you have installed this plugin on.
+
+Sieve and ManageSieve configuration options have changed significantly
+in Dovecot 2.4. Please refer to the official documentation for the
+new configuration syntax.
+
+Further information on configuration can be found at:
+
+  https://doc.dovecot.org/
+EOM
+}
+]
diff --git a/mail/dovecot24-pigeonhole/pkg-plist b/mail/dovecot24-pigeonhole/pkg-plist
new file mode 100644
index 000000000000..32ba4b4e7fe9
--- /dev/null
+++ b/mail/dovecot24-pigeonhole/pkg-plist
@@ -0,0 +1,111 @@
+bin/sieve-dump
+bin/sieve-filter
+bin/sieve-test
+bin/sievec
+include/dovecot/sieve/edit-mail.h
+include/dovecot/sieve/mail-raw.h
+include/dovecot/sieve/pigeonhole-config.h
+include/dovecot/sieve/pigeonhole-version.h
+include/dovecot/sieve/rfc2822.h
+include/dovecot/sieve/sieve-actions.h
+include/dovecot/sieve/sieve-address-parts.h
+include/dovecot/sieve/sieve-address-source.h
+include/dovecot/sieve/sieve-address.h
+include/dovecot/sieve/sieve-ast.h
+include/dovecot/sieve/sieve-binary-dumper.h
+include/dovecot/sieve/sieve-binary-private.h
+include/dovecot/sieve/sieve-binary.h
+include/dovecot/sieve/sieve-code-dumper.h
+include/dovecot/sieve/sieve-code.h
+include/dovecot/sieve/sieve-commands.h
+include/dovecot/sieve/sieve-common.h
+include/dovecot/sieve/sieve-comparators.h
+include/dovecot/sieve/sieve-config.h
+include/dovecot/sieve/sieve-dump.h
+include/dovecot/sieve/sieve-error-private.h
+include/dovecot/sieve/sieve-error.h
+include/dovecot/sieve/sieve-execute.h
+include/dovecot/sieve/sieve-ext-copy.h
+include/dovecot/sieve/sieve-ext-enotify.h
+include/dovecot/sieve/sieve-ext-environment.h
+include/dovecot/sieve/sieve-ext-imap4flags.h
+include/dovecot/sieve/sieve-ext-mailbox.h
+include/dovecot/sieve/sieve-ext-variables.h
+include/dovecot/sieve/sieve-extensions.h
+include/dovecot/sieve/sieve-generator.h
+include/dovecot/sieve/sieve-interpreter.h
+include/dovecot/sieve/sieve-lexer.h
+include/dovecot/sieve/sieve-limits.h
+include/dovecot/sieve/sieve-match-types.h
+include/dovecot/sieve/sieve-match.h
+include/dovecot/sieve/sieve-message.h
+include/dovecot/sieve/sieve-objects.h
+include/dovecot/sieve/sieve-parser.h
+include/dovecot/sieve/sieve-plugins.h
+include/dovecot/sieve/sieve-result.h
+include/dovecot/sieve/sieve-runtime-trace.h
+include/dovecot/sieve/sieve-runtime.h
+include/dovecot/sieve/sieve-rusage.h
+include/dovecot/sieve/sieve-script-private.h
+include/dovecot/sieve/sieve-script.h
+include/dovecot/sieve/sieve-settings.h
+include/dovecot/sieve/sieve-smtp.h
+include/dovecot/sieve/sieve-storage-private.h
+include/dovecot/sieve/sieve-storage.h
+include/dovecot/sieve/sieve-stringlist.h
+include/dovecot/sieve/sieve-types.h
+include/dovecot/sieve/sieve-validator.h
+include/dovecot/sieve/sieve.h
+%%MANAGESIEVE%%include/dovecot/sieve/managesieve-arg.h
+%%MANAGESIEVE%%include/dovecot/sieve/managesieve-parser.h
+%%MANAGESIEVE%%include/dovecot/sieve/managesieve-protocol.h
+%%MANAGESIEVE%%include/dovecot/sieve/managesieve-quote.h
+%%MANAGESIEVE%%include/dovecot/sieve/managesieve-url.h
+%%MANAGESIEVE%%include/dovecot/sieve/sieve-storage-settings.h
+%%MANAGESIEVE%%include/dovecot/sieve/urn.h
+lib/dovecot/doveadm/lib10_doveadm_sieve_plugin.a
+lib/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
+lib/dovecot/lib90_sieve_plugin.a
+lib/dovecot/lib90_sieve_plugin.so
+lib/dovecot/lib95_imap_filter_sieve_plugin.a
+lib/dovecot/lib95_imap_filter_sieve_plugin.so
+lib/dovecot/lib95_imap_sieve_plugin.a
+lib/dovecot/lib95_imap_sieve_plugin.so
+lib/dovecot/libdovecot-sieve.a
+lib/dovecot/libdovecot-sieve.so
+lib/dovecot/libdovecot-sieve.so.0
+lib/dovecot/libdovecot-sieve.so.0.0.0
+%%MANAGESIEVE%%lib/dovecot/libdovecot-managesieve.a
+%%MANAGESIEVE%%lib/dovecot/libdovecot-managesieve.so
+%%MANAGESIEVE%%lib/dovecot/libdovecot-managesieve.so.0
+%%MANAGESIEVE%%lib/dovecot/libdovecot-managesieve.so.0.0.0
+%%MANAGESIEVE%%lib/dovecot/settings/libmanagesieve_login_settings.a
+%%MANAGESIEVE%%lib/dovecot/settings/libmanagesieve_login_settings.so
+%%MANAGESIEVE%%lib/dovecot/settings/libmanagesieve_settings.a
+%%MANAGESIEVE%%lib/dovecot/settings/libmanagesieve_settings.so
+lib/dovecot/settings/libpigeonhole_settings.a
+lib/dovecot/settings/libpigeonhole_settings.so
+lib/dovecot/sieve/lib90_sieve_extprograms_plugin.a
+lib/dovecot/sieve/lib90_sieve_extprograms_plugin.so
+lib/dovecot/sieve/lib90_sieve_imapsieve_plugin.a
+lib/dovecot/sieve/lib90_sieve_imapsieve_plugin.so
+%%MANAGESIEVE%%libexec/dovecot/managesieve
+%%MANAGESIEVE%%libexec/dovecot/managesieve-login
+share/aclocal/dovecot-pigeonhole.m4
+%%EXAMPLES%%share/doc/dovecot/example-config/conf.d/20-managesieve.conf
+%%EXAMPLES%%share/doc/dovecot/example-config/conf.d/90-sieve-extprograms.conf
+%%EXAMPLES%%share/doc/dovecot/example-config/conf.d/90-sieve.conf
+%%LDAP%%%%EXAMPLES%%share/doc/dovecot/example-config/sieve-ldap.conf
+%%DOCS%%share/doc/dovecot/sieve/extensions/duplicate.txt
+%%DOCS%%share/doc/dovecot/sieve/extensions/editheader.txt
+%%DOCS%%share/doc/dovecot/sieve/extensions/include.txt
+%%DOCS%%share/doc/dovecot/sieve/extensions/spamtest-virustest.txt
+%%DOCS%%share/doc/dovecot/sieve/extensions/vacation.txt
+%%DOCS%%share/doc/dovecot/sieve/extensions/vnd.dovecot.environment.txt
+%%DOCS%%share/doc/dovecot/sieve/extensions/vnd.dovecot.report.txt
+%%DOCS%%share/doc/dovecot/sieve/locations/dict.txt
+%%DOCS%%share/doc/dovecot/sieve/locations/file.txt
+%%LDAP%%%%DOCS%%share/doc/dovecot/sieve/locations/ldap.txt
+%%DOCS%%share/doc/dovecot/sieve/plugins/imap_filter_sieve.txt
+%%DOCS%%share/doc/dovecot/sieve/plugins/imapsieve.txt
+%%DOCS%%share/doc/dovecot/sieve/plugins/sieve_extprograms.txt