How do you change the file decoder in amavisd-new?
Dominic Raferd
dominic at timedicer.co.uk
Sun Aug 29 10:13:23 CEST 2021
On 29/08/2021 04:03, Nick Tait wrote:
>
> Hi there.
>
> Apologies for resending this, but I discovered I had a problem with my
> DKIM signature on the original email, so it may have been blocked by
> many list recipients...
>
> I've recently upgraded my email relay, which has amavisd-new
> installed, and when amavis starts up it logs all the file types which
> it doesn't have decoders for. Looking at the amavisd-new script, I can
> see that @decoders is set to:
>
> @decoders = (
> ['mail', \&Amavis::Unpackers::do_mime_decode],
> # [[qw(asc uue hqx ync)], \&Amavis::Unpackers::do_ascii], # not
> safe
> ['F', \&Amavis::Unpackers::do_uncompress, \$unfreeze],
> # ['unfreeze', 'freeze -d', 'melt', 'fcat'] ],
> ['Z', \&Amavis::Unpackers::do_uncompress, \$uncompress],
> # ['uncompress', 'gzip -d', 'zcat'] ],
> ['gz', \&Amavis::Unpackers::do_uncompress, \$gunzip],
> ['gz', \&Amavis::Unpackers::do_gunzip],
> ['bz2', \&Amavis::Unpackers::do_uncompress, \$bunzip2],
> ['xz', \&Amavis::Unpackers::do_uncompress,
> ['xzdec', 'xz -dc', 'unxz -c', 'xzcat'] ],
> ['lzma', \&Amavis::Unpackers::do_uncompress,
> ['lzmadec', 'xz -dc --format=lzma',
> 'lzma -dc', 'unlzma -c', 'lzcat', 'lzmadec'] ],
> ['lrz', \&Amavis::Unpackers::do_uncompress,
> ['lrzip -q -k -d -o -', 'lrzcat -q -k'] ],
> ['lzo', \&Amavis::Unpackers::do_uncompress, \$unlzop],
> ['lz4', \&Amavis::Unpackers::do_uncompress, ['lz4c -d'] ],
> ['rpm', \&Amavis::Unpackers::do_uncompress, \$rpm2cpio],
> # ['rpm2cpio.pl', 'rpm2cpio'] ],
> [['cpio','tar'], \&Amavis::Unpackers::do_pax_cpio, \$pax],
> # ['/usr/local/heirloom/usr/5bin/pax', 'pax',
> 'gcpio', 'cpio'] ],
> # ['tar', \&Amavis::Unpackers::do_tar], # no longer supported
> ['deb', \&Amavis::Unpackers::do_ar, \$ar],
> # ['a', \&Amavis::Unpackers::do_ar, \$ar], #unpacking .a seems
> an overkill
> ['rar', \&Amavis::Unpackers::do_unrar, \$unrar], # ['unrar',
> 'rar']
> ['arj', \&Amavis::Unpackers::do_unarj, \$unarj], # ['unarj',
> 'arj']
> ['arc', \&Amavis::Unpackers::do_arc, \$arc], #
> ['nomarch', 'arc']
> ['zoo', \&Amavis::Unpackers::do_zoo, \$zoo], # ['zoo',
> 'unzoo']
> ['doc', \&Amavis::Unpackers::do_ole, \$ripole],
> ['cab', \&Amavis::Unpackers::do_cabextract, \$cabextract],
> ['tnef', \&Amavis::Unpackers::do_tnef_ext, \$tnef],
> ['tnef', \&Amavis::Unpackers::do_tnef],
> # ['lha', \&Amavis::Unpackers::do_lha, \$lha], # not safe,
> use 7z instead
> # ['sit', \&Amavis::Unpackers::do_unstuff, \$unstuff], # not safe
> [['zip','kmz'], \&Amavis::Unpackers::do_7zip, ['7za', '7z'] ],
> [['zip','kmz'], \&Amavis::Unpackers::do_unzip],
> ['7z', \&Amavis::Unpackers::do_7zip, ['7zr', '7za', '7z'] ],
> [[qw(gz bz2 Z tar)],
> \&Amavis::Unpackers::do_7zip, ['7za', '7z'] ],
> [[qw(xz lzma jar cpio arj rar swf lha iso cab deb rpm)],
> \&Amavis::Unpackers::do_7zip, '7z' ],
> ['exe', \&Amavis::Unpackers::do_executable, \$unrar, \$lha,
> \$unarj],
> );
>
> Which seems to say that 7z can be used for the following file extensions:
>
> zip kmz
> 7z
> gz bz2 Z tar
> xz lzma jar cpio arj rar swf lha iso cab deb rpm
>
> So after installing p7zip-full and p7zip-rar packages, which provide
> the 7z program (and also 7zr and 7za), I'm curious why I still see
> warnings for rpm, rar, arj and cab:
>
> Aug 29 13:13:39 mx amavis[10781]: No ext program for .rpm,
> tried: rpm2cpio.pl, rpm2cpio
> Aug 29 13:13:39 mx amavis[10781]: No ext program for .rar,
> tried: unrar-free
> Aug 29 13:13:39 mx amavis[10781]: No ext program for .arj,
> tried: arj, unarj
> Aug 29 13:13:39 mx amavis[10781]: No ext program for .cab,
> tried: cabextract
>
> Does this mean that 7z isn't going to be used for these file types?
> And if so, is there something I can do to get amavis to use 7z for
> these file types?
>
> Or should these messages just be ignored?
>
> And on a related note, I know (on Windows at least) 7-zip can handle
> self-extracting exe files, although I notice that the "man 7z" manual
> page doesn't mention EXE files. So I wonder whether exe should or
> shouldn't be added to the list of files that 7z can handle in a future
> version of amavis?
>
You can set @decoders yourself (e.g. in /etc/amavis/conf.d/50-user).
I let ClamAV do the unpacking for extensions that it can handle (see
https://www.clamav.net/documents/introduction), but I have:
[[qw(jar swf lha rpm)], \&do_7zip, '7z' ],
and with $log_level = 1 when I reload amavis I see:
2021-08-29 09:06:01 streamingbats amavis[2976]: Found decoder for
.jar at /usr/bin/7z
2021-08-29 09:06:01 streamingbats amavis[2976]: Found decoder for
.swf at /usr/bin/7z
2021-08-29 09:06:01 streamingbats amavis[2976]: Found decoder for
.lha at /usr/bin/7z
2021-08-29 09:06:01 streamingbats amavis[2976]: Found decoder for
.rpm at /usr/bin/7z
Maybe your 7z is installed in a place that amavis cannot find?
Workaround: since rar, arj and cab are all handled by ClamAV you could
remove them. That just leaves rpm for which you could install rpm2cpio?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.amavis.org/pipermail/amavis-users/attachments/20210829/f8c8b6c0/attachment.htm>
More information about the amavis-users
mailing list