LINUX.ORG.RU
решено ФорумAdmin

Exim4, Фильтр содержимого письма с рикошетом пользователю.

 , , ,


0

1

Всех приветствую! Есть exim4.96 Всё работает штатно, никаких проблем. Неожиданно была поставлена задача: блокировать письма с вложениями типа - rar,zip,tar.. и т.д., дабы избежать запуска пользователями какого-нибудь шифровальщика. Ок. Гуглил, пока зенки не лопнули и по хилым знаниям сваял следующее: Файл фильтра .forward содержит:

# 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...\n" \
| mail -s "You have a new mail in quarantine!" "$1"

По итогу, если в письме есть содержимое «qqq» он перенаправляет это письмо на ящик blocked@мойдомен.ru и отправляет нужное сообщение реципиенту. Теперь не могу понять, почему работает фильтр только с одним локальным ящиком (например petya@мойдомен.ru)? Если отправлю на другой ящик типа vasya@мойдомен.ru - то фильтр не срабатывает и сразу шлет его Василию с содержимым «qqq». Нутром чую что проблема в ${local_part}@${domain} , но если меняю на ${recipient}, то пишет что неизвестная переменная. Получается ее надо прописать где-то в самом конфиге?

Т.е. ты определил фильтр в файле .forward в домашней директории ОДНОГО пользователя и удивляешься почему фильтр работает ТОЛЬКО для этого пользователя?

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)
Ответ на: комментарий от packet81

Не проверял на практике, но может тут (2 посл. строки) поменять

userforward:
  debug_print = "R: userforward for $local_part@$domain"
  driver = redirect
  domains = +local_domains
  check_local_user
  file = $home/.forward
  require_files = $local_part:$home/.forward
...

это где-то в /etc/exim4/…

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)