Добрый день.

Как выяснил, дело не в 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

Ответить