[pmg-devel] [PATCH pmg-api v3 3/5] pmg-smtp-filter: archive-detection: use header information as well
Stoiko Ivanov
s.ivanov at proxmox.com
Thu Feb 20 17:19:12 CET 2025
On Thu, Feb 20, 2025 at 04:21:52PM +0100, Dominik Csapak wrote:
> On 2/19/25 13:18, Stoiko Ivanov wrote:
> > This restores the fall-back to the content-type from the header for
> > detecting archives, which we want to unpack, as eagerly trying to get
> > all information seems sensible in this case.
> >
> > Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
> > ---
> > src/bin/pmg-smtp-filter | 8 +++++++-
> > 1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/bin/pmg-smtp-filter b/src/bin/pmg-smtp-filter
> > index 6061459..5c79a58 100755
> > --- a/src/bin/pmg-smtp-filter
> > +++ b/src/bin/pmg-smtp-filter
> > @@ -561,7 +561,13 @@ sub run_dequeue {
> > sub unpack_entity {
> > my ($self, $unpack, $entity, $msginfo, $queue) = @_;
> > - my ($magic, $path) = $entity->@{'PMX_magic_ct', 'PMX_decoded_path'};
> > + my ($magic, $headerct, $path) = $entity->@{'PMX_magic_ct', 'PMX_header_ct', 'PMX_decoded_path'};
> > +
> > + # in order to not miss information from a misdetected archive use information provided in the
> > + # header here as well
> > + if ($magic eq 'application/octet-stream' && $headerct) {
> > + $magic = $headerct;
> > + }
>
> AFAICS this will be called for all entities? so magic does not necessarily has to be set?
Thanks for looking into this! - I finally managed to reproduce
Friedrichs findings (seems I put some effort into overlooking the warnings
in my logs...)
the warning comes from my change - since I expected PMX_magic_ct to be set in any
case with my changes.
walking through pmg-smtp-filter -> PMG::MailQueue::(parse_mail->decode_entities)
shows that a PMX_decoded_path is only set if the part has a bodyhandle[0].
the mulitpart container has subparts, thus it in itself does not have a
body(handle).
>
> in that case i'd move this block into the if condition below here, where we check that magic
> is actually set
probably the safest fix - I'll respin a v4 (and test it)
>
> > if ($magic && $path) {
> > my $filename = basename ($path);
>
>
[0] https://metacpan.org/pod/MIME::Entity#bodyhandle says a entity either
has a body or parts
More information about the pmg-devel
mailing list