[Exim-users] Exim: проверка вложенных архивов

12 views
Skip to first unread message

Mikhail Golub

unread,
Oct 30, 2020, 1:18:17 AM10/30/20
to exim-...@mailground.net
Доброго времени суток.

В Exim реализована проверка опасных вложений во вложенных архивах.
Да много где так уже сделано.

Но на днях пришло письмо.
Во вложении zip. А в архиве файл *.js

Начал разбираться, почему же прошло ...

Если выполнить в консоли, то все ок.
В архиве файл "рахунок до оплати №280 за октябрь 2020р..js"
/usr/local/bin/7z l -ba test.zip
2020-10-27 21:51:52 ..... 5661 1442 à åã­®ª ¤® ®¯« â¨
ü280 §  ®ªâï¡àì 2020à..js

А вот так - нет результата:
exim -be '${run{/usr/local/bin/7z l -ba test.zip}}'

Этот проблемный архив на самом деле lzh, переименованный в zip.
Но 7z его открывает без проблем, как видим.
Но почему-то через Exim не так выполняется команда, как задумано.

Сам архив здесь https://fex.net/s/krdefna (доступен до 6.11.2020)
В архиве вирус, поэтому осторожно.

С дебагом.
exim -d+all -be '${run{/usr/local/bin/7z l -ba test.zip}}'

***
07:11:47 1770 ╭considering: ${run{/usr/local/bin/7z l -ba test.zip}}
07:11:47 1770 ╭considering: /usr/local/bin/7z l -ba test.zip}}
07:11:47 1770 ├──expanding: /usr/local/bin/7z l -ba test.zip
07:11:47 1770 ╰─────result: /usr/local/bin/7z l -ba test.zip
07:11:47 1770 direct command:
07:11:47 1770 argv[0] = '/usr/local/bin/7z'
07:11:47 1770 argv[1] = 'l'
07:11:47 1770 argv[2] = '-ba'
07:11:47 1770 argv[3] = 'test.zip'
07:11:47 1770 fresh-exec forking for expand-run
07:11:47 1770 fresh-exec forked for expand-run: 1771
07:11:47 1771 postfork: expand-run
07:11:47 1770 ├──expanding: ${run{/usr/local/bin/7z l -ba test.zip}}
07:11:47 1770 ╰─────result:

07:11:47 1770 search_tidyup called
07:11:47 1770 >>>>>>>>>>>>>>>> Exim pid=1770 (fresh-exec) terminating
with rc=0 >>>>>>>>>>>>>>>>


Exim version 4.94 #2 (FreeBSD 12.1)

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,2
CPUs x64)


_______________________________________________
Exim-users mailing list
Exim-...@mailground.net
http://mailground.net/mailman/listinfo/exim-users

Le...@lena.kiev.ua

unread,
Oct 30, 2020, 5:48:27 PM10/30/20
to Exim MTA на русском
> А вот так - нет результата:
> exim -be '${run{/usr/local/bin/7z l -ba test.zip}}'
>
> Этот проблемный архив на самом деле lzh, переименованный в zip.
> Но 7z его открывает без проблем, как видим.

Но выдает ненулевой код возврата. Поэтому Exim использует <string2>
которой нет.

> Но почему-то через Exim не так выполняется команда, как задумано.

Проверять надо так:

exim -be '${run{/usr/local/bin/7z l -ba /path/test.zip}{$value}{$value}}'

Ну и в рабочий код добавить это: {$value}{$value}

Mikhail Golub

unread,
Oct 31, 2020, 1:27:40 AM10/31/20
to exim-...@mailground.net
On 30.10.2020 23:47, Le...@lena.kiev.ua wrote:
>> А вот так - нет результата:
>> exim -be '${run{/usr/local/bin/7z l -ba test.zip}}'
>>
>> Этот проблемный архив на самом деле lzh, переименованный в zip.
>> Но 7z его открывает без проблем, как видим.
>
> Но выдает ненулевой код возврата. Поэтому Exim использует <string2>
> которой нет.
Спасибо.

>
>> Но почему-то через Exim не так выполняется команда, как задумано.
>
> Проверять надо так:
>
> exim -be '${run{/usr/local/bin/7z l -ba /path/test.zip}{$value}{$value}}'
exim -be '${run{/usr/local/bin/7z l -ba test.zip}{$value}{$value}}'

