Страница 1 из 1

Exim как запретить вложения rar с паролями?

Добавлено: 2019-03-20 13:51:12
RusEM
Добрый день
Подскажите, есть ли возможность запретить вложения rar на которых установлен пароль?

Exim как запретить вложения rar с паролями?

Добавлено: 2019-03-22 11:32:53
skeletor
Делать листинг rar вложений, если не удался - значит с паролем. Но и тут хитрецы есть: ставят пароль на извлечение, а на листинг - не ставят, поэтому, данная проверка не 100% рабочая.

Exim как запретить вложения rar с паролями?

Добавлено: 2019-03-27 10:39:36
RusEM
skeletor писал(а):
2019-03-22 11:32:53
Делать листинг rar вложений, если не удался - значит с паролем
А можно пример как это реализовать? unrar в консоли сразу требует пароль при выводе листинга

Exim как запретить вложения rar с паролями?

Добавлено: 2019-03-28 9:43:39
skeletor
Можно, например, заведомо передавать неправильный пароль. К примеру:

Код: Выделить всё

/usr/local/bin/7z -p{pass} archive.rar
Для архивов без пароля оно ничего не означает.

Exim как запретить вложения rar с паролями?

Добавлено: 2019-04-12 15:33:46
mssk
Добрый день! Пытаюсь отлупить почтовые вложения в запароленных архивах.
Логика такая: Если 7z дает ошибку на пароль, он возвращает код отличный от 0, и скрипт завершается с exit 1
Пока ничего не получилось, подскажите где ошибка. :st:

exim config:

Код: Выделить всё

deny message = This message contains dangerous file(s) in .${uc:$found_extension} file.
     condition = ${if <{$message_size}{500K}{1}{0}}
     condition = ${if match{$mime_filename}{\N(?i)\.(zip|rar|7z)$\N}}
     decode = default
     set acl_m1     = ${run{/usr/local/archive.sh $mime_decoded_filename }}
     condition      = ${if eq {$runrc}{1}{false}{true}}
archive.sh:

Код: Выделить всё

#!/bin/sh
7z l -psdaio $1 >nul 2>nul
if  [ $? != "0" ]; then exit 1
else
exit 0
fi

Exim как запретить вложения rar с паролями?

Добавлено: 2019-04-17 8:08:08
skeletor
А что такое nul?

Exim как запретить вложения rar с паролями?

Добавлено: 2019-04-17 11:55:17
mssk
Где-то на просторах подсмотрел такую конструкцию.
Может можно без скрипта обойтись и сделать все из конфига exim'a?
Вот чего 7z выдает при попытке листить с неправильным паролем:

Код: Выделить всё

Scanning the drive for archives:
1 file, 1604 bytes (2 KiB)
Listing archive: file.rar
ERROR: file.rar : Can not open encrypted archive. Wrong password?
Errors: 1


Можно ловить по слову "ERROR:"?

Exim как запретить вложения rar с паролями?

Добавлено: 2019-05-29 11:24:24
mssk
UP!

Пока не смог победить.
Подскажите кто как блокирует архивы с паролем?

Exim как запретить вложения rar с паролями?

Добавлено: 2019-06-24 13:03:24
RaSergiy
mssk писал(а):
2019-05-29 11:24:24
Пока не смог победить.
Подскажите кто как блокирует архивы с паролем?
Для ZIP:

Код: Выделить всё

    deny    hosts         = ! +relay_from_hosts
            message       = Message's archive attachment contains a passworded ZIP file: $mime_filename. Password archives is not allowed!
            condition     = ${if match{$mime_filename}  {\N(?i)\.zip$\N}}
            decode        = default
            set acl_m1    = ${run{/usr/local/bin/7za t -pFakePassword $mime_decoded_filename}{0}{1}}
            condition     = ${if eq{$acl_m1}{1}}
            log_message   = forbidden passworded attachment: filename=$mime_filename, content-type=$mime_content_type, recipients=$recipients 
Для RAR под FreeBSD не работает, всегда выдает ошибку:

Код: Выделить всё

7-Zip (a) [64] 9.38 beta  Copyright (c) 1999-2014 Igor Pavlov  2015-01-03
p7zip Version 9.38.1 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)

Processing archive: rarfile_norm.rar

Error: Can not open file as archive

Exim как запретить вложения rar с паролями?

Добавлено: 2019-06-24 13:09:13
RaSergiy
Поэтому для RAR отдельное правило:

Код: Выделить всё

   deny    hosts         = ! +relay_from_hosts
            message       = Message's archive attachment contains a passworded RAR file: $mime_filename. Password archives is not allowed!
            condition     = ${if match{$mime_filename}  {\N(?i)\.rar$\N}}
            decode        = default
            set acl_m1    = ${run{/usr/local/bin/unrar t -pFakePassword $mime_decoded_filename}{0}{1}}
            condition     = ${if eq{$acl_m1}{1}}
            log_message   = forbidden passworded attachment: filename=$mime_filename, content-type=$mime_content_type, recipients=$recipients

Exim как запретить вложения rar с паролями?

Добавлено: 2019-11-12 8:13:34
avamal
Два уточнения.
1) добавлять это надо в секцию acl_smtp_mime
2) так же будет резать и отдельные тома беспарольного многотомного rar-архива, с расширением .partХХ.rar, и первый файл многотомного zip-архива, с расширением .zip.

Exim как запретить вложения rar с паролями?

Добавлено: 2019-11-12 10:08:59
avama
Поэтому вариант от RaSergiy можно немного изменить.

Для zip сделать такой вызов:

set acl_m1 = ${run{/bin/sh -c "/usr/local/bin/7za t -pFakePassword $mime_decoded_filename 2>&1 | /usr/bin/grep 'Wrong password'"}{1}{0}}

(местонахождение sh и grep для своей системы проверьте сами)

А для rar можно проверить код возврата:

set acl_m1 = ${run{/usr/local/bin/unrar t -pFakePassword $mime_decoded_filename}}
condition = ${if or{ { eq{$runrc}{3} } { eq{$runrc}{11} } } }

Exim как запретить вложения rar с паролями?

Добавлено: 2019-11-12 13:09:43
avama
И, наконец, в первый condition для zip можно добавить поддержку 7z.

condition = ${if match{$mime_filename} {\N(?i)\.zip$|(?i)\.7z$\N}}