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 [email protected] 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 <[email protected]>
@@ -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