ERROR: No more files
test.zip

System ERROR:
Unknown error: -2147024872

И так же и на нормальный архив.

>
> Ну и в рабочий код добавить это: {$value}{$value}

Рабочий код не замысловатый.
set acl_m_winbin_atach = ${if match{${run{/usr/local/bin/7z l -ba
$mime_decoded_filename}}} {\N(?i)\.(WINBIN)($|\n)\N} {$1}}

Le...@lena.kiev.ua

unread,
Oct 31, 2020, 1:34:08 AM10/31/20
to Exim MTA на русском
> >Проверять надо так:
> >
> >exim -be '${run{/usr/local/bin/7z l -ba /path/test.zip}{$value}{$value}}'
> exim -be '${run{/usr/local/bin/7z l -ba test.zip}{$value}{$value}}'
>
> ERROR: No more files
> test.zip

При такой проверке нужно указывать путь к файлу,
т.к. текущая директория при выполнении команды из Exim другая
(кажется /var/spool/exim).

> Рабочий код не замысловатый.
> set acl_m_winbin_atach = ${if match{${run{/usr/local/bin/7z l -ba
> $mime_decoded_filename}}} {\N(?i)\.(WINBIN)($|\n)\N} {$1}}

$mime_decoded_filename содержит и путь тоже.

Mikhail Golub

unread,
Oct 31, 2020, 2:42:25 AM10/31/20
to exim-...@mailground.net

On 31.10.2020 7:33, Le...@lena.kiev.ua wrote:
>>> Проверять надо так:
>>>
>>> exim -be '${run{/usr/local/bin/7z l -ba /path/test.zip}{$value}{$value}}'
>> exim -be '${run{/usr/local/bin/7z l -ba test.zip}{$value}{$value}}'
>>
>> ERROR: No more files
>> test.zip
>
> При такой проверке нужно указывать путь к файлу,
> т.к. текущая директория при выполнении команды из Exim другая
> (кажется /var/spool/exim).

Да, я указывал.
Просто в рассылку сократил путь, указав только файл.


>
>> Рабочий код не замысловатый.
>> set acl_m_winbin_atach = ${if match{${run{/usr/local/bin/7z l -ba
>> $mime_decoded_filename}}} {\N(?i)\.(WINBIN)($|\n)\N} {$1}}
>
> $mime_decoded_filename содержит и путь тоже.

Да.
Работает проверка уже несколько лет.
А на этом архиве не сработала :(
И пока не могу понять почему.

Le...@lena.kiev.ua

unread,
Oct 31, 2020, 3:18:50 AM10/31/20
to Exim MTA на русском
> >>>Проверять надо так:
> >>>
> >>>exim -be '${run{/usr/local/bin/7z l -ba /path/test.zip}{$value}{$value}}'
> >>exim -be '${run{/usr/local/bin/7z l -ba test.zip}{$value}{$value}}'
> >>
> >>ERROR: No more files
> >>test.zip
> >
> >При такой проверке нужно указывать путь к файлу,
> >т.к. текущая директория при выполнении команды из Exim другая
> >(кажется /var/spool/exim).
> Да, я указывал.
> Просто в рассылку сократил путь, указав только файл.

У меня такая ошибка была при проверке, если не указать путь.
А если указать, и вставить {$value}{$value}
то работает.

> >>Рабочий код не замысловатый.
> >>set acl_m_winbin_atach = ${if match{${run{/usr/local/bin/7z l -ba
> >>$mime_decoded_filename}}} {\N(?i)\.(WINBIN)($|\n)\N} {$1}}
> >
> >$mime_decoded_filename содержит и путь тоже.
> Да.
> Работает проверка уже несколько лет.
> А на этом архиве не сработала :(
> И пока не могу понять почему.

Потому что код возврата 7z неулевой. Нужно вставить {$value}{$value}

Mikhail Golub

unread,
Oct 31, 2020, 3:35:17 AM10/31/20
to exim-...@mailground.net
Да, всетаки "{$value}{$value}" спасло.
Спасибо.
Reply all
Reply to author
Forward
0 new messages