Добрый день.
Как выяснил, дело не в Exim ...
В общем, сделал простейшее правило - если mime-часть архив, то выполнить
внешний скрипт.
warn condition = ${if match{$mime_filename}{\N(?i)\.(ARCEXT)$\N}}
logwrite = "$mime_filename"
logwrite = "${run{/usr/local/bin/7z l $mime_decoded_filename}}"
Отправляю письмо с архивом multivolume - в логе пусто:
2018-11-02 10:45:01 1gIV4f-000Ml5-C5 "TeamViewer_Setup.part01.rar"
2018-11-02 10:45:01 1gIV4f-000Ml5-C5 ""
Письмо с вложенным обычным архивом - все ок:
2018-11-02 10:45:43 1gIV5L-000MlL-48 "pack.rar"
2018-11-02 10:45:43 1gIV5L-000MlL-48 "\n7-Zip [64] 16.02 : Copyright (c)
1999-2016 Igor Pavlov : 2016-05-21\np7zip Version 16.02
(locale=C,Utf16=off,HugeFiles=on,64 bits,2 CPUs x64)\n\nScanning the
drive for archives:\n1 file, 166 bytes (1 KiB)\n\nListing archive:
/var/spool/exim/scan/1gIV5L-000MlL-48/1gIV5L-000MlL-48-00002\n\n--\nPath
= /var/spool/exim/scan/1gIV5L-000MlL-48/1gIV5L-000MlL-48-00002\nType =
Rar5\nPhysical Size = 166\nSolid = -\nBlocks = 1\nEncrypted =
-\nMultivolume = -\nVolumes = 1\n\n Date Time Attr
Size Compressed Name\n------------------- ----- ------------
------------ ------------------------\n2018-10-30 14:43:21 ....A
121 94 test.zip\n------------------- ----- ------------
------------ ------------------------\n2018-10-30 14:43:21
121 94 1 files\n"
Т.е. почему-то не отрабатывает обработка многотомного архива :(
Пока писал письмо - нашел ответ :)
"7z l" на многотомный архив возвращает ошибку. См. в конце.
# 7z l
p7zip Version 16.02 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,2
CPUs x64)
Scanning the drive for archives:
1 file, 1457664 bytes (1424 KiB)
Listing archive: /home/gmn/6/TeamViewer_Setup.part01.rar
--
Path = /home/gmn/6/TeamViewer_Setup.part01.rar
Type = Rar5
ERROR = Missing volume : TeamViewer_Setup.part02.rar
Physical Size = 1457664
Characteristics = Volume
Solid = -
Blocks = 1
Encrypted = -
Multivolume = +
Volume Index = 0
Volumes = 1
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------
------------------------
2018-05-22 13:59:40 ....A 20367104 1457471 TeamViewer_Setup.exe
------------------- ----- ------------ ------------
------------------------
2018-05-22 13:59:40 20367104 1457471 1 files
Errors: 1
01.11.2018 17:58, George L. Yermulnik пишет:
Hello!
On Thu, 01 Nov 2018 at 17:47:18 (+0200), Mikhail Golub wrote:
01.11.2018 17:28, George L. Yermulnik пишет:
warn set acl_m_test = ${if match{${run{/usr/local/bin/7z l
$mime_decoded_filename}}} {\N(Multivolume = +)\N} {$1}}
1. Убрать "\N" - их наличие тут, имхо, бессмысленно.
Имеет смыл.
Какой?
2. Заэкранировать сам слеш: \\+
Проверил. Не помогло.
Мне помогает:
[--- cut ---]
$ exim -be
warn set acl_m_test = ${if match{Multivolume = +} {(Multivolume = \\+)} {$1}}
warn set acl_m_test = Multivolume = +
warn set acl_m_test = ${if match{Multivolume = -} {\N(Multivolume = [+-])\N}
{$1}}
warn set acl_m_test = Multivolume = -
warn set acl_m_test = ${if match{Multivolume = +} {\N(Multivolume = [+-])\N}
{$1}}
warn set acl_m_test = Multivolume = +
^D
[--- cut ---]
3. Круглые скобки, судя по приведённому примеру, тоже смысла не имеют.
Тоже имеют смысл. Переменная раскрывается в $1.
Этого не заметил. Прошу прощения.
Переделал немного.
warn set acl_m_test = ${if match{${run{/usr/local/bin/7z l
$mime_decoded_filename}}} {\NMultivolume = (\+|\-)\N} {$1}}
Если архив не многотомный, то set acl_m_test получает значение "-".
А вот если многотомный (Multivolume = +) - не срабатывает правило :(
_______________________________________________
Exim-users mailing list
Exim-users@mailground.net
http://mailground.net/mailman/listinfo/exim-users