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

Фильтры для exim

Добавлено: 2011-01-04 0:01:34
andryu
Пытаюсь заставить exim работать с фильтрами sieve.
Застрял на том, что ни как не могу заставить exim читать .forward файл в домашней директории пользователя, хотя это он по умолчанию должен делать..
Возможно это связано с тем что конфиг exima от ISPа.

Прочитав документацию про роутер REDIRECT
http://www.lissyara.su/doc/exim/4.62/th ... uter/#22.1
добавил

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

userforward:
    driver = redirect
    check_local_user
    file = $home/.forward
    no_verify

перед роутером

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

        localuser:
                driver = accept
                transport = local_delivery
но похоже что exim игнорирует .forward файл.
Подскажите куда копать?

Re: Фильтры для exim

Добавлено: 2011-01-04 10:29:11
unix-admin
а что в .forward ?

Re: Фильтры для exim

Добавлено: 2011-01-04 11:50:51
andryu
Например, вот это. Пересылать все сходящие на test@domain.com. Exim в мае начал поддерживать sieve, вот я и пытаюсь это проверить.(exim-4.72)

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

# Sieve Filter
# Generated by Ingo (http://www.horde.org/ingo/) (п?я?, я?пҐп?  4, 2011, 10:43)

# п?п?я?п?я?я?п?п?п?
if true {
    redirect "test@domain.com";
}

# Forward Keep Action
if true {
    keep;
    stop;
}

Re: Фильтры для exim

Добавлено: 2011-01-04 13:35:26
dikens3
отладка в полезных скриптах.

Re: Фильтры для exim

Добавлено: 2011-01-05 0:34:00
andryu
dikens3 писал(а):отладка в полезных скриптах.
Не помогло, так как
dikens3 писал(а):Exim обработает так, будто это реальное письмо, но без реальной доставки (только логи).
а етот фильтр .forward во время доставки срабатывает. Во всяком случае в логе дебага ничего не нашёл.
Или я не прав?

Re: Фильтры для exim

Добавлено: 2011-01-05 10:51:11
dikens3
но похоже что exim игнорирует .forward файл.
Пользователи локальные?
Exim находит файл .forward в директории пользователя? (права на файл тоже посмотрите)

Проверьте может ли использовать sieve ваш exim. (Я не работал с ним, может пересобрать с какими опциями надо).

Создайте что-нибудь попроще в файле.forward. типа запись в логи строки "Hello World"

Проверьте опцию
# Если опция “allow_filter” установлена в истинное значение и данные начинаются со строки “#Exim filter” или “#Sieve filter” то содержимое интерпретируется как список “фильтрующих” инструкций в форме фильтров Exim или Sieve соответственно.

http://www.lissyara.su/?id=1222#22.3
Так, набросок моих действий в случае проблемы.

Re: Фильтры для exim

Добавлено: 2011-01-05 12:01:19
andryu
dikens3 писал(а):Пользователи локальные?
Пользователи виртуальные. Поэтому конструкция с file = $home/.forward не подойдёт. Про “allow_filter” я тоже прочитал и уже её добавил. Получилось вот что

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

userforward:
  driver = redirect
  check_local_user
  data = ${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}/.forward
  allow_filter
  no_verify
Конструкцию data = скопировал из другого места в конфиге, поидее должно работать.
В passwd записи такого типа: test@domain.com:1010:1010:50:/home/user/data/email/domain.com/test:no:password
Последние версии exim поддерживают sieve, поддержка встроенная.
Exim находит файл .forward в директории пользователя? (права на файл тоже посмотрите)
Вот этот пункт проверить не получается, знаний не хватает :)
dikens3 писал(а):Так, набросок моих действий в случае проблемы.
Нашёл в гугле Howto небольшой, буду пробывать на его основе запустить мою конструкцию

Re: Фильтры для exim

Добавлено: 2011-01-05 13:24:39
dikens3
Нафиг вам sieve? Чтобы алиасы и перенаправления делать? Это можно и так сделать.
Задачу огласите что-ли?

