Решено: Пересылка почты в зависимости от получателя и темы

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

storm2005
Сообщения: 136

Решено: Пересылка почты в зависимости от получателя и темы

Сообщение storm2005 »

exim+dovecot+maildir

На данный момент есть The bat который пересылает почту. Главное преимущество – наглядность интервейса при создании правил. Недостатки очевидны.

Пример: письмо адресовано mailtest@mydomain. Если в теме есть “инфо” то пересылается на 1@mydoman, 2@mydomain, если в теме info или price, то на 3@mydomain, если отправитель test@domain, то на 4@mydomain, если тема не содержит price то на 5@mydomain все остальное на 6@mydomain. При этом вся почта адресованная mailtest@mydomain пересылается на 7@mydomain.

Подскажите направление в котором копать. На ум приходят либо фильтры эксима, либо procmail.

Буду блогодарен если выложите работающие примеры фильтров или конфиг procmail.

P.S. Нет ли удобного интерфейса для конечного пользователя, который правила пересылки привык создавать в the bat?
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение Frank »

Нутром чую, что это всё элементарно делается одним только экзимом, надо лишь найти человека, разбирающегося в нём :)
Изображение
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение KiWi »

sieve в dovecot
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение pelmen »

В теме не силен, но возник вопрос: причем тут dovecot?
Спасибо сказали:
Postum
Сообщения: 29
ОС: GNU Linux

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение Postum »

storm2005 писал(а):
22.03.2010 10:19
Подскажите направление в котором копать. На ум приходят либо фильтры эксима, либо procmail.


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

if $h_subject: contains "info" then
   deliver 3@mydomain
endif
...
if $h_subject: not contains "price" then
   deliver 5@mydomain
endif

deliver 6@mydomain


Навскидку - где-то так. Порядок важен.
Что делать со вхождениями на русском - не знаю.
...И ты поймешь: все то, чего нельзя –
Песчинка в том, что не запрещено...
© Ю. Лорес
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение KiWi »

pelmen писал(а):
22.03.2010 11:33
В теме не силен, но возник вопрос: причем тут dovecot?

Наверно, учитывая
exim+dovecot+maildir

Логично предположить, что доставкой почты в конкретные папки занимается как раз dovecot.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение sash-kan »

KiWi писал(а):
22.03.2010 11:23
sieve в dovecot
если топик стартеру действительно нужна локальная перетасовка почты, то sieve+dovecot хватит с головой.

p.s. exim, естественно, тоже умеет sieve. но в данном случае, imho, это будет из пушки по воробьям.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
storm2005
Сообщения: 136

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение storm2005 »

Настраивал sieve в dovecot. Но на выходе ничего не работало. Писал развернутый комментарий по этой причине.
Потом заглянут в конфиг эксима. Нашел транспорт отвечающий за доставку

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

local_delivery:
    driver = appendfile
    check_string = ""
    create_directory
    delivery_date_add
    directory = /var/mail/$domain/$local_part
    directory_mode = 770
    envelope_to_add
    group = mail
    maildir_format
    maildir_tag = ,S=$message_size
    message_prefix = ""
    message_suffix = ""
    mode = 0660
    quota = ${lookup mysql{SELECT quota FROM users WHERE login='${local_part}' AND domain='${domain}'}{${value}M}}
    quota_size_regex = S=(\d+)$
    quota_warn_threshold = 75%
    return_path_add


Я так понимаю, что необходимо либо переписывать транспорт с тем условием чтоб доставкой заниался довекот, либо мою задачу решать системным фильтром эксима?
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение KiWi »

storm2005 писал(а):
24.03.2010 11:27
Я так понимаю, что необходимо либо переписывать транспорт с тем условием чтоб доставкой заниался довекот, либо мою задачу решать системным фильтром эксима?

Именно так -- либо deliver из dovecot, либо фильтры exim'а.
Спасибо сказали:
storm2005
Сообщения: 136

Re: Решено: Пересылка почты в зависимости от получателя и темы

Сообщение storm2005 »

Посредством системного фильтра эксима реализовал все что мне необходимо.

Пример: необходимо форвардить почту пришедшую с ящика user@gmail.com на ящик user@mydomain на два ящика моего домена. При этом если тема содержит ТЕКУШИЕ ЗАКАЗЫ, то почта форвардится на user1@mydomain, а если не содержит тему ТЕКУШИЕ ЗАКАЗЫ, то на ящик user2@mydomain.
При этом если форвардинг осуществляется на user1@mydomain,то копия также приходит на ящик user@mydomain, Если же на user2@mydomain, то на ящик user@mydomain не приходит ничего.

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

# Exim filter

#Пример фильтра
if $sender_address: contains "user@gmail.com" and
    $recipients: contains "user@mydomain"
# Тема содержащая русские символы должна быть кодированна особым образом.
# Самый простой способ узнать как надо закодировать - отправить самому себе письмо
# с необходимой русской темой и в логах посмотреть как эксим преобразовал тему в необходимый формат
    and $header_subject: contains "\320\242\320\225\320\232\320\243\320\250\320\230\320\225 \320\227\320\220\320\232\320\220\320\227\320\253"
then
# Если указана команда unseen, то это означает, что обработку не прерывать действием deliver,
# если не указана, то на успешном deliver обработка прекращается.
    unseen deliver user1@mydomain
elif $sender_address: contains "user@gmail.com" and
    $recipients: contains "user@mydomain"
#does not - не содержит
    and $header_subject: does not contains "\320\242\320\225\320\232\320\243\320\250\320\230\320\225 \320\227\320\220\320\232\320\220\320\227\320\253"
then
    deliver user2@mydomain
endif
Спасибо сказали: