The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"EXIM Пересылка одному из списка"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"EXIM Пересылка одному из списка"  +/
Сообщение от DeadMorose (ok), 30-Июн-21, 15:45 
Здравствуйте!

Появилась задача настроить Exim так, чтобы в одной группе письма распределялись получателям последовательно - первое письмо - первому в группе, второе - второму и т.д.
В БД создал таблицу - id(порядковый номер),address(e-mail),is_current(должен получить текущее письмо)

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "EXIM Пересылка одному из списка"  +/
Сообщение от universite (ok), 30-Июн-21, 21:34 
Попросите менеджера уточнить ТЗ и бюджет.
Разработка нового функционала почтовика может дорого обойтись.


Ответить | Правка | Наверх | Cообщить модератору

2. "EXIM Пересылка одному из списка"  +/
Сообщение от Аноним (2), 30-Июн-21, 22:42 
> Появилась задача настроить Exim так, чтобы в одной группе письма распределялись получателям
> последовательно - первое письмо - первому в группе, второе - второму
> и т.д.

Звучит как бред, поэтому может быть, объясните, чего именно желаете добиться таким странным способом?

Ответить | Правка | Наверх | Cообщить модератору

3. "EXIM Пересылка одному из списка"  +/
Сообщение от DiabloPC_пробегал (?), 30-Июн-21, 23:27 
>> Появилась задача настроить Exim так, чтобы в одной группе письма распределялись получателям
>> последовательно - первое письмо - первому в группе, второе - второму
>> и т.д.
> Звучит как бред, поэтому может быть, объясните, чего именно желаете добиться таким
> странным способом?

Юзкейс элементарный: скажем отдача заказов в интернет магазине манагерам по очереди.

Ответить | Правка | Наверх | Cообщить модератору

4. "EXIM Пересылка одному из списка"  +/
Сообщение от DeerFriend (?), 01-Июл-21, 02:47 
> Юзкейс элементарный: скажем отдача заказов в интернет магазине манагерам по очереди.

Для таких задач давно придумали Message Queue. А почта это не самый удобный инструмент для отслеживания событий.

Ответить | Правка | Наверх | Cообщить модератору

5. "EXIM Пересылка одному из списка"  +/
Сообщение от DeadMorose (ok), 01-Июл-21, 03:28 

> Юзкейс элементарный: скажем отдача заказов в интернет магазине манагерам по очереди.

Да, что-то вроде, нужно равномерно загружать менеджеров.
С телефонией на астериске никаких проблем нет - там это стандартный функционал.
А вот в почте что-то никак.
Есть мысль использовать router и queryprogram для конктретного адреса, типа zakaz@company.ru

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

6. "EXIM Пересылка одному из списка"  +/
Сообщение от Аноним (2), 01-Июл-21, 06:57 
>> Юзкейс элементарный: скажем отдача заказов в интернет магазине манагерам по очереди.
> Да, что-то вроде, нужно равномерно загружать менеджеров.
> С телефонией на астериске никаких проблем нет - там это стандартный функционал.
> А вот в почте что-то никак.

Боюсь, что реализовать такое средствами smtp-сервера (без написания собственных обработчиков почтовой очереди) будет немножко сложно.
Можно попробовать извратиться через агентов доставки типа procmail или maildrop, но за успех такого предприятия лично я не поручусь.

Ответить | Правка | Наверх | Cообщить модератору

7. "EXIM Пересылка одному из списка"  +/
Сообщение от Pahanivo пробегал (?), 01-Июл-21, 08:20 
>> Юзкейс элементарный: скажем отдача заказов в интернет магазине манагерам по очереди.
> Да, что-то вроде, нужно равномерно загружать менеджеров.
> С телефонией на астериске никаких проблем нет - там это стандартный функционал.

Сравним дак сравнил ....

> А вот в почте что-то никак.
> Есть мысль использовать router и queryprogram для конктретного адреса, типа zakaz@company.ru

Выгребай ящик консольным почтовым клиентом и далее делай с письмом что хочешь. Вернее куда очередная шиза заведет если уж так хочется.


Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

14. "EXIM Пересылка одному из списка"  +/
Сообщение от Аноним (14), 02-Июл-21, 13:56 

> С телефонией на астериске никаких проблем нет - там это стандартный функционал.

Телефония на астериске, если менеджер не пришел/заболел/курит, отправит звонок другому. Вы же загоните письмо одному человеку, не зная, прочтет он его или нет - хоп и минус клиент.


Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