Re: Фильтры для exim

Добавлено: 2011-01-05 13:46:12
andryu
Sieve нужно для фильтров в вебмаиле. Чтобы пользователи могли сами себе фильтры создавать(складывание по папочкам,фильтрация по телу письма, уведомление о новой почте и т.д. и т.п.) алиасы и перенаправление они могут и через панель добавить, а фильтрацию нормальную только сиеве обеспечивает.
Вычитал, что в моём случае одним роутером не обойтись, ещё транспорт для сиеве нужно делать

Re: Фильтры для exim

Добавлено: 2011-01-08 1:44:56
andryu
Замучился с включением sieve - ничего толком не получилось, да и к томуже sieve в exim-е - это не sieve а
“специфическая реализация Sieve для Exim”
Не поддерживаются некоторые возможности.
В итоге поставил procmail :)
Но и тут без граблей никак не обошлось... :cry:
1) Как быть с квотами в таком случае? Procmail на квоты совсем не смотрит и будет складывать почту в ящик до тех пор пока системные квоты не кончатся(вероятно).
2) И ещё одна проблемка. В maildir есть файлик один – maildirsize, кто его будет обновлять вместо procmaila(он этого не умеет в отличии от exima)? Webmail-ы из-за него будут неправильно показывать заполненность ящика

Есть идеи по решению проблем?

Re: Фильтры для exim

Добавлено: 2011-01-08 9:41:14
dikens3
dovecot c sieve вроде работает, может его как задействовать?

Re: Фильтры для exim

Добавлено: 2011-01-08 14:39:41
andryu
dikens3 писал(а):dovecot c sieve вроде работает, может его как задействовать?
dovecot очень хорошо работает, но тогда его, вместо exim, придётся deliver-ром делать. Надеюсь это окажется проще чем exim с sieve подружить

Re: Фильтры для exim

Добавлено: 2011-01-08 21:47:26
Alex Keda
у меня везде он deliver
всё хорошо.

Re: Фильтры для exim

Добавлено: 2011-01-09 5:24:23
andryu
Alex Keda писал(а):у меня везде он deliver
всё хорошо.
Не подскажите вашу конструкцию транспорта, а то никак не получалось запустить доставку довекотом? С правами долго парился, пока не выставил

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

       socket listen {
         master {
           path = /var/run/dovecot/auth-master
           mode = 0666
           user = mailnull
           group = mail
         }
         client {
           path = /var/run/dovecot/auth-client
           mode = 0666
           user = mailnull
           group = mail
        }
Чувствую, что такие права нельзя выставлять, но без них никак. Или в директорию к пользователю не попасть или к auth-master не подключиться
вот что у меня получилось:

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

    dovecot_user:
      driver = accept
      condition = ${lookup {$local_part@$domain} lsearch {/usr/local/etc/exim/passwd} {yes} {no} }
      transport = dovecot_delivery
      cannot_route_message = Unknown user

    dovecot_delivery:
      driver = pipe
      command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
      message_prefix =
      message_suffix =
      delivery_date_add
      envelope_to_add
      return_path_add
    #  log_output
    #user = mailnull
      user = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
      group = ${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
Почти стандартно, если не считать прав на сокет довекота. Только теперь неясно как довекоту про квоты сообщить. В старых ящиках есть maildirsize, который eximом создавался, а для новых довекот квоты не знает. И если поменять квоту для старых ящиков(в панели), то довекот будет старую квоту использовать..

Re: Фильтры для exim

Добавлено: 2011-01-09 18:57:45
Alex Keda
группу заюзайте

Re: Фильтры для exim

Добавлено: 2011-01-09 19:16:42
andryu
Alex Keda писал(а):группу заюзайте
Каким образом группа связана с квотой или как её можно связать? У всех ящиков для домена один юзер:группа..

Re: Фильтры для exim

Добавлено: 2011-04-13 18:34:21
gyurza2000
Не подскажите как сказать Exim что бы он пересылал почту на другой e-mail,НО пересылал всё кроме папки SPAM?