Страница 1 из 2
Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-12 16:54:26
maxximpossible
Поднял Exim4 + Exchange по мануалу на этом сайте.
Настроен фильтр запрещённых расширений файлов:
Код: Выделить всё
# Рубаем по расширениям
deny message = contains $found_extension file (blacklisted).
demime = com:vbs:bat:pif:scr:exe:asf:avi:mpg:mp3:mp4:mpeg:wma:mov:vob:mp:msi:swf:wsh:wmv:js:dv:pst
# Архивы кидаем в карантин
warn message = contains $found_extension file (blacklisted).
demime = zip:rar:7z:ace:arj:pps:ppt
set acl_m16 = 1
Всё работает отлично за исключением одной проблемы.
Проблема:
Если во вложении файл с латинским именем, то всё нормально - ненужное отбивается, архивы уходят в карантин, остальное проходит до получателя.
Всё гуд.
Но, вот если во вложение файл с кириллическим именем, то письма проходят до получателя даже если во вложении лежит запрещённый тип файла.
В чём может быть засада?
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-13 1:17:34
Alex Keda
дебажить...
запустить экземпляр на отдельном порту с дебагом и отправить.
или вечрком когда никого нет.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-13 12:57:44
maxximpossible
Сегодня посмотрел в логах ClamAV.
Если у вложенного файла имя написано латиницой, то Exim извлекает файл в виде <хеш>.<ext>, где ext соответствует действительности.
А вот если имя кириллическое, то ext не совпадает с действительностью.
Например, в случае с RAR-архивами:
При латинском имени извлекался <хеш>.rar
При кириллическом имени извлекался <хеш>.com
Может как-то можно указать Exim'у кодировку.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-13 13:39:12
maxximpossible
lissyara писал(а):дебажить...
запустить экземпляр на отдельном порту с дебагом и отправить.
или вечрком когда никого нет.
Сейчас посмотрел на дебаг.
Exim почему-то любые типы файлов с русским именем извлекает как <хеш>.com .
На проверке расширения говорит "condition test failed".
У меня мозг скоро закончится.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 7:01:43
cyrus_user
maxximpossible писал(а):
Код: Выделить всё
# Рубаем по расширениям
deny message = contains $found_extension file (blacklisted).
demime = com:vbs:bat:pif:scr:exe:asf:avi:mpg:mp3:mp4:mpeg:wma:mov:vob:mp:msi:swf:wsh:wmv:js:dv:pst
# Архивы кидаем в карантин
warn message = contains $found_extension file (blacklisted).
demime = zip:rar:7z:ace:arj:pps:ppt
set acl_m16 = 1
В чём может быть засада?
засада в том, что: "demime" is deprecated
используйте нормальный механизм расписанный в 41.4 Scanning MIME parts
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 11:58:44
maxximpossible
cyrus_user писал(а):
засада в том, что: "demime" is deprecated
используйте нормальный механизм расписанный в 41.4 Scanning MIME parts
Не получается его вообще заставить работать.
Вот кусок кода:
Код: Выделить всё
warn condition = ${if <{${strlen:$mime_filename}}{1}{yes}{no}}
logwrite = "In e-mail found file - $mime_filename"
deny message = Blacklisted file extension detected
condition = \
${ifmatch{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
warn message = Blacklisted file extension detected
condition = ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
set acl_m16 = 1
так вот условие проверки длины переменной $mime_filename не срабатывает, т.к. в лог ничё не пишется.
Всё показывает на то, что эта переменная пуста, хотя в разделе 41.4 сказанно что после acl_smtp_mime она должна содержать имя файла во вложении.
Выше преведённый код находится в отдельном файле, а вот указание на него в основном конфиге Exim:
Код: Выделить всё
acl_smtp_mime:
.include_if_exists /etc/exim4/includes/450.acl_smtp_mime.conf
Начинаю подумывать о бубне...
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 12:53:40
maxximpossible
Только что определил, что acl_smtp_mime почему-то вообще не срабатывает.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 13:58:23
maxximpossible
cyrus_user писал(а):
засада в том, что: "demime" is deprecated
используйте нормальный механизм расписанный в 41.4 Scanning MIME parts
Короче победил я не "deprecated" метод, описанный в 41.4 - он у меня заработал.
Но результат тот же, что и с "deprecated" demime.
Опять: Если латинское имя - обрабатывется, если кириллическое - игнорирует.
Вот код:
Код: Выделить всё
# DEBUG START
warn message = "In e-mail found file - $mime_filename"
condition = ${if <{${strlen:$mime_filename}}{1}{yes}{no}}
logwrite = "In e-mail found file - $mime_filename"
# DEBUG END
deny message = Blacklisted file extension detected
condition = ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
И ещё кое что не понимаю:
В дебаговом выражении переменная $mime_filename пуста в обоих случаях.
Вот лог:
Код: Выделить всё
2008-03-14 13:49:34 1Ja7Tf-0001tD-AP "In e-mail found file - "
2008-03-14 13:49:34 1Ja7Tf-0001tD-AP "In e-mail found file - "
2008-03-14 13:49:34 1Ja7Tf-0001tD-AP "In e-mail found file - "
Не пойму почему три раза выводится строка, но это пока самое меньшее из зол, так что я пока не парюсь с этим.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 14:40:34
cyrus_user
проверил у себя, работает даже если кириллическое имя файла подавалось в utf-8, cp-1251, koi-r.
вам, как и советовали выше - дебажить и смотреть
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 15:40:22
maxximpossible
cyrus_user писал(а):проверил у себя, работает даже если кириллическое имя файла подавалось в utf-8, cp-1251, koi-r.
вам, как и советовали выше - дебажить и смотреть
Если не трудно, сбросте пожалуйста конфиг.
Дебажить, я дебажил, но от этого не легче.
Там показывается что ACL тест либо провален, либо пройден вот и всё.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 15:49:53
cyrus_user
maxximpossible писал(а):cyrus_user писал(а):проверил у себя, работает даже если кириллическое имя файла подавалось в utf-8, cp-1251, koi-r.
вам, как и советовали выше - дебажить и смотреть
Если не трудно, сбросте пожалуйста конфиг.
Дебажить, я дебажил, но от этого не легче.
Там показывается что ACL тест либо провален, либо пройден вот и всё.
я вашим конфигом воспользовался

но вы не указали, что именно делает копирование в карантин. я сделал просто:
test1_router:
no_verify
driver = redirect
data = "${if eq{$acl_m16}{1} {+public/test} {$local_part@$domain}}"
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 15:52:31
maxximpossible
И ещё.
При дебаге выявил, что проверка в дебаговом выражении из приведённого выше куска конфига проходит с результатом "yes" в обоих случаях, но переменная $mime_filename при этом пуста.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 15:55:19
maxximpossible
cyrus_user писал(а):
я вашим конфигом воспользовался

но вы не указали, что именно делает копирование в карантин. я сделал просто:
test1_router:
no_verify
driver = redirect
data = "${if eq{$acl_m16}{1} {+public/test} {$local_part@$domain}}"
Может что с версией самого Exima.
У меня стоит 4.63-17.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 16:01:20
cyrus_user
exim 4.69
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-14 23:54:03
Alex Keda
насчёт трёх раз - сколько вложений столько раз и вызывается.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 9:59:08
maxximpossible
lissyara писал(а):насчёт трёх раз - сколько вложений столько раз и вызывается.
Я проверял только с одним вложением.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 10:01:54
maxximpossible
cyrus_user писал(а):exim 4.69
Пробовал эту версию - результат тот же.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 10:31:09
Alex Keda
maxximpossible писал(а):lissyara писал(а):насчёт трёх раз - сколько вложений столько раз и вызывается.
Я проверял только с одним вложением.
debug?
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 10:56:21
maxximpossible
lissyara писал(а):maxximpossible писал(а):lissyara писал(а):насчёт трёх раз - сколько вложений столько раз и вызывается.
Я проверял только с одним вложением.
debug?
да это пока не суть важно.
Мне срочняк надо разобраться с вложениями.
Не пойму что у меня не так.
Конфиг Ваш с наименьшими изменениями.
ОС: Debian Etch 4.0 R3
Локализация: ru_RU.UTF-8
Exim: Exim version 4.63 #1 built 20-Jan-2007 10:42:32 (из репозитория Debian)
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 11:09:50
maxximpossible
Привожу дебаг.
Имя файла во вложении "мпфул.exe".
Код: Выделить всё
Found content-type: MIME header, value is 'multipart/mixed'
11093 Found boundary= MIME parameter in content-type: header, value is '------------060606090401010504030608'
11093 using ACL "acl_check_mime"
11093 processing "deny"
11093 expanding: $mime_filename
11093 result:
11093 expanding: ${lc:$mime_filename}
11093 result:
11093 expanding: \N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N
11093 result: (\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$
11093 condition: match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}
11093 result: false
11093 expanding: 1
11093 result: 1
11093 skipping: result is not used
11093 expanding: 0
11093 result: 0
11093 expanding: ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11093 result: 0
11093 check condition = ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11093 = 0
11093 deny: condition test failed
11093 processing "warn"
11093 expanding: $mime_filename
11093 result:
11093 expanding: ${lc:$mime_filename}
11093 result:
11093 expanding: \N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N
11093 result: (\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$
11093 condition: match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}
11093 result: false
11093 expanding: 1
11093 result: 1
11093 skipping: result is not used
11093 expanding: 0
11093 result: 0
11093 expanding: ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11093 result: 0
11093 check condition = ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11093 = 0
11093 warn: condition test failed
11093 processing "accept"
11093 accept: condition test succeeded
11093 Entering multipart recursion, boundary '------------060606090401010504030608'
11093 Next part with boundary ------------060606090401010504030608
11093 Found content-type: MIME header, value is 'text/plain'
11093 Found charset= MIME parameter in content-type: header, value is 'KOI8-R'
11093 Found content-transfer-encoding: MIME header, value is '7bit'
11093 using ACL "acl_check_mime"
11093 processing "deny"
11093 expanding: $mime_filename
11093 result:
11093 expanding: ${lc:$mime_filename}
11093 result:
11093 expanding: \N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N
11093 result: (\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$
11093 condition: match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}
11093 result: false
11093 expanding: 1
11093 result: 1
11093 skipping: result is not used
11093 expanding: 0
11093 result: 0
11093 expanding: ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11093 result: 0
11093 check condition = ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11093 = 0
11093 deny: condition test failed
11093 processing "warn"
11093 expanding: $mime_filename
11093 result:
11093 expanding: ${lc:$mime_filename}
11093 result:
11093 expanding: \N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N
11093 result: (\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$
11093 condition: match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}
11093 result: false
11093 expanding: 1
11093 result: 1
11093 skipping: result is not used
11093 expanding: 0
11093 result: 0
11093 expanding: ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11093 result: 0
11093 check condition = ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11093 = 0
11093 warn: condition test failed
11093 processing "accept"
11093 accept: condition test succeeded
11093 Next part with boundary ------------060606090401010504030608
11093 Found content-type: MIME header, value is 'application/x-executable'
11093 Found content-transfer-encoding: MIME header, value is 'base64'
11093 Found content-disposition: MIME header, value is 'inline'
11093 using ACL "acl_check_mime"
11093 processing "deny"
11093 expanding: $mime_filename
11093 result:
11093 expanding: ${lc:$mime_filename}
11093 result:
11093 expanding: \N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N
11093 result: (\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$
11093 condition: match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}
11093 result: false
11093 expanding: 1
11093 result: 1
11093 skipping: result is not used
11093 expanding: 0
11093 result: 0
11093 expanding: ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11093 result: 0
11093 check condition = ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11093 = 0
11093 deny: condition test failed
11093 processing "warn"
11093 expanding: $mime_filename
11093 result:
11093 expanding: ${lc:$mime_filename}
11093 result:
11093 expanding: \N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N
11093 result: (\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$
11093 condition: match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}
11093 result: false
11093 expanding: 1
11093 result: 1
11093 skipping: result is not used
11093 expanding: 0
11093 result: 0
11093 expanding: ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11093 result: 0
11093 check condition = ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11093 = 0
11093 warn: condition test failed
11093 processing "accept"
11093 accept: condition test succeeded
При латинском имени в $mime_filename содержится имя и result его показывает.
А вот здесь ничего нет.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 11:28:16
maxximpossible
А вот дебаг при латинском имени:
Код: Выделить всё
Found content-type: MIME header, value is 'multipart/mixed'
11117 Found boundary= MIME parameter in content-type: header, value is '------------030902050703040905070609'
11117 using ACL "acl_check_mime"
11117 processing "deny"
11117 expanding: $mime_filename
11117 result:
11117 expanding: ${lc:$mime_filename}
11117 result:
11117 expanding: \N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N
11117 result: (\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$
11117 condition: match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}
11117 result: false
11117 expanding: 1
11117 result: 1
11117 skipping: result is not used
11117 expanding: 0
11117 result: 0
11117 expanding: ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11117 result: 0
11117 check condition = ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11117 = 0
11117 deny: condition test failed
11117 processing "warn"
11117 expanding: $mime_filename
11117 result:
11117 expanding: ${lc:$mime_filename}
11117 result:
11117 expanding: \N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N
11117 result: (\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$
11117 condition: match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}
11117 result: false
11117 expanding: 1
11117 result: 1
11117 skipping: result is not used
11117 expanding: 0
11117 result: 0
11117 expanding: ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11117 result: 0
11117 check condition = ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11117 = 0
11117 warn: condition test failed
11117 processing "accept"
11117 accept: condition test succeeded
11117 Entering multipart recursion, boundary '------------030902050703040905070609'
11117 Next part with boundary ------------030902050703040905070609
11117 Found content-type: MIME header, value is 'text/plain'
11117 Found charset= MIME parameter in content-type: header, value is 'KOI8-R'
11117 Found content-transfer-encoding: MIME header, value is '7bit'
11117 using ACL "acl_check_mime"
11117 processing "deny"
11117 expanding: $mime_filename
11117 result:
11117 expanding: ${lc:$mime_filename}
11117 result:
11117 expanding: \N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N
11117 result: (\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$
11117 condition: match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}
11117 result: false
11117 expanding: 1
11117 result: 1
11117 skipping: result is not used
11117 expanding: 0
11117 result: 0
11117 expanding: ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11117 result: 0
11117 check condition = ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11117 = 0
11117 deny: condition test failed
11117 processing "warn"
11117 expanding: $mime_filename
11117 result:
11117 expanding: ${lc:$mime_filename}
11117 result:
11117 expanding: \N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N
11117 result: (\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$
11117 condition: match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}
11117 result: false
11117 expanding: 1
11117 result: 1
11117 skipping: result is not used
11117 expanding: 0
11117 result: 0
11117 expanding: ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11117 result: 0
11117 check condition = ${if match{${lc:$mime_filename}}{\N(\.zip|\.rar|\.7z|\.ace|\.arj|\.pps|\.ppt)$\N}{1}{0}}
11117 = 0
11117 warn: condition test failed
11117 processing "accept"
11117 accept: condition test succeeded
11117 Next part with boundary ------------030902050703040905070609
11117 Found content-type: MIME header, value is 'application/x-executable'
11117 Found name= MIME parameter in content-type: header, value is 'zuma-ppc-v1-03.exe'
11117 Found content-transfer-encoding: MIME header, value is 'base64'
11117 Found content-disposition: MIME header, value is 'inline'
11117 Found filename= MIME parameter in content-disposition: header, value is 'zuma-ppc-v1-03.exe'
11117 using ACL "acl_check_mime"
11117 processing "deny"
11117 expanding: $mime_filename
11117 result: zuma-ppc-v1-03.exe
11117 expanding: ${lc:$mime_filename}
11117 result: zuma-ppc-v1-03.exe
11117 expanding: \N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N
11117 result: (\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$
11117 condition: match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}
11117 result: true
11117 expanding: 1
11117 result: 1
11117 expanding: 0
11117 result: 0
11117 skipping: result is not used
11117 expanding: ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11117 result: 1
11117 check condition = ${if match{${lc:$mime_filename}}{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.vbs|\.com|\.asf|\.avi|\.mpg|\.mp3|\.mp4|\.mpeg|\.wma|\.mov|\.vob|\.mp|\.msi|\.swf|\.wsh|\.wmv|\.js|\.dv|\.pst)$\N}{1}{0}}
11117 = 1
11117 deny: condition test succeeded
11117 unspool_mbox(): unlinking '/var/spool/exim4/scan/1JbAgZ-0002tJ-Fg/1JbAgZ-0002tJ-Fg.eml'
11117 SMTP>> 550 Blacklisted file extension detected
11117 LOG: MAIN REJECT
11117 H=linsrv.local [192.168.101.3]:50648 I=[192.168.101.4]:25 F=<inpos@yandex.ru> rejected during MIME ACL checks: Blacklisted file extension detected
11117 search_tidyup called
11117 Process 11117 is ready for new message
11117 smtp_setup_msg entered
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 11:36:50
maxximpossible
Что странно - в обоих случаях Exim определяет Content-type,
но в случае с русским вложением он не определяет имя файла.
Интересно, а можно отфильтровывать не по расширению, а по Content-type?
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-17 14:08:36
maxximpossible
Сделал фильтр по Content-type.
Фильтруется нормально.
Но при доставке русских имён архивов (они отсылаются в карантин для разбирательства - что в архиве) в карантин письмо приходит с вложенным файлом : ATT56465.DAT .
Час от часу не легче.
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-18 7:28:46
cyrus_user

ну вы мученник..
проверяю на основе ваших записей, но упрощаю:
как видно будет писать вложение в лог и в само письмо
Код: Выделить всё
acl_smtp_mime:
warn message = X-MYTEST: attachment |$mime_filename|
log_message = attachment |$mime_filename|
condition = ${if match{${lc:$mime_filename}}{\N(\.ttt|\.yyy)$\N}{1}{0}}
set acl_m116 = 1
перенаправляю на какой-то ящик:
Код: Выделить всё
spam_test1_router:
no_verify
driver = redirect
data = "${if eq{$acl_m116}{1} {test1@sanctus.local.adm} {$local_part@$domain}}"
теперь отправляем тестовое письмо. поскольку я знаю, что записи будут в utf-8, а работаю в консоли в koi8-r, то для просмотра лога сразу запускаю uxterm и там вижу что и хотел:
Код: Выделить всё
exim[2586]: 2008-03-18 12:04:05 1JbT3V-0000fi-FW H=mx.local.adm (mx.local.adm) [10.0.0.20] Warning: attachment |тест12.ttt|
теперь лезу в мэйлбокс, нахожу нужно письмо и делаю:
Код: Выделить всё
$ cat 72785. | grep -i X-MYTEST | iconv -t KOI8R -f UTF-8
X-MYTEST: attachment |тест12.ttt|
Даже не понадобилось лазить в debug, поскольку всё произошло так, как я и ожидал.
Советую пройти подобный путь от простого к сложному
Re: Exim. Проблема с обработкой кирилических имён файлов.
Добавлено: 2008-03-18 10:33:59
maxximpossible
Прошёл Вашим путём.
Результат:
Код: Выделить всё
condition = ${if match{${lc:$mime_filename}}{\N(\.ttt|\.yyy)$\N}{1}{0}}
не сработало, т.к. $mime_filename оказался пустым, а с латинским именем всё нормально.