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