8. "EXIM Пересылка одному из списка"  +/
Сообщение от Andrey (??), 01-Июл-21, 08:49 
>>> Появилась задача настроить Exim так, чтобы в одной группе письма распределялись получателям
>>> последовательно - первое письмо - первому в группе, второе - второму
>>> и т.д.
>> Звучит как бред, поэтому может быть, объясните, чего именно желаете добиться таким
>> странным способом?
> Юзкейс элементарный: скажем отдача заказов в интернет магазине манагерам по очереди.

Вам нужна ERP/CRM, а не почта.

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

9. "EXIM Пересылка одному из списка"  +/
Сообщение от Тот самый (?), 01-Июл-21, 20:01 
DeadMorose не слушайте весь этот бред про доработку exim, или установку CRM. Все решается значительно проще - через конфиг exim (весь необходимый функционал уже есть)

Детально прорабатывать команды я не буду (сами справитесь). Предлагаю общую идею.

Таблица - id(порядковый номер),address(e-mail),is_current(должен получить текущее письмо) подойдет.

Ответить | Правка | Наверх | Cообщить модератору

10. "EXIM Пересылка одному из списка"  +/
Сообщение от Тот самый (?), 01-Июл-21, 20:12 
1) Потребуется создать новый транспорт. Например:

delivery_rr:
  driver                = pipe
  command               = /usr/sbin/dovecot/deliver -d "${lookup sqlite \
                          {SELECT address FROM table WHERE is_current=1;}}"
  log_output            = true
  return_output         = false
  delivery_date_add     = true
  envelope_to_add       = true
  return_path_add       = true

Размещение этого блока в секции "begin transports" значения не имеет.
Я использую Dovecot deliver в качестве LDA. Доставку легко можно изменить на Exim LDA (сами справитесь)

Ответить | Правка | Наверх | Cообщить модератору

11. "EXIM Пересылка одному из списка"  +/
Сообщение от Тот самый (?), 01-Июл-21, 20:38 
2) Создаем роутер для получателя mail_rr@domain.com:

round_robin:
  driver = accept
  domains = +local_domains
  local_parts = mail_rr
  condition = ${lookup sqlite {UPDATE table SET is_current=1 WHERE bla_bla;} {yes} {yes}}
  condition = ${lookup sqlite {UPDATE table ........} {yes} {yes}}
  transport = delivery_rr
  no_verify
  no_more

Этот роутер нужно разместить в секции "begin routers" непосредственно ПЕРЕД финальной доставкой почты (обычно local_user), т.к. для роутеров порядок имеет значение

Т.к. роутеры на этапе приема запускаются дважды (при проверке и при доставке) мы указываем no_verify (не запускать при проверке), что-бы исключить двойное срабатывание.

После срабатывания этого роутера нормальная (local_user) доставка уже не нужна - используем no_more

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

12. "EXIM Пересылка одному из списка"  +/
Сообщение от Тот самый (?), 01-Июл-21, 20:49 
Самое интересное

condition = ${lookup sqlite {UPDATE table SET is_current=1 WHERE bla_bla;} {yes} {yes}}
condition = ${lookup sqlite {UPDATE table ........} {yes} {yes}}


Это по логике - условие для срабатывания роутера. НО, финальные {yes} {yes} делают эти условия всегда истинными. Таким образом здесь по сути не проверяются условия, а исполняются SQL манипуляции над базой.

Таких condition = ${lookup sqlite {SQL statement} {yes} {yes}} в роутере может быть много

Сделать циклический перебор поля is_current=1 после каждого срабатывания роутера (т.е. доставки) в таблице средствами SQL надеюсь сами сможете

Ответить | Правка | Наверх | Cообщить модератору

13. "EXIM Пересылка одному из списка"  +/
Сообщение от Тот самый (?), 01-Июл-21, 22:18 
Небольшое добавление

Т.к. роутер round_robin мы исключили из предварительной проверки при получении, то в этом случае сработает проверка в local_user. А там проверяется физическое наличие почтового ящика. Т.е. у пользователя, для которого организуется циклическая пересылка (в нашел случае mail_rr@domain.com), обязательно должен быть локальный почтовый ящик (в него ни чего не будет попадать, но быть он должен)

Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

15. "EXIM Пересылка одному из списка"  +/
Сообщение от Ilugar (ok), 04-Июл-21, 14:15 
> Небольшое добавление
> Т.к. роутер round_robin мы исключили из предварительной проверки при получении, то в
> этом случае сработает проверка в local_user. А там проверяется физическое наличие
> почтового ящика. Т.е. у пользователя, для которого организуется циклическая пересылка
> (в нашел случае mail_rr@domain.com), обязательно должен быть локальный почтовый ящик (в
> него ни чего не будет попадать, но быть он должен)

а для чего он тогда? протсо потому что так должно быть   ?

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру