Index | Thread | Search

From:
"James J. Lippard" <lippard-openbsd@discord.org>
Subject:
mail/amavisd-new update to 2.14.0
To:
ports@openbsd.org
Date:
Mon, 22 Jun 2026 08:04:22 -0700

Download raw body.

Thread
The mail/amavisd-new port is broken in OpenBSD 7.9 and also contains
the vulnerability CVE-2024-28054 (MIME boundary confusion which allows
bypassing scanners for attachments). The vuln is fixed in 2.13.1 and
current stable release is 2.14.0.  Attached is a unified diff that
modifies Makefile and the existing patches to work on 2.14.0. (It's
also possible to add a few lines to do some pledge and unveil
restrictions in Amavis.pm which I'm running on my systems, but I've
left that out of this minimal set of changes to make it work.)

Sent at giovanni's request since he no longer uses amavisd.

-- 
Jim Lippard        lippard-openbsd@discord.org       http://www.discord.org/
GPG Key ID: 0x99FD5CD6


diff -urN ports/mail/amavisd-new/Makefile ports/mystuff/mail/amavisd-new/Makefile
--- ports/mail/amavisd-new/Makefile	Tue Sep 26 05:28:09 2023
+++ ports/mystuff/mail/amavisd-new/Makefile	Sat Jun 20 16:40:26 2026
@@ -1,13 +1,13 @@
 COMMENT-main=		interface between mailer MTA and content checkers
 COMMENT-utils=		utilities to monitor amavisd-new server
 
-V=			2.12.2
+V=			2.14.0
 DISTNAME=		amavis-v${V}
 PKGNAME-main=		amavisd-new-${V}
 PKGNAME-utils=		amavisd-new-utils-${V}
 CATEGORIES=		mail security
-REVISION-main=		0
-REVISION-utils=		0
+#REVISION-main=		0
+#REVISION-utils=		0
 
 HOMEPAGE=		http://www.amavis.org/
 MAINTAINER=		Giovanni Bechis <giovanni@openbsd.org>
@@ -46,38 +46,67 @@
 			devel/p5-ZMQ-LibZMQ3 \
 			mail/amavisd-new
 
-NO_BUILD=		Yes
+NO_BUILD=               Yes
 NO_TEST=		Yes
 
 PKG_ARCH=		*
 
 MULTI_PACKAGES=		-main -utils
 
-pre-configure:
-	${SUBST_CMD} ${WRKSRC}/amavis-mc
-	@perl -pi -e 's,/var/amavis,/${VARBASE}/amavisd,g' ${WRKSRC}/amavisd-*
-	@perl -pi -e "s,= 'vscan',= '_vscan',g" ${WRKSRC}/amavisd-signer \
-		${WRKSRC}/amavisd.conf ${WRKSRC}/amavisd.conf-default
+P5SITE=         libdata/perl5/site_perl
 
+post-extract:
+	${SUBST_CMD} ${WRKSRC}/bin/amavis-mc
+	@perl -pi -e 's,/var/amavis,/${VARBASE}/amavisd,g' ${WRKSRC}/bin/amavisd*
+	@perl -pi -e "s,= 'vscan',= '_vscan',g" ${WRKSRC}/bin/amavisd-signer \
+		${WRKSRC}/conf/amavisd.conf ${WRKSRC}/conf/amavisd.conf-default
+
 do-install:
-	cd ${WRKSRC}; ${INSTALL_SCRIPT} amavisd amavis-mc amavis-services \
-		${PREFIX}/sbin/
-	cd ${WRKSRC}; ${INSTALL_SCRIPT} amavisd-agent amavisd-nanny \
+	# 1. Install Utils Binaries (Tracked under PLIST-utils)
+	${INSTALL_SCRIPT_DIR} ${PREFIX}/sbin ${PREFIX}/bin
+	${INSTALL_SCRIPT} ${WRKSRC}/bin/amavis-mc ${WRKSRC}/bin/amavis-services ${PREFIX}/sbin/
+
+	cd ${WRKSRC}/bin && ${INSTALL_SCRIPT} amavisd-agent amavisd-nanny \
 		amavisd-release amavisd-signer amavisd-snmp-subagent \
 		amavisd-submit amavisd-status amavisd-snmp-subagent-zmq \
-		p0f-analyzer.pl ${PREFIX}/bin/
-	${INSTALL_DATA} ${WRKSRC}/JpegTester.pm \
-			${PREFIX}/libdata/perl5/site_perl/JpegTester.pm
-	${INSTALL_DATA} ${WRKSRC}/TinyRedis.pm \
-			${PREFIX}/libdata/perl5/site_perl/TinyRedis.pm
+		${PREFIX}/bin/
+	${INSTALL_SCRIPT} ${WRKSRC}/contrib/p0f-analyzer.pl ${PREFIX}/bin/
+
+	# 2. Install Main Daemon Binary (Tracked under PLIST-main)
+	${INSTALL_SCRIPT} ${WRKSRC}/bin/amavisd ${PREFIX}/sbin/amavisd
+
+	# 3. Install Modularized Perl Packages to OpenBSD's Proper Target Tree
+	${INSTALL_DATA_DIR} ${PREFIX}/${P5SITE}/Amavis
+	${INSTALL_DATA} ${WRKSRC}/contrib/JpegTester.pm ${PREFIX}/${P5SITE}/JpegTester.pm
+
+	# Copy the core library master file
+	${INSTALL_DATA} ${WRKSRC}/lib/Amavis.pm ${PREFIX}/${P5SITE}/Amavis.pm
+
+	# Recursively find and map all nested *.pm components inside lib/Amavis/
+	cd ${WRKSRC}/lib/Amavis && \
+		find . -type d -exec ${INSTALL_DATA_DIR} ${PREFIX}/${P5SITE}/Amavis/{} \; && \
+		find . -type f -name "*.pm" -exec ${INSTALL_DATA} {} ${PREFIX}/${P5SITE}/Amavis/{} \;
+
+	# Recursively install lib/Mail/ components if they exist
+	if [ -d ${WRKSRC}/lib/Mail ]; then \
+		cd ${WRKSRC}/lib/Mail && \
+		find . -type d -exec ${INSTALL_DATA_DIR} ${PREFIX}/${P5SITE}/Mail/{} \; && \
+		find . -type f -name "*.pm" -exec ${INSTALL_DATA} {} ${PREFIX}/${P5SITE}/Mail/{} \; ; \
+	fi
+
+	# 4. Install Shared Documentation
 	${INSTALL_DATA_DIR} ${PREFIX}/share/doc/amavisd-new
-	cd ${WRKSRC}; ${INSTALL_DATA} AAAREADME.first INSTALL LDAP.schema \
-		LDAP.ldif LICENSE MANIFEST README_FILES/README.* RELEASE_NOTES \
+	cd ${WRKSRC}; ${INSTALL_DATA} AAAREADME.first contrib/LDAP.schema \
+		contrib/LDAP.ldif LICENSE MANIFEST.old README_FILES/README.* RELEASE_NOTES \
 		${PREFIX}/share/doc/amavisd-new/
+
+	# 5. Install SNMP MIB Data
 	${INSTALL_DATA_DIR} ${PREFIX}/share/snmp/mibs
-	${INSTALL_DATA} ${WRKSRC}/AMAVIS-MIB.txt ${PREFIX}/share/snmp/mibs
+	${INSTALL_DATA} ${WRKSRC}/AMAVIS-MIB.txt ${PREFIX}/share/snmp/mibs/
+
+	# 6. Install Sample Configurations
 	${INSTALL_DATA_DIR} ${PREFIX}/share/examples/amavisd-new
-	cd ${WRKSRC}; ${INSTALL_DATA} amavisd*.conf amavisd.conf-default \
+	cd ${WRKSRC}/conf; ${INSTALL_DATA} amavisd*.conf amavisd.conf-default \
 		${PREFIX}/share/examples/amavisd-new/
 
 .include <bsd.port.mk>
diff -urN ports/mail/amavisd-new/distinfo ports/mystuff/mail/amavisd-new/distinfo
--- ports/mail/amavisd-new/distinfo	Wed Jun 15 01:16:30 2022
+++ ports/mystuff/mail/amavisd-new/distinfo	Sat Jun 20 16:06:19 2026
@@ -1,2 +1,2 @@
-SHA256 (amavis-v2.12.2.tar.bz2) = nbYZAQoxA1HFf/GDhc8G3W4GFgQS0+Uw8/6bG6IZ5Fc=
-SIZE (amavis-v2.12.2.tar.bz2) = 874946
+SHA256 (amavis-v2.14.0.tar.bz2) = aXPuWCsZNHnMsOfTda0ggFEjbuAxihcHHSYzl6KCMYk=
+SIZE (amavis-v2.14.0.tar.bz2) = 898335
diff -urN ports/mail/amavisd-new/patches/patch-amavis-mc ports/mystuff/mail/amavisd-new/patches/patch-amavis-mc
--- ports/mail/amavisd-new/patches/patch-amavis-mc	Fri Mar 11 12:34:32 2022
+++ ports/mystuff/mail/amavisd-new/patches/patch-amavis-mc	Wed Dec 31 17:00:00 1969
@@ -1,23 +0,0 @@
---- amavis-mc.orig	Tue May  6 13:56:46 2014
-+++ amavis-mc	Mon Jul 14 10:15:13 2014
-@@ -70,16 +70,16 @@ use vars qw(@path @services $daemon_user $daemon_group
- 
- ### USER CONFIGURABLE:
- 
--$daemon_user  = 'vscan';
--$daemon_group = 'vscan';
-+$daemon_user  = '_vscan';
-+$daemon_group = '_vscan';
- 
--$pid_file = '/var/amavis/amavis-mc.pid';
-+$pid_file = '/var/amavisd/amavis-mc.pid';
- 
- $log_level = 0;
- $syslog_ident = 'amavis-mc';
- $syslog_facility = LOG_MAIL;
- 
--@path = qw(/usr/local/sbin /usr/local/bin /usr/sbin /sbin /usr/bin /bin);
-+@path = qw(${TRUEPREFIX}/sbin ${TRUEPREFIX}/bin /usr/sbin /sbin /usr/bin /bin);
- 
- @services = (
-   { cmd => 'amavis-services msg-forwarder' },
diff -urN ports/mail/amavisd-new/patches/patch-amavis-services ports/mystuff/mail/amavisd-new/patches/patch-amavis-services
--- ports/mail/amavisd-new/patches/patch-amavis-services	Fri Mar 11 12:34:32 2022
+++ ports/mystuff/mail/amavisd-new/patches/patch-amavis-services	Sat Jun 20 16:00:49 2026
@@ -1,6 +1,6 @@
---- amavis-services.orig	Fri Jul 11 08:42:24 2014
-+++ amavis-services	Fri Jul 11 08:42:55 2014
-@@ -71,7 +71,7 @@ $log_level = 0;  # 0..5
+--- bin/amavis-services.orig	Sat Jun 20 10:32:20 2026
++++ bin/amavis-services	Sat Jun 20 10:32:43 2026
+@@ -72,7 +72,7 @@
  $syslog_facility = LOG_MAIL;
  $syslog_ident = $myproduct_name;
  
diff -urN ports/mail/amavisd-new/patches/patch-amavisd ports/mystuff/mail/amavisd-new/patches/patch-amavisd
--- ports/mail/amavisd-new/patches/patch-amavisd	Fri Mar 11 12:34:32 2022
+++ ports/mystuff/mail/amavisd-new/patches/patch-amavisd	Wed Dec 31 17:00:00 1969
@@ -1,42 +0,0 @@
-Hunks 1, 4: Disable File::LibMagic in favour of safer file(1) from base.
-Hunks 2, 5: fix DKIM signing
-
-Index: amavisd
---- amavisd.orig
-+++ amavisd
-@@ -12939,7 +12939,7 @@ sub after_chroot_init() {
-                grep(/\.pm\z/, keys %INC)) {
-     next  if !grep($_ eq $m, qw(Amavis::Conf
-       Archive::Tar Archive::Zip Compress::Zlib Compress::Raw::Zlib
--      Convert::TNEF Convert::UUlib File::LibMagic
-+      Convert::TNEF Convert::UUlib
-       MIME::Entity MIME::Parser MIME::Tools Mail::Header Mail::Internet
-       Digest::MD5 Digest::SHA Digest::SHA1 Crypt::OpenSSL::RSA
-       Authen::SASL Authen::SASL::XS Authen::SASL::Cyrus Authen::SASL::Perl
-@@ -30859,7 +30859,7 @@ sub new_SpamAssassin_instance {
- #   PREFIX            => '/usr/local',
- #   DEF_RULES_DIR     => '/usr/local/share/spamassassin',
- #   LOCAL_RULES_DIR   => '/etc/mail/spamassassin',
--#   LOCAL_STATE_DIR   => '/var/lib/spamassassin',
-+    LOCAL_STATE_DIR   => '/var/db/spamassassin',
- #see Mail::SpamAssassin man page for other options
-   };
-   if ($sa_version_num < 3.001005 && !defined $sa_args->{LOCAL_STATE_DIR})
-@@ -31634,17 +31634,8 @@ BEGIN {
-   import Amavis::Unpackers::NewFilename qw(consumed_bytes);
- }
- 
--BEGIN {
-   use vars qw($filemagic);
--  eval {
--    require File::LibMagic;
--    File::LibMagic->VERSION(1.00);
--    import File::LibMagic;
--    $filemagic = File::LibMagic->new;
--  } or do {
-     undef $filemagic;
--  };
--}
- 
- use subs @EXPORT_OK;
- 
diff -urN ports/mail/amavisd-new/patches/patch-amavisd-snmp-subagent-zmq ports/mystuff/mail/amavisd-new/patches/patch-amavisd-snmp-subagent-zmq
--- ports/mail/amavisd-new/patches/patch-amavisd-snmp-subagent-zmq	Fri Mar 11 12:34:32 2022
+++ ports/mystuff/mail/amavisd-new/patches/patch-amavisd-snmp-subagent-zmq	Wed Dec 31 17:00:00 1969
@@ -1,11 +0,0 @@
---- amavisd-snmp-subagent-zmq.orig	Fri Jul 11 10:03:13 2014
-+++ amavisd-snmp-subagent-zmq	Fri Jul 11 10:10:01 2014
-@@ -1123,7 +1123,7 @@ my $keep_running = 1;
-   if (!defined $mta_queue_dir) {  # test for access to Postfix queue directory
-     local($ENV{PATH}) = '/usr/sbin:/usr/local/sbin:/opt/postfix/sbin';
-     $! = 0;
--    $mta_queue_dir = qx(postconf -h queue_directory);
-+    $mta_queue_dir = qx(postconf -h queue_directory 2>&1);
-     if (!defined $mta_queue_dir) {
-       if ($! != 0) {
-         do_log(1, "no postfix (unable to run postconf command): $!");
diff -urN ports/mail/amavisd-new/patches/patch-amavisd_conf ports/mystuff/mail/amavisd-new/patches/patch-amavisd_conf
--- ports/mail/amavisd-new/patches/patch-amavisd_conf	Fri Mar 11 12:34:32 2022
+++ ports/mystuff/mail/amavisd-new/patches/patch-amavisd_conf	Wed Dec 31 17:00:00 1969
@@ -1,48 +0,0 @@
-Index: amavisd.conf
---- amavisd.conf.orig
-+++ amavisd.conf
-@@ -17,12 +17,12 @@ use strict;
-                         # truncation in /proc/<pid>/stat and ps -e output
- 
- $max_servers = 2;            # num of pre-forked children (2..30 is common), -m
--$daemon_user  = 'vscan';     # (no default;  customary: vscan or amavis), -u
--$daemon_group = 'vscan';     # (no default;  customary: vscan or amavis), -g
-+$daemon_user  = '_vscan';     # (no default;  customary: _vscan or amavis), -u
-+$daemon_group = '_vscan';     # (no default;  customary: _vscan or amavis), -g
- 
- $mydomain = 'example.com';   # a convenient default for other settings
- 
--# $MYHOME = '/var/amavis';   # a convenient default for other settings, -H
-+$MYHOME = '/var/amavisd';   # a convenient default for other settings, -H
- $TEMPBASE = "$MYHOME/tmp";   # working directory, needs to exist, -T
- $ENV{TMPDIR} = $TEMPBASE;    # environment variable TMPDIR, used by SA, etc.
- $QUARANTINEDIR = '/var/virusmails';  # -Q
-@@ -235,7 +235,7 @@ $banned_filename_re = new_RE(
- 
-   qr'.\.(exe|vbs|pif|scr|cpl)$'i,             # banned extension - basic
- # qr'.\.(exe|vbs|pif|scr|cpl|bat|cmd|com)$'i, # banned extension - basic+cmd
--# qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta|
-+# qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|gadget|grp|hlp|hta|
- #        inf|ini|ins|isp|js|jse|lib|lnk|mda|mdb|mde|mdt|mdw|mdz|msc|msi|
- #        msp|mst|ocx|ops|pcd|pif|prg|reg|scr|sct|shb|shs|sys|vb|vbe|vbs|vxd|
- #        wmf|wsc|wsf|wsh)$'ix,                # banned extensions - long
-@@ -319,7 +319,7 @@ $banned_filename_re = new_RE(
- @decoders = (
-   ['mail', \&do_mime_decode],
- # [[qw(asc uue hqx ync)], \&do_ascii],  # not safe
--  ['F',    \&do_uncompress, ['unfreeze', 'freeze -d', 'melt', 'fcat'] ],
-+# ['F',    \&do_uncompress, ['unfreeze', 'freeze -d', 'melt', 'fcat'] ],
-   ['Z',    \&do_uncompress, ['uncompress', 'gzip -d', 'zcat'] ],
-   ['gz',   \&do_uncompress, 'gzip -d'],
-   ['gz',   \&do_gunzip],
-@@ -338,8 +338,8 @@ $banned_filename_re = new_RE(
-            # ['/usr/local/heirloom/usr/5bin/pax', 'pax', 'gcpio', 'cpio']
-   ['deb',  \&do_ar, 'ar'],
- # ['a',    \&do_ar, 'ar'],  # unpacking .a seems an overkill
--  ['rar',  \&do_unrar, ['unrar', 'rar'] ],
--  ['arj',  \&do_unarj, ['unarj', 'arj'] ],
-+  ['rar',  \&do_7zip, ['7z'] ],
-+  ['arj',  \&do_7zip, ['7z'] ],
-   ['arc',  \&do_arc,   ['nomarch', 'arc'] ],
-   ['zoo',  \&do_zoo,   ['zoo', 'unzoo'] ],
-   ['doc',  \&do_ole,   'ripole'],
diff -urN ports/mail/amavisd-new/patches/patch-amavisd_conf-default ports/mystuff/mail/amavisd-new/patches/patch-amavisd_conf-default
--- ports/mail/amavisd-new/patches/patch-amavisd_conf-default	Fri Mar 11 12:34:32 2022
+++ ports/mystuff/mail/amavisd-new/patches/patch-amavisd_conf-default	Wed Dec 31 17:00:00 1969
@@ -1,26 +0,0 @@
---- amavisd.conf-default.orig	Fri Feb 26 14:37:51 2016
-+++ amavisd.conf-default	Fri Jul  1 01:02:59 2016
-@@ -16,9 +16,9 @@ use strict;
- # $mydomain   = ... no useful default, should be set if used in expressions
- # $snmp_contact  = '';
- # $snmp_location = '';
--# $daemon_user   = undef;
--# $daemon_group  = undef;
--# $MYHOME        = '/var/amavis';
-+$daemon_user   = _vscan;
-+$daemon_group  = _vscan;
-+$MYHOME        = '/var/amavisd';
- # $TEMPBASE      = $MYHOME;                # after-default
- # $db_home       = "$MYHOME/db";           # after-default
- # $pid_file      = "$MYHOME/amavisd.pid";  # after-default
-@@ -381,8 +381,8 @@ use strict;
- ### ['tar',  \&do_tar],  # no longer supported
- #   ['deb',  \&do_ar, \$ar],
- ### ['a',    \&do_ar, \$ar],  # unpacking .a seems an overkill
--#   ['rar',  \&do_unrar, \$unrar],
--#   ['arj',  \&do_unarj, \$unarj],
-+#   ['rar',  \&do_7zip, '7z'],
-+#   ['arj',  \&do_7zip, '7z'],
- #   ['arc',  \&do_arc,   \$arc],
- #   ['zoo',  \&do_zoo,   \$zoo],
- #   ['doc',  \&do_ole,   \$ripole],
diff -urN ports/mail/amavisd-new/patches/patch-bin_amavis-mc ports/mystuff/mail/amavisd-new/patches/patch-bin_amavis-mc
--- ports/mail/amavisd-new/patches/patch-bin_amavis-mc	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-bin_amavis-mc	Sat Jun 20 16:00:49 2026
@@ -0,0 +1,23 @@
+--- bin/amavis-mc.orig	Sat Jun 20 13:49:43 2026
++++ bin/amavis-mc	Sat Jun 20 13:49:51 2026
+@@ -73,16 +73,16 @@
+ 
+ ### USER CONFIGURABLE:
+ 
+-$daemon_user   = 'vscan';
+-@daemon_groups = 'vscan';
++$daemon_user   = '_vscan';
++@daemon_groups = '_vscan';
+ 
+-$pid_file = '/var/amavis/amavis-mc.pid';
++$pid_file = '/var/amavisd/amavis-mc.pid';
+ 
+ $log_level = 0;
+ $syslog_ident = 'amavis-mc';
+ $syslog_facility = LOG_MAIL;
+ 
+-@path = qw(/usr/local/sbin /usr/local/bin /usr/sbin /sbin /usr/bin /bin);
++@path = qw(${TRUEPREFIX}/sbin ${TRUEPREFIX}/bin /usr/sbin /sbin /usr/bin /bin);
+ 
+ @services = (
+   { cmd => 'amavis-services msg-forwarder' },
diff -urN ports/mail/amavisd-new/patches/patch-bin_amvisd-snmp-subagent-zmq ports/mystuff/mail/amavisd-new/patches/patch-bin_amvisd-snmp-subagent-zmq
--- ports/mail/amavisd-new/patches/patch-bin_amvisd-snmp-subagent-zmq	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-bin_amvisd-snmp-subagent-zmq	Sat Jun 20 16:00:49 2026
@@ -0,0 +1,11 @@
+--- bin/amavisd-snmp-subagent-zmq.orig	Sat Jun 20 12:54:12 2026
++++ bin/amavisd-snmp-subagent-zmq	Sat Jun 20 12:55:01 2026
+@@ -1124,7 +1124,7 @@
+   if (!defined $mta_queue_dir) {  # test for access to Postfix queue directory
+     local($ENV{PATH}) = '/usr/sbin:/usr/local/sbin:/opt/postfix/sbin';
+     $! = 0;
+-    $mta_queue_dir = qx(postconf -h queue_directory);
++    $mta_queue_dir = qx(postconf -h queue_directory 2>&1);
+     if (!defined $mta_queue_dir) {
+       if ($! != 0) {
+         do_log(1, "no postfix (unable to run postconf command): $!");
diff -urN ports/mail/amavisd-new/patches/patch-conf_amavisd_conf ports/mystuff/mail/amavisd-new/patches/patch-conf_amavisd_conf
--- ports/mail/amavisd-new/patches/patch-conf_amavisd_conf	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-conf_amavisd_conf	Sat Jun 20 16:13:51 2026
@@ -0,0 +1,40 @@
+--- conf/amavisd.conf.orig	Sat Jun 20 16:10:13 2026
++++ conf/amavisd.conf	Sat Jun 20 16:12:03 2026
+@@ -22,7 +22,7 @@
+ 
+ $mydomain = 'example.com';   # a convenient default for other settings
+ 
+-# $MYHOME = '/var/amavis';   # a convenient default for other settings, -H
++$MYHOME = '/var/amavisd';   # a convenient default for other settings, -H
+ $TEMPBASE = "$MYHOME/tmp";   # working directory, needs to exist, -T
+ $ENV{TMPDIR} = $TEMPBASE;    # environment variable TMPDIR, used by SA, etc.
+ $QUARANTINEDIR = '/var/virusmails';  # -Q
+@@ -248,7 +248,7 @@
+ 
+   qr'.\.(exe|vbs|pif|scr|cpl)$'i,             # banned extension - basic
+ # qr'.\.(exe|vbs|pif|scr|cpl|bat|cmd|com)$'i, # banned extension - basic+cmd
+-# qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta|
++# qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|gadget|grp|hlp|hta|
+ #        inf|ini|ins|isp|js|jse|lib|lnk|mda|mdb|mde|mdt|mdw|mdz|msc|msi|
+ #        msp|mst|ocx|ops|pcd|pif|prg|reg|scr|sct|shb|shs|sys|vb|vbe|vbs|vxd|
+ #        wmf|wsc|wsf|wsh)$'ix,                # banned extensions - long
+@@ -332,7 +332,7 @@
+ @decoders = (
+   ['mail', \&do_mime_decode],
+ # [[qw(asc uue hqx ync)], \&do_ascii],  # not safe
+-  ['F',    \&do_uncompress, ['unfreeze', 'freeze -d', 'melt', 'fcat'] ],
++# ['F',    \&do_uncompress, ['unfreeze', 'freeze -d', 'melt', 'fcat'] ],
+   ['Z',    \&do_uncompress, ['uncompress', 'gzip -d', 'zcat'] ],
+   ['gz',   \&do_uncompress, 'gzip -d'],
+   ['gz',   \&do_gunzip],
+@@ -352,8 +352,8 @@
+            # ['/usr/local/heirloom/usr/5bin/pax', 'pax', 'gcpio', 'cpio']
+   ['deb',  \&do_ar, 'ar'],
+ # ['a',    \&do_ar, 'ar'],  # unpacking .a seems an overkill
+-  ['rar',  \&do_unrar, ['unrar', 'rar'] ],
+-  ['arj',  \&do_unarj, ['unarj', 'arj'] ],
++  ['rar',  \&do_7zip, ['7z'] ],
++  ['arj',  \&do_7zip, ['7z'] ],
+   ['arc',  \&do_arc,   ['nomarch', 'arc'] ],
+   ['zoo',  \&do_zoo,   ['zoo', 'unzoo'] ],
+   ['doc',  \&do_ole,   'ripole'],
diff -urN ports/mail/amavisd-new/patches/patch-conf_amavisd_conf-default ports/mystuff/mail/amavisd-new/patches/patch-conf_amavisd_conf-default
--- ports/mail/amavisd-new/patches/patch-conf_amavisd_conf-default	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-conf_amavisd_conf-default	Sat Jun 20 16:00:49 2026
@@ -0,0 +1,28 @@
+--- conf/amavisd.conf-default.orig	Sat Jun 20 13:03:05 2026
++++ conf/amavisd.conf-default	Sat Jun 20 13:05:02 2026
+@@ -16,10 +16,10 @@
+ # $mydomain   = ... no useful default, should be set if used in expressions
+ # $snmp_contact  = '';
+ # $snmp_location = '';
+-# $daemon_user   = undef;
+-# $daemon_group  = undef;                  # legacy
+-# @daemon_groups = $daemon_group // ();    # after-default
+-# $MYHOME        = '/var/amavis';
++$daemon_user   = _vscan;
++$daemon_group  = _vscan;                  # legacy
++@daemon_groups = $daemon_group // ();    # after-default
++$MYHOME        = '/var/amavisd';
+ # $TEMPBASE      = $MYHOME;                # after-default
+ # $db_home       = "$MYHOME/db";           # after-default
+ # $pid_file      = "$MYHOME/amavisd.pid";  # after-default
+@@ -382,8 +382,8 @@
+ ### ['tar',  \&do_tar],  # no longer supported
+ #   ['deb',  \&do_ar, \$ar],
+ ### ['a',    \&do_ar, \$ar],  # unpacking .a seems an overkill
+-#   ['rar',  \&do_unrar, \$unrar],
+-#   ['arj',  \&do_unarj, \$unarj],
++#   ['rar',  \&do_7zip, '7z'],
++#   ['arj',  \&do_7zip, '7z'],
+ #   ['arc',  \&do_arc,   \$arc],
+ #   ['zoo',  \&do_zoo,   \$zoo],
+ #   ['doc',  \&do_ole,   \$ripole],
diff -urN ports/mail/amavisd-new/patches/patch-lib_Amavis_Conf_pm ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_Conf_pm
--- ports/mail/amavisd-new/patches/patch-lib_Amavis_Conf_pm	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_Conf_pm	Sat Jun 20 16:00:49 2026
@@ -0,0 +1,11 @@
+--- lib/Amavis/Conf.pm.orig	Sat Jun 20 13:21:19 2026
++++ lib/Amavis/Conf.pm	Sat Jun 20 13:21:34 2026
+@@ -467,7 +467,7 @@
+ #
+ BEGIN {
+   # serves only as a quick default for other configuration settings
+-  $MYHOME = '/var/amavis';
++  $MYHOME = '/var/amavisd';
+   $mydomain = '!change-mydomain-variable!.example.com';#intentionally bad deflt
+ 
+   # Create debugging output - true: log to stderr; false: log to syslog/file
diff -urN ports/mail/amavisd-new/patches/patch-lib_Amavis_SpamControl_SpamAssassin_pm ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_SpamControl_SpamAssassin_pm
--- ports/mail/amavisd-new/patches/patch-lib_Amavis_SpamControl_SpamAssassin_pm	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_SpamControl_SpamAssassin_pm	Sat Jun 20 16:00:49 2026
@@ -0,0 +1,11 @@
+--- lib/Amavis/SpamControl/SpamAssassin.pm.orig	Sat Jun 20 11:16:36 2026
++++ lib/Amavis/SpamControl/SpamAssassin.pm	Sat Jun 20 11:17:11 2026
+@@ -243,7 +243,7 @@
+ #   PREFIX            => '/usr/local',
+ #   DEF_RULES_DIR     => '/usr/local/share/spamassassin',
+ #   LOCAL_RULES_DIR   => '/etc/mail/spamassassin',
+-#   LOCAL_STATE_DIR   => '/var/lib/spamassassin',
++   LOCAL_STATE_DIR   => '/var/db/spamassassin',
+ #see Mail::SpamAssassin man page for other options
+   };
+   if ($sa_version_num < 3.001005 && !defined $sa_args->{LOCAL_STATE_DIR})
diff -urN ports/mail/amavisd-new/patches/patch-lib_Amavis_Unpackers_pm ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_Unpackers_pm
--- ports/mail/amavisd-new/patches/patch-lib_Amavis_Unpackers_pm	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_Unpackers_pm	Sat Jun 20 16:00:49 2026
@@ -0,0 +1,21 @@
+--- lib/Amavis/Unpackers.pm.orig	Sat Jun 20 11:18:24 2026
++++ lib/Amavis/Unpackers.pm	Sat Jun 20 11:19:55 2026
+@@ -26,17 +26,8 @@
+ use Amavis::Util qw(untaint min max minmax ll do_log snmp_count
+                     prolong_timer rmdir_recursively add_entropy);
+ 
+-BEGIN {
+-  use vars qw($filemagic);
+-  eval {
+-    require File::LibMagic;
+-    File::LibMagic->VERSION(1.00);
+-    import File::LibMagic;
+-    $filemagic = File::LibMagic->new;
+-  } or do {
++    use vars qw($filemagic);
+     undef $filemagic;
+-  };
+-}
+ 
+ use subs @EXPORT_OK;
+ 
diff -urN ports/mail/amavisd-new/patches/patch-lib_Amavis_pm ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_pm
--- ports/mail/amavisd-new/patches/patch-lib_Amavis_pm	Wed Dec 31 17:00:00 1969
+++ ports/mystuff/mail/amavisd-new/patches/patch-lib_Amavis_pm	Mon Jun 22 07:39:10 2026
@@ -0,0 +1,11 @@
+--- lib/Amavis.pm.orig	Fri Jul 11 06:07:39 2025
++++ lib/Amavis.pm	Sun Jun 21 11:00:26 2026
+@@ -890,7 +890,7 @@
+                grep(/\.pm\z/, keys %INC)) {
+     next  if !grep($_ eq $m, qw(Amavis::Conf
+       Archive::Tar Archive::Zip Compress::Zlib Compress::Raw::Zlib
+-      Convert::TNEF Convert::UUlib File::LibMagic
++      Convert::TNEF Convert::UUlib
+       MIME::Entity MIME::Parser MIME::Tools Mail::Header Mail::Internet
+       Digest::MD5 Digest::SHA Digest::SHA1 Crypt::OpenSSL::RSA
+       Authen::SASL Authen::SASL::XS Authen::SASL::Cyrus Authen::SASL::Perl
diff -urN ports/mail/amavisd-new/pkg/PLIST-main ports/mystuff/mail/amavisd-new/pkg/PLIST-main
--- ports/mail/amavisd-new/pkg/PLIST-main	Tue Nov  8 04:14:48 2022
+++ ports/mystuff/mail/amavisd-new/pkg/PLIST-main	Sat Jun 20 16:43:21 2026
@@ -8,19 +8,103 @@
 bin/amavisd-signer
 bin/amavisd-submit
 bin/p0f-analyzer.pl
+libdata/perl5/site_perl/Amavis/
+libdata/perl5/site_perl/Amavis.pm
+libdata/perl5/site_perl/Amavis/AV.pm
+libdata/perl5/site_perl/Amavis/Boot.pm
+libdata/perl5/site_perl/Amavis/Conf.pm
+libdata/perl5/site_perl/Amavis/Custom.pm
+libdata/perl5/site_perl/Amavis/DB/
+libdata/perl5/site_perl/Amavis/DB.pm
+libdata/perl5/site_perl/Amavis/DB/SNMP.pm
+libdata/perl5/site_perl/Amavis/DKIM/
+libdata/perl5/site_perl/Amavis/DKIM.pm
+libdata/perl5/site_perl/Amavis/DKIM/CustomSigner.pm
+libdata/perl5/site_perl/Amavis/DbgLog.pm
+libdata/perl5/site_perl/Amavis/Expand.pm
+libdata/perl5/site_perl/Amavis/IO/
+libdata/perl5/site_perl/Amavis/IO/FileHandle.pm
+libdata/perl5/site_perl/Amavis/IO/RW.pm
+libdata/perl5/site_perl/Amavis/IO/SQL.pm
+libdata/perl5/site_perl/Amavis/IO/Zlib.pm
+libdata/perl5/site_perl/Amavis/In/
+libdata/perl5/site_perl/Amavis/In/AMPDP.pm
+libdata/perl5/site_perl/Amavis/In/Connection.pm
+libdata/perl5/site_perl/Amavis/In/Message/
+libdata/perl5/site_perl/Amavis/In/Message.pm
+libdata/perl5/site_perl/Amavis/In/Message/PerRecip.pm
+libdata/perl5/site_perl/Amavis/In/SMTP.pm
+libdata/perl5/site_perl/Amavis/JSON.pm
+libdata/perl5/site_perl/Amavis/LDAP/
+libdata/perl5/site_perl/Amavis/LDAP/Connection.pm
+libdata/perl5/site_perl/Amavis/Log.pm
+libdata/perl5/site_perl/Amavis/Lookup/
+libdata/perl5/site_perl/Amavis/Lookup.pm
+libdata/perl5/site_perl/Amavis/Lookup/DNSxL.pm
+libdata/perl5/site_perl/Amavis/Lookup/IP.pm
+libdata/perl5/site_perl/Amavis/Lookup/LDAP.pm
+libdata/perl5/site_perl/Amavis/Lookup/LDAPattr.pm
+libdata/perl5/site_perl/Amavis/Lookup/Label.pm
+libdata/perl5/site_perl/Amavis/Lookup/Opaque.pm
+libdata/perl5/site_perl/Amavis/Lookup/OpaqueRef.pm
+libdata/perl5/site_perl/Amavis/Lookup/RE.pm
+libdata/perl5/site_perl/Amavis/Lookup/SQL.pm
+libdata/perl5/site_perl/Amavis/Lookup/SQLfield.pm
+libdata/perl5/site_perl/Amavis/MIME/
+libdata/perl5/site_perl/Amavis/MIME/Body/
+libdata/perl5/site_perl/Amavis/MIME/Body/OnOpenFh.pm
+libdata/perl5/site_perl/Amavis/Notify.pm
+libdata/perl5/site_perl/Amavis/OS_Fingerprint.pm
+libdata/perl5/site_perl/Amavis/Out/
+libdata/perl5/site_perl/Amavis/Out.pm
+libdata/perl5/site_perl/Amavis/Out/BSMTP.pm
+libdata/perl5/site_perl/Amavis/Out/EditHeader.pm
+libdata/perl5/site_perl/Amavis/Out/Local.pm
+libdata/perl5/site_perl/Amavis/Out/Pipe.pm
+libdata/perl5/site_perl/Amavis/Out/SMTP/
+libdata/perl5/site_perl/Amavis/Out/SMTP.pm
+libdata/perl5/site_perl/Amavis/Out/SMTP/Protocol.pm
+libdata/perl5/site_perl/Amavis/Out/SMTP/Session.pm
+libdata/perl5/site_perl/Amavis/Out/SQL/
+libdata/perl5/site_perl/Amavis/Out/SQL/Connection.pm
+libdata/perl5/site_perl/Amavis/Out/SQL/Log.pm
+libdata/perl5/site_perl/Amavis/Out/SQL/Quarantine.pm
+libdata/perl5/site_perl/Amavis/ProcControl.pm
+libdata/perl5/site_perl/Amavis/Redis.pm
+libdata/perl5/site_perl/Amavis/SpamControl/
+libdata/perl5/site_perl/Amavis/SpamControl.pm
+libdata/perl5/site_perl/Amavis/SpamControl/ExtProg.pm
+libdata/perl5/site_perl/Amavis/SpamControl/RspamdClient.pm
+libdata/perl5/site_perl/Amavis/SpamControl/SpamAssassin.pm
+libdata/perl5/site_perl/Amavis/SpamControl/SpamdClient.pm
+libdata/perl5/site_perl/Amavis/TempDir.pm
+libdata/perl5/site_perl/Amavis/Timing.pm
+libdata/perl5/site_perl/Amavis/TinyRedis.pm
+libdata/perl5/site_perl/Amavis/Tools.pm
+libdata/perl5/site_perl/Amavis/UnmangleSender.pm
+libdata/perl5/site_perl/Amavis/Unpackers/
+libdata/perl5/site_perl/Amavis/Unpackers.pm
+libdata/perl5/site_perl/Amavis/Unpackers/MIME.pm
+libdata/perl5/site_perl/Amavis/Unpackers/NewFilename.pm
+libdata/perl5/site_perl/Amavis/Unpackers/OurFiler.pm
+libdata/perl5/site_perl/Amavis/Unpackers/Part.pm
+libdata/perl5/site_perl/Amavis/Unpackers/Validity.pm
+libdata/perl5/site_perl/Amavis/Util.pm
+libdata/perl5/site_perl/Amavis/ZMQ.pm
+libdata/perl5/site_perl/Amavis/rfc2821_2822_Tools.pm
 libdata/perl5/site_perl/JpegTester.pm
-libdata/perl5/site_perl/TinyRedis.pm
+libdata/perl5/site_perl/Mail/SpamAssassin/Logger/Amavislog.pm
 sbin/amavisd
 share/doc/amavisd-new/
 share/doc/amavisd-new/AAAREADME.first
-share/doc/amavisd-new/INSTALL
 share/doc/amavisd-new/LDAP.ldif
 share/doc/amavisd-new/LDAP.schema
 @sample ${SYSCONFDIR}/openldap/
 @sample ${SYSCONFDIR}/openldap/schema/
 @sample ${SYSCONFDIR}/openldap/schema/amavisd.schema
 share/doc/amavisd-new/LICENSE
-share/doc/amavisd-new/MANIFEST
+share/doc/amavisd-new/MANIFEST.old
+share/doc/amavisd-new/README.CVE-2024-28054
 share/doc/amavisd-new/README.banned
 share/doc/amavisd-new/README.chroot
 share/doc/amavisd-new/README.contributed
@@ -51,6 +135,7 @@
 share/doc/amavisd-new/RELEASE_NOTES
 share/examples/amavisd-new/
 share/examples/amavisd-new/amavisd-custom.conf
+share/examples/amavisd-new/amavisd-docker.conf
 share/examples/amavisd-new/amavisd.conf
 @sample ${SYSCONFDIR}/amavisd.conf
 share/examples/amavisd-new/amavisd.conf-default
@@ -62,7 +147,3 @@
 @sample /var/amavisd/db/
 @sample /var/amavisd/var/
 @sample /var/virusmails/
-@mode
-@owner
-@group
-share/snmp/
diff -urN ports/mail/amavisd-new/pkg/PLIST-utils ports/mystuff/mail/amavisd-new/pkg/PLIST-utils
--- ports/mail/amavisd-new/pkg/PLIST-utils	Fri Mar 11 12:34:32 2022
+++ ports/mystuff/mail/amavisd-new/pkg/PLIST-utils	Sat Jun 20 16:00:49 2026
@@ -6,5 +6,4 @@
 bin/amavisd-status
 sbin/amavis-mc
 sbin/amavis-services
-share/snmp/mibs/
 share/snmp/mibs/AMAVIS-MIB.txt