URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 4
[ Назад ]

Исходное сообщение
"Exim правило фильтрации"

Отправлено 81packet , 02-Фев-23 15:02 
Всем доброе время суток. Нужна помощь и рекомендация по решению проблемы. Поиски особого результата не дали. Сам предполагаю, что проблема в синтаксисе второй строчки.  Суть вопроса: требуется фильтром решить три вопроса 1-отклонять все письма с вложениями содержащими известные архивы 2-отповещать получающего пользователя отлупом о блокировке письма 3-редирект письма в ящик (помойку). Для это в секции "begin acl" добавил следующее:

deny   message = The attachment is not accepted. This message contains a blocked file type.
         demime = *rar *zip *7z *gz *tar *gzip *bz2 *tbz *tbz2 *bzip2
         condition = ${if def:mime_attachments {1}{0}}
         log_message = Rejected message with a blocked file type attachment
         headers = X-Blocked-Attachment: The attachment is not accepted
         headers_add = X-Blocked-Reason: This message contains a blocked file type.
         freeze
         redirect = admin@yourdomain.com

Логика вроде правильная, а вот с синтаксисом у меня вообще проблема. Было бы хорошо решить этот вопрос без подключения доп. модулей. Прошу подсказать.


Содержание

Сообщения в этом обсуждении
"Exim правило фильтрации"
Отправлено mmm , 02-Фев-23 15:46 
acl_check_mime:
        deny
                message         = We do not accept attachments : $mime_filename
                condition       = ${if match{$mime_filename}{\N\.(rar|zip|7zip|gz|bz2|bzip2)$\N}}
                decode = default
accept

"Exim правило фильтрации"
Отправлено 81packet , 02-Фев-23 15:52 
>[оверквотинг удален]
>         deny
>            
>     message      
>   = We do not accept attachments : $mime_filename
>            
>     condition      
> = ${if match{$mime_filename}{\N\.(rar|zip|7zip|gz|bz2|bzip2)$\N}}
>            
>     decode = default
> accept

Прошу уточнить, разница в написании rar|zip|7zip|gz|bz2|bzip2 и \.rar|\.zip|\.7zip|\.gz|\.bz2|\.bzip2 - есть или exim нормально проглатывает такое написание?


"Exim правило фильтрации"
Отправлено mmm , 03-Фев-23 08:13 
> Прошу уточнить, разница в написании rar|zip|7zip|gz|bz2|bzip2
> и \.rar|\.zip|\.7zip|\.gz|\.bz2|\.bzip2 - есть или exim нормально
> проглатывает такое написание?

Я делал через вертикалбную черту. Сам вариант нагуглил, так было в оригинале.


"Exim правило фильтрации"
Отправлено 81packet , 03-Фев-23 08:16 
>> Прошу уточнить, разница в написании rar|zip|7zip|gz|bz2|bzip2
>> и \.rar|\.zip|\.7zip|\.gz|\.bz2|\.bzip2 - есть или exim нормально
>> проглатывает такое написание?
> Я делал через вертикалбную черту. Сам вариант нагуглил, так было в оригинале.

С написание расширений разобрался, спасибо. Осталось разобраться, почему не хавает строчки:

         headers = X-Blocked-Attachment: The attachment is not accepted
         headers_add = X-Blocked-Reason: This message contains a blocked file type.
         freeze
         redirect = admin@yourdomain.com


"Exim правило фильтрации"
Отправлено mmm , 03-Фев-23 09:12 
вместо redirect я бы использовал unseen deliver mybox@domain.com
про остальные - надо пробовать, у меня пока негде...

"Exim правило фильтрации"
Отправлено 81packet , 13-Мрт-23 14:58 
> вместо redirect я бы использовал unseen deliver mybox@domain.com
> про остальные - надо пробовать, у меня пока негде...

Приветствую! Сделал вот такой фильтр:

# Exim filter                                                                                            
if $message_body contains "qqq"                                                                          
then
    deliver "blocked@мойдомен.ru"                                                                        
    pipe "/home/папка/blockedmail.sh ${local_part}@${domain} ${message_id}"                          
    seen finish
endif

Сам исполняемый файл:

#!/bin/sh
echo "Your email has been blocked due to violation of our terms of service.\n[$1]\nMessage ID:[$2]\nSender..."
| mail -s "You have a new mail in quarantine!" "$1"                                                      


По итогу, если в письме есть содержимое "qqq" он перенаправляет это письмо на ящик blocked@мойдомен.ru и отправляет нужное сообщение реципиенту.
Теперь не могу понять, почему работает фильтр только с одним локальным ящиком (например petya@мойдомен.ru)? Если отправлю на другой ящик типа vasya@мойдомен.ru - то фильтр не срабатывает.