summaryrefslogtreecommitdiff
path: root/mail-filter/libmilter
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-12 19:09:37 -0500
commitb590c8d7572b727d565cc0b8ff660d43569845de (patch)
tree06f7a4102ea4e845df8b66660f252920d52952f9 /mail-filter/libmilter
parent24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff)
downloadbaldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz
baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip
Adding metadata
Diffstat (limited to 'mail-filter/libmilter')
-rw-r--r--mail-filter/libmilter/Manifest4
-rw-r--r--mail-filter/libmilter/files/gentoo.config.m45
-rw-r--r--mail-filter/libmilter/files/libmilter-1.0.2_p3-c23-bool.patch19
-rw-r--r--mail-filter/libmilter/files/libmilter-1.0.2_p4-systemd-socket-activation.patch76
-rw-r--r--mail-filter/libmilter/files/libmilter-musl-disable-cdefs.patch11
-rw-r--r--mail-filter/libmilter/files/libmilter-musl-stack-size.patch42
-rw-r--r--mail-filter/libmilter/files/libmilter-sharedlib.patch55
-rw-r--r--mail-filter/libmilter/files/sendmail-8.16.1-build-system.patch158
-rw-r--r--mail-filter/libmilter/libmilter-1.0.2_p4-r1.ebuild145
-rw-r--r--mail-filter/libmilter/libmilter-1.0.2_p4.ebuild135
-rw-r--r--mail-filter/libmilter/libmilter-1.0.2_p5.ebuild144
-rw-r--r--mail-filter/libmilter/metadata.xml19
12 files changed, 813 insertions, 0 deletions
diff --git a/mail-filter/libmilter/Manifest b/mail-filter/libmilter/Manifest
new file mode 100644
index 000000000000..493d582327b7
--- /dev/null
+++ b/mail-filter/libmilter/Manifest
@@ -0,0 +1,4 @@
+DIST sendmail.8.18.1.tar.gz 2401566 BLAKE2B 3afa36073fd611c7fdb43ef0ab9f02d5fb8ae388e9471bdc7275c6c9dcee0a654f46ddef505b70e978cb1b818b0da375250678e501676d8bace534d59ee40d90 SHA512 9ce713b44439d4de6faa9e3cdfa2226b44b4fbeb352a5f81584c062570e9472da244158287e489aabe258d28fe54ca4964565c7b0adc7e1763d212be42f98061
+DIST sendmail.8.18.1.tar.gz.sig 543 BLAKE2B f5f8ffaee2b4380babb033257aa30a3ade3686f3ae3dc4ced3beb25698c1917489e05456cf6b3cfcf3f0a8a1725ac42a6ce1db317939f944012e994672f6c22d SHA512 a1b3fc2278061c220ca36b954e333867a187b52c32ecd10793a12c1c90c0466bc3f1e6f76ca3aeaaf02e14f71f8cef418f5291557461b61509ed255c55c6ef47
+DIST sendmail.8.18.2.tar.gz 2372458 BLAKE2B a291006fd498d61b8fe19eb02cdeb92f83cef68b5c3db0c8b6479edb8e4722ed2d2ae03cf39553c0631224a1dfa00754cf4ea32bb7bc762ad8152ccaebe606dc SHA512 55515220ea84db4b56b8154efbf21aeb7161943c92bd63527cfc20169ea566e299cc289f0a6e160dc5637f656bdc451707003750d4b42a7894d40f35f51f6040
+DIST sendmail.8.18.2.tar.gz.sig 543 BLAKE2B 6c397ada6b93de4608d11bc09d58c687819f333161865129d70d5dd3fc35124fda3f5c8d2533a10b8a327804feb261b4abd3506bb9a8ede686cc0b3f159203c5 SHA512 4e531f89e5e10dba7d3c66c8c5378aadeb139ec9d2f6ac6568f272adea4d1515c1ba858bb34585e0d52ac070185052e901d58bd677ef59a5cc733b4f60fb827f
diff --git a/mail-filter/libmilter/files/gentoo.config.m4 b/mail-filter/libmilter/files/gentoo.config.m4
new file mode 100644
index 000000000000..5e1b55faa580
--- /dev/null
+++ b/mail-filter/libmilter/files/gentoo.config.m4
@@ -0,0 +1,5 @@
+define(`confOPTIMIZE', `@@CFLAGS@@')
+define(`confLDOPTS', `@@LDFLAGS@@')
+define(`confCC', `@@CC@@')
+define(`confENVDEF', `@@ENVDEF@@')
+define(`confCCOPTS_SO', `-fPIC')
diff --git a/mail-filter/libmilter/files/libmilter-1.0.2_p3-c23-bool.patch b/mail-filter/libmilter/files/libmilter-1.0.2_p3-c23-bool.patch
new file mode 100644
index 000000000000..639967e83910
--- /dev/null
+++ b/mail-filter/libmilter/files/libmilter-1.0.2_p3-c23-bool.patch
@@ -0,0 +1,19 @@
+Building mail-filter/opendkim without this patch would fail because
+mfapi.h doesn't include libmilter's own config header which defines
+SM_CONF_STDBOOL_H.
+
+We certainly only care about >= C99 compilers so we can just always
+take that path.
+
+https://bugs.gentoo.org/944138
+--- a/include/libmilter/mfapi.h
++++ b/include/libmilter/mfapi.h
+@@ -89,7 +89,7 @@ typedef int sfsistat;
+ # endif
+ #endif /* __P */
+
+-#if SM_CONF_STDBOOL_H
++#if 1 /* SM_CONF_STDBOOL_H */
+ # include <stdbool.h>
+ #else /* SM_CONF_STDBOOL_H */
+ # ifndef __cplusplus
diff --git a/mail-filter/libmilter/files/libmilter-1.0.2_p4-systemd-socket-activation.patch b/mail-filter/libmilter/files/libmilter-1.0.2_p4-systemd-socket-activation.patch
new file mode 100644
index 000000000000..0014cb4a66fd
--- /dev/null
+++ b/mail-filter/libmilter/files/libmilter-1.0.2_p4-systemd-socket-activation.patch
@@ -0,0 +1,76 @@
+Description: systemd-like socket activation support for libmilter
+Author: Mikhail Gusarov <dottedmag@debian.org>
+--- a/libmilter/docs/smfi_setconn.html
++++ b/libmilter/docs/smfi_setconn.html
+@@ -44,6 +44,7 @@ Set the socket through which this filter
+ <LI><CODE>{unix|local}:/path/to/file</CODE> -- A named pipe.
+ <LI><CODE>inet:port@{hostname|ip-address}</CODE> -- An IPV4 socket.
+ <LI><CODE>inet6:port@{hostname|ip-address}</CODE> -- An IPV6 socket.
++ <LI><CODE>fd:number</CODE> -- Pre-opened file descriptor.
+ </UL>
+ </TD></TR>
+ </TABLE>
+--- a/libmilter/listener.c
++++ b/libmilter/listener.c
+@@ -197,6 +197,11 @@ mi_milteropen(conn, backlog, rmsocket, n
+ L_socksize = sizeof addr.sin6;
+ }
+ #endif /* NETINET6 */
++ else if (strcasecmp(p, "fd") == 0)
++ {
++ addr.sa.sa_family = AF_UNSPEC;
++ L_socksize = sizeof (_SOCK_ADDR);
++ }
+ else
+ {
+ smi_log(SMI_LOG_ERR, "%s: unknown socket type %s",
+@@ -443,7 +448,21 @@ mi_milteropen(conn, backlog, rmsocket, n
+ }
+ #endif /* NETINET || NETINET6 */
+
+- sock = socket(addr.sa.sa_family, SOCK_STREAM, 0);
++ if (addr.sa.sa_family == AF_UNSPEC)
++ {
++ char *end;
++ sock = strtol(colon, &end, 10);
++ if (*end != '\0' || sock < 0)
++ {
++ smi_log(SMI_LOG_ERR, "%s: expected positive integer as fd, got %s", name, colon);
++ return INVALID_SOCKET;
++ }
++ }
++ else
++ {
++ sock = socket(addr.sa.sa_family, SOCK_STREAM, 0);
++ }
++
+ if (!ValidSocket(sock))
+ {
+ smi_log(SMI_LOG_ERR,
+@@ -466,6 +485,7 @@ mi_milteropen(conn, backlog, rmsocket, n
+ #if NETUNIX
+ addr.sa.sa_family != AF_UNIX &&
+ #endif
++ addr.sa.sa_family != AF_UNSPEC &&
+ setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void *) &sockopt,
+ sizeof(sockopt)) == -1)
+ {
+@@ -511,7 +531,8 @@ mi_milteropen(conn, backlog, rmsocket, n
+ }
+ #endif /* NETUNIX */
+
+- if (bind(sock, &addr.sa, L_socksize) < 0)
++ if (addr.sa.sa_family != AF_UNSPEC &&
++ bind(sock, &addr.sa, L_socksize) < 0)
+ {
+ smi_log(SMI_LOG_ERR,
+ "%s: Unable to bind to port %s: %s",
+@@ -818,7 +839,7 @@ mi_listener(conn, dbg, smfi, timeout, ba
+ #ifdef BSD4_4_SOCKADDR
+ cliaddr.sa.sa_len == 0 ||
+ #endif
+- cliaddr.sa.sa_family != L_family))
++ (L_family != AF_UNSPEC && cliaddr.sa.sa_family != L_family)))
+ {
+ (void) closesocket(connfd);
+ connfd = INVALID_SOCKET;
diff --git a/mail-filter/libmilter/files/libmilter-musl-disable-cdefs.patch b/mail-filter/libmilter/files/libmilter-musl-disable-cdefs.patch
new file mode 100644
index 000000000000..6dc4ac63105e
--- /dev/null
+++ b/mail-filter/libmilter/files/libmilter-musl-disable-cdefs.patch
@@ -0,0 +1,11 @@
+--- a/include/sm/os/sm_os_linux.h 2020-06-09 11:57:46.789786561 +0200
++++ b/include/sm/os/sm_os_linux.h 2020-06-09 11:57:49.174781812 +0200
+@@ -33,7 +33,7 @@
+ # endif /* LINUX_VERSION_CODE */
+ #endif /* SM_CONF_SHM */
+
+-#define SM_CONF_SYS_CDEFS_H 1
++#define SM_CONF_SYS_CDEFS_H 0
+ #ifndef SM_CONF_SEM
+ # define SM_CONF_SEM 2
+ #endif /* SM_CONF_SEM */
diff --git a/mail-filter/libmilter/files/libmilter-musl-stack-size.patch b/mail-filter/libmilter/files/libmilter-musl-stack-size.patch
new file mode 100644
index 000000000000..9993adfece34
--- /dev/null
+++ b/mail-filter/libmilter/files/libmilter-musl-stack-size.patch
@@ -0,0 +1,42 @@
+Set default pthread stack size to 256 KB
+
+This patch tries to fix various crashes for applications depending on libmilter
+by setting the stack size for pthreads to 256 KB. The default stack size for
+musl libc is set to 80 KB whereas glibc has it set to 8 MB. This causes problems
+when a large amount of memory is allocated on the stack.
+
+For example, opendkim allocates blocks of 64 KB multiple times, which causes
+libmilter (and therefore opendkim) to crash. For now, a stack size of 256 KB
+looks sufficient and makes opendkim stop crashing.
+
+Fixes https://bugs.alpinelinux.org/issues/6360
+
+--- a/libmilter/libmilter.h
++++ b/libmilter/libmilter.h
+@@ -127,10 +127,10 @@
+ # define MI_SOCK_READ(s, b, l) read(s, b, l)
+ # define MI_SOCK_READ_FAIL(x) ((x) < 0)
+ # define MI_SOCK_WRITE(s, b, l) write(s, b, l)
+-
+-# define thread_create(ptid,wr,arg) pthread_create(ptid, NULL, wr, arg)
+ # define sthread_get_id() pthread_self()
+
++extern int thread_create(pthread_t *ptid, void *(*wr) (void *), void *arg);
++
+ typedef pthread_mutex_t smutex_t;
+ # define smutex_init(mp) (pthread_mutex_init(mp, NULL) == 0)
+ # define smutex_destroy(mp) (pthread_mutex_destroy(mp) == 0)
+--- a/libmilter/main.c
++++ b/libmilter/main.c
+@@ -16,6 +16,12 @@
+ #include <fcntl.h>
+ #include <sys/stat.h>
+
++int thread_create(pthread_t *ptid, void *(*wr) (void *), void *arg) {
++ pthread_attr_t attr;
++ pthread_attr_init(&attr);
++ pthread_attr_setstacksize(&attr,256*1024);
++ return pthread_create(ptid, &attr, wr, arg);
++}
+
+ static smfiDesc_ptr smfi = NULL;
diff --git a/mail-filter/libmilter/files/libmilter-sharedlib.patch b/mail-filter/libmilter/files/libmilter-sharedlib.patch
new file mode 100644
index 000000000000..43ec78612190
--- /dev/null
+++ b/mail-filter/libmilter/files/libmilter-sharedlib.patch
@@ -0,0 +1,55 @@
+diff -Nru sendmail-8.14.3.orig/devtools/M4/UNIX/milterlibrary.m4 sendmail-8.14.3/devtools/M4/UNIX/milterlibrary.m4
+--- sendmail-8.14.3.orig/devtools/M4/UNIX/milterlibrary.m4 1970-01-01 01:00:00.000000000 +0100
++++ sendmail-8.14.3/devtools/M4/UNIX/milterlibrary.m4 2009-08-22 21:51:10.000000000 +0200
+@@ -0,0 +1,39 @@
++divert(-1)
++#
++# Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
++# All rights reserved.
++#
++# By using this file, you agree to the terms and conditions set
++# forth in the LICENSE file which can be found at the top level of
++# the sendmail distribution.
++#
++#
++# Definitions for Makefile construction for sendmail
++#
++divert(0)dnl
++include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/links.m4')dnl
++bldLIST_PUSH_ITEM(`bldC_PRODUCTS', bldCURRENT_PRODUCT)dnl
++bldPUSH_TARGET(bldCURRENT_PRODUCT`.so' bldCURRENT_PRODUCT`.a')dnl
++bldPUSH_INSTALL_TARGET(`install-'bldCURRENT_PRODUCT)dnl
++bldPUSH_CLEAN_TARGET(bldCURRENT_PRODUCT`-clean')dnl
++
++include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/defines.m4')
++divert(bldTARGETS_SECTION)
++bldCURRENT_PRODUCT.so: ${BEFORE} ${bldCURRENT_PRODUCT`OBJS'}
++ ${CCLINK} ${LDOPTS_SO} -o bldCURRENT_PRODUCT.so -Wl,confSONAME,bldCURRENT_PRODUCT.so.${MILTER_SOVER} ${bldCURRENT_PRODUCT`OBJS'} -lc ${LIBS}
++bldCURRENT_PRODUCT.a: ${BEFORE} ${bldCURRENT_PRODUCT`OBJS'}
++ ${AR} ${AROPTS} bldCURRENT_PRODUCT.a ${bldCURRENT_PRODUCT`OBJS'}
++ ${RANLIB} ${RANLIBOPTS} bldCURRENT_PRODUCT.a
++ifdef(`bldLINK_SOURCES', `bldMAKE_SOURCE_LINKS(bldLINK_SOURCES)')
++
++install-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT.so bldCURRENT_PRODUCT.a
++ifdef(`bldINSTALLABLE', ` ifdef(`confMKDIR', `if [ ! -d "${DESTDIR}${bldINSTALL_DIR`'LIBDIR}" ]; then confMKDIR -p "${DESTDIR}${bldINSTALL_DIR`'LIBDIR}"; else :; fi ')
++ ${INSTALL} -c -o ${LIBOWN} -g ${LIBGRP} -m ${UBINMODE} bldCURRENT_PRODUCT.so "${DESTDIR}${LIBDIR}/bldCURRENT_PRODUCT.so.${MILTER_SOVER}"
++ ${LN} ${LNOPTS} bldCURRENT_PRODUCT.so.${MILTER_SOVER} "${DESTDIR}${LIBDIR}/bldCURRENT_PRODUCT.so"
++ ${INSTALL} -c -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} bldCURRENT_PRODUCT.a "${DESTDIR}${LIBDIR}"')
++
++bldCURRENT_PRODUCT-clean:
++ rm -f ${OBJS} bldCURRENT_PRODUCT.so bldCURRENT_PRODUCT.a ${MANPAGES}
++
++divert(0)
++COPTS+= confCCOPTS_SO
+diff -Nru sendmail-8.14.3.orig/libmilter/Makefile.m4 sendmail-8.14.3/libmilter/Makefile.m4
+--- sendmail-8.14.3.orig/libmilter/Makefile.m4 2008-04-08 07:23:44.000000000 +0200
++++ sendmail-8.14.3/libmilter/Makefile.m4 2009-08-22 21:53:35.000000000 +0200
+@@ -9,7 +9,7 @@
+ SMSRCDIR=ifdef(`confSMSRCDIR', `confSMSRCDIR', `${SRCDIR}/sendmail')
+ PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ')
+
+-bldPRODUCT_START(`library', `libmilter')
++bldPRODUCT_START(`milterlibrary', `libmilter')
+ define(`bldINSTALLABLE', `true')
+ define(`LIBMILTER_EXTRAS', `errstring.c strl.c')
+ APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL -Dsm_snprintf=snprintf')
diff --git a/mail-filter/libmilter/files/sendmail-8.16.1-build-system.patch b/mail-filter/libmilter/files/sendmail-8.16.1-build-system.patch
new file mode 100644
index 000000000000..c317a4e854fb
--- /dev/null
+++ b/mail-filter/libmilter/files/sendmail-8.16.1-build-system.patch
@@ -0,0 +1,158 @@
+diff -Nru sendmail-8.14.3.orig/cf/cf/Makefile sendmail-8.14.3/cf/cf/Makefile
+--- sendmail-8.14.3.orig/cf/cf/Makefile 2005-06-14 04:16:34.000000000 +0200
++++ sendmail-8.14.3/cf/cf/Makefile 2009-09-20 10:55:50.000000000 +0200
+@@ -80,10 +80,10 @@
+ install-cf: install-sendmail-cf install-submit-cf
+
+ install-sendmail-cf: $(CF).cf
+- $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(CF).cf ${DESTDIR}$(MAILDIR)/sendmail.cf
++ $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(CF).cf "${DESTDIR}$(MAILDIR)/sendmail.cf"
+
+ install-submit-cf: $(SUBMIT).cf
+- $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(SUBMIT).cf ${DESTDIR}$(MAILDIR)/submit.cf
++ $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(SUBMIT).cf "${DESTDIR}$(MAILDIR)/submit.cf"
+
+ depend:
+
+diff -Nru sendmail-8.14.6.orig/devtools/M4/UNIX/defines.m4 sendmail-8.14.6/devtools/M4/UNIX/defines.m4
+--- sendmail-8.14.6.orig/devtools/M4/UNIX/defines.m4 2012-01-21 00:07:08.000000000 +0000
++++ sendmail-8.14.6/devtools/M4/UNIX/defines.m4 2012-12-27 08:13:15.792214375 +0000
+@@ -26,7 +26,7 @@
+ CCLINK = ifdef(`confCCLINK', `confCCLINK', `confCC')
+ # Linker for libraries
+ LD= ifdef(`confLD', `confLD', `confCC')
+-LDOPTS= ifdef(`confLDOPTS', `confLDOPTS') ifdef(`confMT', ifdef(`confMTLDOPTS', `confMTLDOPTS', `'), `')
++LDOPTS= ifdef(`confLDOPTS', `confLDOPTS')
+ LDOPTS_SO= ${LDOPTS} ifdef(`confLDOPTS_SO', `confLDOPTS_SO', `-shared')
+
+ # Shell
+@@ -71,7 +71,7 @@
+ LIBADD= ifdef(`conf_'bldCURRENT_PRD`_LIBS', `conf_'bldCURRENT_PRD`_LIBS')
+
+ # libraries required on your system
+-LIBS= ${LIBADD} ifdef(`confLIBS', `confLIBS') ifdef(`conf_'bldCURRENT_PRD`_LIB_POST', `conf_'bldCURRENT_PRD`_LIB_POST')
++LIBS= ${LIBADD} ifdef(`confLIBS', `confLIBS') ifdef(`conf_'bldCURRENT_PRD`_LIB_POST', `conf_'bldCURRENT_PRD`_LIB_POST') ifdef(`confMT', ifdef(`confMTLDOPTS', `confMTLDOPTS', `'), `')
+
+ # location of sendmail binary (usually /usr/sbin or /usr/lib)
+ BINDIR= ifdef(`confMBINDIR', `confMBINDIR', `/usr/sbin')
+diff -Nru sendmail-8.14.3.orig/devtools/M4/UNIX/executable.m4 sendmail-8.14.3/devtools/M4/UNIX/executable.m4
+--- sendmail-8.14.3.orig/devtools/M4/UNIX/executable.m4 2006-10-06 07:44:44.000000000 +0200
++++ sendmail-8.14.3/devtools/M4/UNIX/executable.m4 2009-09-20 10:50:36.000000000 +0200
+@@ -30,12 +30,12 @@
+
+ ifdef(`bldNO_INSTALL', ,
+ `install-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT ifdef(`bldTARGET_INST_DEP', `bldTARGET_INST_DEP')
+- ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${bldINSTALL_DIR`'BINDIR} ]; then confMKDIR -p ${DESTDIR}${bldINSTALL_DIR`'BINDIR}; else :; fi ')
+- ${INSTALL} -c -o ${bldBIN_TYPE`'BINOWN} -g ${bldBIN_TYPE`'BINGRP} -m ${bldBIN_TYPE`'BINMODE} bldCURRENT_PRODUCT ${DESTDIR}${bldINSTALL_DIR`'BINDIR}
++ ifdef(`confMKDIR', `if [ ! -d "${DESTDIR}${bldINSTALL_DIR`'BINDIR}" ]; then confMKDIR -p "${DESTDIR}${bldINSTALL_DIR`'BINDIR}"; else :; fi ')
++ ${INSTALL} -c -o ${bldBIN_TYPE`'BINOWN} -g ${bldBIN_TYPE`'BINGRP} -m ${bldBIN_TYPE`'BINMODE} bldCURRENT_PRODUCT "${DESTDIR}${bldINSTALL_DIR`'BINDIR}"
+ ifdef(`bldTARGET_LINKS', `bldMAKE_TARGET_LINKS(${bldINSTALL_DIR`'BINDIR}/bldCURRENT_PRODUCT, ${bldCURRENT_PRODUCT`'TARGET_LINKS})')')
+
+ strip-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT
+- ${STRIP} ${STRIPOPTS} ${DESTDIR}${bldINSTALL_DIR`'BINDIR}`'/bldCURRENT_PRODUCT
++ ${STRIP} ${STRIPOPTS} "${DESTDIR}${bldINSTALL_DIR`'BINDIR}`'/bldCURRENT_PRODUCT"
+
+ bldCURRENT_PRODUCT-clean:
+ rm -f ${OBJS} bldCURRENT_PRODUCT ${MANPAGES}
+diff -Nru sendmail-8.14.3.orig/devtools/M4/UNIX/library.m4 sendmail-8.14.3/devtools/M4/UNIX/library.m4
+--- sendmail-8.14.3.orig/devtools/M4/UNIX/library.m4 2006-09-06 00:56:53.000000000 +0200
++++ sendmail-8.14.3/devtools/M4/UNIX/library.m4 2009-09-20 10:50:36.000000000 +0200
+@@ -27,8 +27,8 @@
+ ifdef(`bldLINK_SOURCES', `bldMAKE_SOURCE_LINKS(bldLINK_SOURCES)')
+
+ install-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT.a
+-ifdef(`bldINSTALLABLE', ` ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${bldINSTALL_DIR`'LIBDIR} ]; then confMKDIR -p ${DESTDIR}${bldINSTALL_DIR`'LIBDIR}; else :; fi ')
+- ${INSTALL} -c -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} bldCURRENT_PRODUCT.a ${DESTDIR}${LIBDIR}')
++ifdef(`bldINSTALLABLE', ` ifdef(`confMKDIR', `if [ ! -d "${DESTDIR}${LIBDIR}" ]; then confMKDIR -p "${DESTDIR}${LIBDIR}"; else :; fi ')
++ ${INSTALL} -c -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} bldCURRENT_PRODUCT.a "${DESTDIR}${LIBDIR}"')
+
+ bldCURRENT_PRODUCT-clean:
+ rm -f ${OBJS} bldCURRENT_PRODUCT.a ${MANPAGES}
+--- sendmail-8.14.6.orig/devtools/M4/UNIX/manpage.m4 2012-01-21 00:07:08.000000000 +0000
++++ sendmail-8.14.6/devtools/M4/UNIX/manpage.m4 2012-12-27 08:28:52.617502447 +0000
+@@ -68,11 +68,11 @@
+ ifdef(`confNO_MAN_INSTALL', `divert(-1)', `dnl')
+ define(`bldMAN_INSTALL_CMD',
+ `ifdef(`confDONT_INSTALL_CATMAN', `dnl',
+-` ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}; else :; fi ')
+- ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).`${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'')
++` ifdef(`confMKDIR', `if [ ! -d "`${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}" ]; then confMKDIR -p "`${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}"; else :; fi ')
++ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).`${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' "`${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}''")
+ ifdef(`confINSTALL_RAWMAN',
+-` ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}; else :; fi ')
+- ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).bldGET_MAN_SOURCE_NUM($1) `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}'/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'', `dnl')'
++` ifdef(`confMKDIR', `if [ ! -d "`${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}'" ]; then confMKDIR -p "`${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}'"; else :; fi ')
++ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).bldGET_MAN_SOURCE_NUM($1) "`${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}'/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}''", `dnl')'
+ )dnl
+ bldFOREACH(`bldMAN_INSTALL_CMD(', `bldMAN_PAGES')
+ ifdef(`confNO_MAN_INSTALL', `divert(0)', `dnl')
+diff -Nru sendmail-8.14.3.orig/libmilter/Makefile.m4 sendmail-8.14.3/libmilter/Makefile.m4
+--- sendmail-8.14.3.orig/libmilter/Makefile.m4 2008-04-08 07:23:44.000000000 +0200
++++ sendmail-8.14.3/libmilter/Makefile.m4 2009-09-20 10:50:36.000000000 +0200
+@@ -32,9 +32,9 @@
+ MFAPI= ${SRCDIR}/inc`'lude/libmilter/mfapi.h
+ MFDEF= ${SRCDIR}/inc`'lude/libmilter/mfdef.h
+ install-mfapi: ${MFAPI}
+- if [ ! -d ${DESTDIR}${INCLUDEDIR}/libmilter ]; then mkdir -p ${DESTDIR}${INCLUDEDIR}/libmilter; else :; fi
+- ${INSTALL} -c -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} ${MFAPI} ${DESTDIR}${INCLUDEDIR}/libmilter/mfapi.h
+- ${INSTALL} -c -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} ${MFDEF} ${DESTDIR}${INCLUDEDIR}/libmilter/mfdef.h
++ if [ ! -d "${DESTDIR}${INCLUDEDIR}/libmilter" ]; then mkdir -p "${DESTDIR}${INCLUDEDIR}/libmilter"; else :; fi
++ ${INSTALL} -c -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} ${MFAPI} "${DESTDIR}${INCLUDEDIR}/libmilter/mfapi.h"
++ ${INSTALL} -c -o ${INCOWN} -g ${INCGRP} -m ${INCMODE} ${MFDEF} "${DESTDIR}${INCLUDEDIR}/libmilter/mfdef.h"
+ divert(0)
+
+ bldFINISH
+diff -Nru sendmail-8.14.3.orig/mail.local/Makefile.m4 sendmail-8.14.3/mail.local/Makefile.m4
+--- sendmail-8.14.3.orig/mail.local/Makefile.m4 2006-06-28 23:08:02.000000000 +0200
++++ sendmail-8.14.3/mail.local/Makefile.m4 2009-09-20 10:56:24.000000000 +0200
+@@ -30,7 +30,7 @@
+ force-install: install-mail.local ifdef(`confNO_MAN_BUILD',, `install-docs')
+
+ install-mail.local: mail.local
+- ${INSTALL} -c -o ${UBINOWN} -g ${UBINGRP} -m ${UBINMODE} mail.local ${DESTDIR}${EBINDIR}
++ ${INSTALL} -c -o ${UBINOWN} -g ${UBINGRP} -m ${UBINMODE} mail.local "${DESTDIR}${EBINDIR}"
+ divert
+
+ bldFINISH
+diff -Nru sendmail-8.14.3.orig/rmail/Makefile.m4 sendmail-8.14.3/rmail/Makefile.m4
+--- sendmail-8.14.3.orig/rmail/Makefile.m4 2006-06-28 23:08:04.000000000 +0200
++++ sendmail-8.14.3/rmail/Makefile.m4 2009-09-20 10:55:29.000000000 +0200
+@@ -31,7 +31,7 @@
+ force-install: install-rmail ifdef(`confNO_MAN_BUILD',, `install-docs')
+
+ install-rmail: rmail
+- ${INSTALL} -c -o ${UBINOWN} -g ${UBINGRP} -m ${UBINMODE} rmail ${DESTDIR}${UBINDIR}
++ ${INSTALL} -c -o ${UBINOWN} -g ${UBINGRP} -m ${UBINMODE} rmail "${DESTDIR}${UBINDIR}"
+ divert
+
+ bldFINISH
+
+--- a/sendmail/Makefile.m4 2020-08-10 23:14:23.209900406 -0400
++++ b/sendmail/Makefile.m4 2020-08-10 23:23:51.272863753 -0400
+@@ -43,21 +43,21 @@
+ statistics:
+ ${CP} /dev/null statistics
+
+-${DESTDIR}/etc/mail/submit.cf:
++${DESTDIR}/etc/mail/submit.cf:
+ @echo "Please read INSTALL if anything fails while installing the binary."
+ @echo "${DESTDIR}/etc/mail/submit.cf will be installed now."
+ cd ${SRCDIR}/cf/cf && make install-submit-cf
+
+ MSPQ=ifdef(`confMSP_QUEUE_DIR', `confMSP_QUEUE_DIR', `/var/spool/clientmqueue')
+
+-${DESTDIR}${MSPQ}:
++${DESTDIR}${MSPQ}:
+ @echo "Please read INSTALL if anything fails while installing the binary."
+ @echo "You must have set up a new user ${MSPQOWN} and a new group ${GBINGRP}"
+ @echo "as explained in sendmail/SECURITY."
+- mkdir -p ${DESTDIR}${MSPQ}
+- chown ${MSPQOWN} ${DESTDIR}${MSPQ}
+- chgrp ${GBINGRP} ${DESTDIR}${MSPQ}
+- chmod 0770 ${DESTDIR}${MSPQ}
++ mkdir -p "${DESTDIR}${MSPQ}"
++ chown ${MSPQOWN} "${DESTDIR}${MSPQ}"
++ chgrp ${GBINGRP} "${DESTDIR}${MSPQ}"
++ chmod 0770 "${DESTDIR}${MSPQ}"
+
+ divert(0)
diff --git a/mail-filter/libmilter/libmilter-1.0.2_p4-r1.ebuild b/mail-filter/libmilter/libmilter-1.0.2_p4-r1.ebuild
new file mode 100644
index 000000000000..789627aa26f6
--- /dev/null
+++ b/mail-filter/libmilter/libmilter-1.0.2_p4-r1.ebuild
@@ -0,0 +1,145 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Note: please bump this together with mail-mta/sendmail and app-shells/smrsh
+
+VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/sendmail.asc"
+inherit toolchain-funcs verify-sig
+
+# This library is part of sendmail, but it does not share the version number with it.
+# In order to find the right libmilter version number, check SMFI_VERSION definition
+# that can be found in ${S}/include/libmilter/mfapi.h (see also SM_LM_VRS_* defines).
+# For example, version 1.0.1 has a SMFI_VERSION of 0x01000001.
+#
+# See check in src_prepare too.
+SENDMAIL_VER=8.18.1
+
+DESCRIPTION="The Sendmail Filter API (Milter)"
+HOMEPAGE="https://www.proofpoint.com/us/products/email-protection/open-source-email-solution"
+if [[ -n $(ver_cut 4 ${SENDMAIL_VER}) ]] ; then
+ # Snapshots have an extra version component (e.g. 8.17.1 vs 8.17.1.9)
+ SRC_URI="
+ https://ftp.sendmail.org/snapshots/sendmail.${SENDMAIL_VER}.tar.gz
+ verify-sig? ( https://ftp.sendmail.org/snapshots/sendmail.${SENDMAIL_VER}.tar.gz.sig )
+ "
+fi
+SRC_URI+="
+ https://ftp.sendmail.org/sendmail.${SENDMAIL_VER}.tar.gz
+ verify-sig? ( https://ftp.sendmail.org/sendmail.${SENDMAIL_VER}.tar.gz.sig )
+"
+SRC_URI+="
+ https://ftp.sendmail.org/past-releases/sendmail.${SENDMAIL_VER}.tar.gz
+ verify-sig? ( https://ftp.sendmail.org/past-releases/sendmail.${SENDMAIL_VER}.tar.gz.sig )
+"
+S="${WORKDIR}/sendmail-${SENDMAIL_VER}"
+
+LICENSE="Sendmail"
+# We increment _pN when a new sendmail tarball comes out and change the actual
+# "main version" (1.0.2 at time of writing) when the version
+# of libmilter included in the tarball changes.
+# We used to use $(ver_cut 1-3) here (assuming ABI stability between sendmail
+# versions) but that doesn't seem to apply for sendmail snapshots.
+SLOT="0/${PV}"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="poll"
+
+BDEPEND="
+ sys-devel/m4
+ verify-sig? ( ~sec-keys/openpgp-keys-sendmail-20250220 )
+"
+
+# build system patch copied from sendmail ebuild
+PATCHES=(
+ "${FILESDIR}"/sendmail-8.16.1-build-system.patch
+ "${FILESDIR}"/${PN}-sharedlib.patch
+ "${FILESDIR}"/${PN}-1.0.2_p3-c23-bool.patch
+ "${FILESDIR}"/${PN}-1.0.2_p4-systemd-socket-activation.patch
+)
+
+src_prepare() {
+ default
+
+ extract_version_from_source() {
+ # Extract "# define SMFI_VERSION 0x01000002" from include/libmilter/mfapi.h
+ local actual_libmilter_ver=$(grep -o -E -m 1 "0[xX][0-9a-fA-F]+" include/libmilter/mfapi.h)
+
+ # SM_LM_VRS_MAJOR(v) (((v) & 0x7f000000) >> 24)
+ local actual_libmilter_ver_major=$(((actual_libmilter_ver & 0x7f000000) >> 24))
+
+ # SM_LM_VRS_MINOR(v) (((v) & 0x007fff00) >> 8)
+ local actual_libmilter_ver_minor=$(((actual_libmilter_ver & 0x007fff00) >> 8))
+
+ # SM_LM_VRS_PLVL(v) ((v) & 0x0000007f)
+ local actual_libmilter_ver_plvl=$((actual_libmilter_ver & 0x0000007f))
+
+ einfo "Extracted version (hex): ${actual_libmilter_ver}"
+ einfo "Extracted version (major): ${actual_libmilter_ver_major}"
+ einfo "Extracted version (minor): ${actual_libmilter_ver_minor}"
+ einfo "Extracted version (plvl): ${actual_libmilter_ver_plvl}"
+ einfo "Extracted version (final): ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl}"
+
+ echo ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl}
+ }
+
+ local actual_libmilter_ver_final=$(extract_version_from_source)
+ if [[ $(ver_cut 1-3) != ${actual_libmilter_ver_final} ]] ; then
+ eerror "Ebuild version ${PV} does not match detected version ${actual_libmilter_ver_final}!"
+ eerror "Expected version: $(ver_cut 1-3)"
+ eerror "Detected version: ${actual_libmilter_ver_final}"
+ die "Package version ${PV} appears to be incorrect. Please check the source or rename the ebuild."
+ fi
+
+ local ENVDEF="-DNETUNIX -DNETINET -DNETINET6 -DHAS_GETHOSTBYNAME2=1"
+ use poll && ENVDEF+=" -DSM_CONF_POLL=1"
+
+ if use elibc_musl; then
+ ENVDEF+=" -DNEEDSGETIPNODE"
+ eapply "${FILESDIR}"/${PN}-musl-stack-size.patch
+ eapply "${FILESDIR}"/${PN}-musl-disable-cdefs.patch
+ fi
+
+ sed -e "s|@@CC@@|$(tc-getCC)|" \
+ -e "s|@@CFLAGS@@|${CFLAGS}|" \
+ -e "s|@@ENVDEF@@|${ENVDEF}|" \
+ -e "s|@@LDFLAGS@@|${LDFLAGS}|" \
+ "${FILESDIR}"/gentoo.config.m4 > devtools/Site/site.config.m4 \
+ || die "failed to generate site.config.m4"
+}
+
+src_compile() {
+ emake -j1 -C libmilter AR="$(tc-getAR)" MILTER_SOVER=${PV}
+}
+
+src_install() {
+ dodir /usr/$(get_libdir)
+
+ local emakeargs=(
+ DESTDIR="${D}" LIBDIR="/usr/$(get_libdir)"
+ MANROOT=/usr/share/man/man
+ SBINOWN=root SBINGRP=0 UBINOWN=root UBINGRP=0
+ LIBOWN=root LIBGRP=0 GBINOWN=root GBINGRP=0
+ MANOWN=root MANGRP=0 INCOWN=root INCGRP=0
+ MSPQOWN=root CFOWN=root CFGRP=0
+ MILTER_SOVER="$(ver_cut 1-3)"
+ )
+ emake -C obj.*/libmilter "${emakeargs[@]}" install
+
+ dodoc libmilter/README
+
+ docinto html
+ dodoc -r libmilter/docs/.
+
+ if [[ ${PV} != $(ver_cut 1-3) ]] ; then
+ # Move the .so file to the more specific name so it becomes a chain like
+ # .so -> .so.1.0.2 -> .so.1.0.2_p2, otherwise ldconfig can get confused
+ # (bug #864563).
+ #
+ # See comment above ${SLOT} definition above.
+ mv "${ED}"/usr/$(get_libdir)/"${PN}.so.$(ver_cut 1-3)" "${ED}"/usr/$(get_libdir)/${PN}.so.${PV}
+ dosym ${PN}.so.${PV} /usr/$(get_libdir)/${PN}.so.$(ver_cut 1-3)
+ fi
+
+ find "${ED}" -name '*.a' -delete || die
+}
diff --git a/mail-filter/libmilter/libmilter-1.0.2_p4.ebuild b/mail-filter/libmilter/libmilter-1.0.2_p4.ebuild
new file mode 100644
index 000000000000..280aa56514b2
--- /dev/null
+++ b/mail-filter/libmilter/libmilter-1.0.2_p4.ebuild
@@ -0,0 +1,135 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Note: please bump this together with mail-mta/sendmail and app-shells/smrsh
+
+inherit toolchain-funcs
+
+# This library is part of sendmail, but it does not share the version number with it.
+# In order to find the right libmilter version number, check SMFI_VERSION definition
+# that can be found in ${S}/include/libmilter/mfapi.h (see also SM_LM_VRS_* defines).
+# For example, version 1.0.1 has a SMFI_VERSION of 0x01000001.
+#
+# See check in src_prepare too.
+SENDMAIL_VER=8.18.1
+
+DESCRIPTION="The Sendmail Filter API (Milter)"
+HOMEPAGE="https://www.proofpoint.com/us/products/email-protection/open-source-email-solution"
+if [[ -n $(ver_cut 4 ${SENDMAIL_VER}) ]] ; then
+ # Snapshots have an extra version component (e.g. 8.17.1 vs 8.17.1.9)
+ SRC_URI="https://ftp.sendmail.org/snapshots/sendmail.${SENDMAIL_VER}.tar.gz"
+fi
+SRC_URI+=" https://ftp.sendmail.org/sendmail.${SENDMAIL_VER}.tar.gz"
+SRC_URI+=" https://ftp.sendmail.org/past-releases/sendmail.${SENDMAIL_VER}.tar.gz"
+S="${WORKDIR}/sendmail-${SENDMAIL_VER}"
+
+LICENSE="Sendmail"
+# We increment _pN when a new sendmail tarball comes out and change the actual
+# "main version" (1.0.2 at time of writing) when the version
+# of libmilter included in the tarball changes.
+# We used to use $(ver_cut 1-3) here (assuming ABI stability between sendmail
+# versions) but that doesn't seem to apply for sendmail snapshots.
+SLOT="0/${PV}"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+IUSE="ipv6 poll"
+
+RDEPEND="!<mail-mta/sendmail-8.16.1"
+BDEPEND="sys-devel/m4"
+
+# build system patch copied from sendmail ebuild
+PATCHES=(
+ "${FILESDIR}"/sendmail-8.16.1-build-system.patch
+ "${FILESDIR}"/${PN}-sharedlib.patch
+ "${FILESDIR}"/${PN}-1.0.2_p3-c23-bool.patch
+)
+
+src_prepare() {
+ default
+
+ extract_version_from_source() {
+ # Extract "# define SMFI_VERSION 0x01000002" from include/libmilter/mfapi.h
+ local actual_libmilter_ver=$(grep -o -E -m 1 "0[xX][0-9a-fA-F]+" include/libmilter/mfapi.h)
+
+ # SM_LM_VRS_MAJOR(v) (((v) & 0x7f000000) >> 24)
+ local actual_libmilter_ver_major=$(((actual_libmilter_ver & 0x7f000000) >> 24))
+
+ # SM_LM_VRS_MINOR(v) (((v) & 0x007fff00) >> 8)
+ local actual_libmilter_ver_minor=$(((actual_libmilter_ver & 0x007fff00) >> 8))
+
+ # SM_LM_VRS_PLVL(v) ((v) & 0x0000007f)
+ local actual_libmilter_ver_plvl=$((actual_libmilter_ver & 0x0000007f))
+
+ einfo "Extracted version (hex): ${actual_libmilter_ver}"
+ einfo "Extracted version (major): ${actual_libmilter_ver_major}"
+ einfo "Extracted version (minor): ${actual_libmilter_ver_minor}"
+ einfo "Extracted version (plvl): ${actual_libmilter_ver_plvl}"
+ einfo "Extracted version (final): ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl}"
+
+ echo ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl}
+ }
+
+ local actual_libmilter_ver_final=$(extract_version_from_source)
+ if [[ $(ver_cut 1-3) != ${actual_libmilter_ver_final} ]] ; then
+ eerror "Ebuild version ${PV} does not match detected version ${actual_libmilter_ver_final}!"
+ eerror "Expected version: $(ver_cut 1-3)"
+ eerror "Detected version: ${actual_libmilter_ver_final}"
+ die "Package version ${PV} appears to be incorrect. Please check the source or rename the ebuild."
+ fi
+
+ local ENVDEF="-DNETUNIX -DNETINET -DHAS_GETHOSTBYNAME2=1"
+
+ use ipv6 && ENVDEF+=" -DNETINET6"
+ use poll && ENVDEF+=" -DSM_CONF_POLL=1"
+
+ if use elibc_musl; then
+ use ipv6 && ENVDEF+=" -DNEEDSGETIPNODE"
+
+ eapply "${FILESDIR}"/${PN}-musl-stack-size.patch
+ eapply "${FILESDIR}"/${PN}-musl-disable-cdefs.patch
+ fi
+
+ sed -e "s|@@CC@@|$(tc-getCC)|" \
+ -e "s|@@CFLAGS@@|${CFLAGS}|" \
+ -e "s|@@ENVDEF@@|${ENVDEF}|" \
+ -e "s|@@LDFLAGS@@|${LDFLAGS}|" \
+ "${FILESDIR}"/gentoo.config.m4 > devtools/Site/site.config.m4 \
+ || die "failed to generate site.config.m4"
+}
+
+src_compile() {
+ emake -j1 -C libmilter AR="$(tc-getAR)" MILTER_SOVER=${PV}
+}
+
+src_install() {
+ dodir /usr/$(get_libdir)
+
+ local emakeargs=(
+ DESTDIR="${D}" LIBDIR="/usr/$(get_libdir)"
+ MANROOT=/usr/share/man/man
+ SBINOWN=root SBINGRP=0 UBINOWN=root UBINGRP=0
+ LIBOWN=root LIBGRP=0 GBINOWN=root GBINGRP=0
+ MANOWN=root MANGRP=0 INCOWN=root INCGRP=0
+ MSPQOWN=root CFOWN=root CFGRP=0
+ MILTER_SOVER="$(ver_cut 1-3)"
+ )
+ emake -C obj.*/libmilter "${emakeargs[@]}" install
+
+ dodoc libmilter/README
+
+ docinto html
+ dodoc -r libmilter/docs/.
+
+ if [[ ${PV} != $(ver_cut 1-3) ]] ; then
+ # Move the .so file to the more specific name so it becomes a chain like
+ # .so -> .so.1.0.2 -> .so.1.0.2_p2, otherwise ldconfig can get confused
+ # (bug #864563).
+ #
+ # See comment above ${SLOT} definition above.
+ mv "${ED}"/usr/$(get_libdir)/"${PN}.so.$(ver_cut 1-3)" "${ED}"/usr/$(get_libdir)/${PN}.so.${PV}
+ dosym ${PN}.so.${PV} /usr/$(get_libdir)/${PN}.so.$(ver_cut 1-3)
+ fi
+
+ find "${ED}" -name '*.a' -delete || die
+}
diff --git a/mail-filter/libmilter/libmilter-1.0.2_p5.ebuild b/mail-filter/libmilter/libmilter-1.0.2_p5.ebuild
new file mode 100644
index 000000000000..34f58ebc7514
--- /dev/null
+++ b/mail-filter/libmilter/libmilter-1.0.2_p5.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Note: please bump this together with mail-mta/sendmail and app-shells/smrsh
+
+VERIFY_SIG_OPENPGP_KEY_PATH="/usr/share/openpgp-keys/sendmail.asc"
+inherit toolchain-funcs verify-sig
+
+# This library is part of sendmail, but it does not share the version number with it.
+# In order to find the right libmilter version number, check SMFI_VERSION definition
+# that can be found in ${S}/include/libmilter/mfapi.h (see also SM_LM_VRS_* defines).
+# For example, version 1.0.1 has a SMFI_VERSION of 0x01000001.
+#
+# See check in src_prepare too.
+SENDMAIL_VER=8.18.2
+
+DESCRIPTION="The Sendmail Filter API (Milter)"
+HOMEPAGE="https://www.proofpoint.com/us/products/email-protection/open-source-email-solution"
+if [[ -n $(ver_cut 4 ${SENDMAIL_VER}) ]] ; then
+ # Snapshots have an extra version component (e.g. 8.17.1 vs 8.17.1.9)
+ SRC_URI="
+ https://ftp.sendmail.org/snapshots/sendmail.${SENDMAIL_VER}.tar.gz
+ verify-sig? ( https://ftp.sendmail.org/snapshots/sendmail.${SENDMAIL_VER}.tar.gz.sig )
+ "
+fi
+SRC_URI+="
+ https://ftp.sendmail.org/sendmail.${SENDMAIL_VER}.tar.gz
+ verify-sig? ( https://ftp.sendmail.org/sendmail.${SENDMAIL_VER}.tar.gz.sig )
+"
+SRC_URI+="
+ https://ftp.sendmail.org/past-releases/sendmail.${SENDMAIL_VER}.tar.gz
+ verify-sig? ( https://ftp.sendmail.org/past-releases/sendmail.${SENDMAIL_VER}.tar.gz.sig )
+"
+S="${WORKDIR}/sendmail-${SENDMAIL_VER}"
+
+LICENSE="Sendmail"
+# We increment _pN when a new sendmail tarball comes out and change the actual
+# "main version" (1.0.2 at time of writing) when the version
+# of libmilter included in the tarball changes.
+# We used to use $(ver_cut 1-3) here (assuming ABI stability between sendmail
+# versions) but that doesn't seem to apply for sendmail snapshots.
+SLOT="0/${PV}"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+IUSE="poll"
+
+BDEPEND="
+ sys-devel/m4
+ verify-sig? ( ~sec-keys/openpgp-keys-sendmail-20250220 )
+"
+
+# build system patch copied from sendmail ebuild
+PATCHES=(
+ "${FILESDIR}"/sendmail-8.16.1-build-system.patch
+ "${FILESDIR}"/${PN}-sharedlib.patch
+ "${FILESDIR}"/${PN}-1.0.2_p4-systemd-socket-activation.patch
+)
+
+src_prepare() {
+ default
+
+ extract_version_from_source() {
+ # Extract "# define SMFI_VERSION 0x01000002" from include/libmilter/mfapi.h
+ local actual_libmilter_ver=$(grep -o -E -m 1 "0[xX][0-9a-fA-F]+" include/libmilter/mfapi.h)
+
+ # SM_LM_VRS_MAJOR(v) (((v) & 0x7f000000) >> 24)
+ local actual_libmilter_ver_major=$(((actual_libmilter_ver & 0x7f000000) >> 24))
+
+ # SM_LM_VRS_MINOR(v) (((v) & 0x007fff00) >> 8)
+ local actual_libmilter_ver_minor=$(((actual_libmilter_ver & 0x007fff00) >> 8))
+
+ # SM_LM_VRS_PLVL(v) ((v) & 0x0000007f)
+ local actual_libmilter_ver_plvl=$((actual_libmilter_ver & 0x0000007f))
+
+ einfo "Extracted version (hex): ${actual_libmilter_ver}"
+ einfo "Extracted version (major): ${actual_libmilter_ver_major}"
+ einfo "Extracted version (minor): ${actual_libmilter_ver_minor}"
+ einfo "Extracted version (plvl): ${actual_libmilter_ver_plvl}"
+ einfo "Extracted version (final): ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl}"
+
+ echo ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl}
+ }
+
+ local actual_libmilter_ver_final=$(extract_version_from_source)
+ if [[ $(ver_cut 1-3) != ${actual_libmilter_ver_final} ]] ; then
+ eerror "Ebuild version ${PV} does not match detected version ${actual_libmilter_ver_final}!"
+ eerror "Expected version: $(ver_cut 1-3)"
+ eerror "Detected version: ${actual_libmilter_ver_final}"
+ die "Package version ${PV} appears to be incorrect. Please check the source or rename the ebuild."
+ fi
+
+ local ENVDEF="-DNETUNIX -DNETINET -DNETINET6 -DHAS_GETHOSTBYNAME2=1"
+ use poll && ENVDEF+=" -DSM_CONF_POLL=1"
+
+ if use elibc_musl; then
+ ENVDEF+=" -DNEEDSGETIPNODE"
+ eapply "${FILESDIR}"/${PN}-musl-stack-size.patch
+ eapply "${FILESDIR}"/${PN}-musl-disable-cdefs.patch
+ fi
+
+ sed -e "s|@@CC@@|$(tc-getCC)|" \
+ -e "s|@@CFLAGS@@|${CFLAGS}|" \
+ -e "s|@@ENVDEF@@|${ENVDEF}|" \
+ -e "s|@@LDFLAGS@@|${LDFLAGS}|" \
+ "${FILESDIR}"/gentoo.config.m4 > devtools/Site/site.config.m4 \
+ || die "failed to generate site.config.m4"
+}
+
+src_compile() {
+ emake -j1 -C libmilter AR="$(tc-getAR)" MILTER_SOVER=${PV}
+}
+
+src_install() {
+ dodir /usr/$(get_libdir)
+
+ local emakeargs=(
+ DESTDIR="${D}" LIBDIR="/usr/$(get_libdir)"
+ MANROOT=/usr/share/man/man
+ SBINOWN=root SBINGRP=0 UBINOWN=root UBINGRP=0
+ LIBOWN=root LIBGRP=0 GBINOWN=root GBINGRP=0
+ MANOWN=root MANGRP=0 INCOWN=root INCGRP=0
+ MSPQOWN=root CFOWN=root CFGRP=0
+ MILTER_SOVER="$(ver_cut 1-3)"
+ )
+ emake -C obj.*/libmilter "${emakeargs[@]}" install
+
+ dodoc libmilter/README
+
+ docinto html
+ dodoc -r libmilter/docs/.
+
+ if [[ ${PV} != $(ver_cut 1-3) ]] ; then
+ # Move the .so file to the more specific name so it becomes a chain like
+ # .so -> .so.1.0.2 -> .so.1.0.2_p2, otherwise ldconfig can get confused
+ # (bug #864563).
+ #
+ # See comment above ${SLOT} definition above.
+ mv "${ED}"/usr/$(get_libdir)/"${PN}.so.$(ver_cut 1-3)" "${ED}"/usr/$(get_libdir)/${PN}.so.${PV}
+ dosym ${PN}.so.${PV} /usr/$(get_libdir)/${PN}.so.$(ver_cut 1-3)
+ fi
+
+ find "${ED}" -name '*.a' -delete || die
+}
diff --git a/mail-filter/libmilter/metadata.xml b/mail-filter/libmilter/metadata.xml
new file mode 100644
index 000000000000..3000f72af295
--- /dev/null
+++ b/mail-filter/libmilter/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>cfuga@cfuga.mx</email>
+ <name>Cristian Othón Martínez Vera</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <use>
+ <flag name="poll">Use poll instead of select</flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:sendmail:sendmail</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>