Блокировка исполняемых вложений во всех архивах в exim


Как выяснилось, clamav не умеет распаковывать разные архивы, типа 7-zip, rar старше 3-й версии и возможно еще что-то.

И соответственно, вирусы и прочие вредные файлы могут пройти через почтовый сервер, что к сожалению и произошло. angry

Где-то нашел статью, как прикрутить блокировку неправильных вложений через стороннюю программу. В итоге реализовал все через 7-zip и мелкий скрипт на его основе.

Плюс 7-zip поддержка кучи форматов:

В exim добавляем:

acl_smtp_mime = acl_check_mime

и

acl_check_mime:
   deny decode = default
        condition = ${if match{${run{/usr/data/script/test_arhives.sh $mime_decoded_filename}}}{yes}}
        set acl_m_checkmime      = ${run{/usr/data/script/test_arhives.sh extension $mime_decoded_filename}}
        message = This messages contains blacklisted file $acl_m_checkmime
        log_message = forbidden attachment script_detect blacklist: filename=$mime_filename, content-type=$mime_content_type, recipients=$recipients attachment: $acl_m_checkmime
   accept

Соответственно сам скрипт test_arhives.sh

#!/bin/sh

case "$1" in
        extension)
                /usr/local/bin/7z l $2 | sed 's/.*\./\./g' | grep -E '\.(exe|com|vbs|bat|pif|scr|hta|js|cmd|chm|cpl|jsp|reg|vbe|lnk|dll|sys)$'
        ;;

        *)
                /usr/local/bin/7z l $1 | sed 's/.*\./\./g'| grep -E '\.(exe|com|vbs|bat|pif|scr|hta|js|cmd|chm|cpl|jsp|reg|vbe|lnk|dll|sys)$' > /dev/null && echo yes
        ;;

esac

Можно было обойтись без скрипта, и все сделать исключительно в exim'е, но подумал, что так нагляднее и проще в дальнейшем.