View previous topic :: View next topic |
Author |
Message |
SBV Subscriber
Joined: 24 Sep 2013 Posts: 18
|
Posted: 04 Oct 2013 11:06 (Fri) Post subject: автоматизация приема-отправки |
|
|
Есть почтовые ящики пользователей на внешнем хостинге (user1@mycompany.ru, user2@mycompany.ru и т.д.). Назовем этот сервер External.
Есть также внутренний почтовый сервер (smtp\pop3), к которому соединяются клиенты и который обслуживает внутреннюю почту. Назовем его Local.
Хочется с помощью CMS (отдельный сервер) настроить следующий автомат:
1 заданием 1 забираем по POP3 поступившую почту из External (это понятно как сделать)
2 запускаем некую обработку - внешний скрипт (тоже вроде понятно - цепляем скрипт к Заданию 2)
3 Задание 2 отдает всю поступившую извне почту серверу Local (где ее забирают клиенты по POP3)
4 Задание 2 также забирает почту для отправки наружу с сервера Local
5 запускаем некую обработку - внешний скрипт (тоже вроде понятно - цепляем скрипт к Заданию 1)
6 запускаем Задание 1 для отправки почты наружу и приема поступившей снаружи (goto шаг 1)
Посоветуйте можно ли нечто подобное настроить и как? |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 04 Oct 2013 11:42 (Fri) Post subject: |
|
|
Настроить можно.
На сервере Local домен тоже называется mycompany.ru? |
|
Back to top |
|
|
SBV Subscriber
Joined: 24 Sep 2013 Posts: 18
|
Posted: 04 Oct 2013 12:54 (Fri) Post subject: |
|
|
Да, домен тот же. Это как бы локальная копия внешних ящиков. Кроме, есс-но внутренней почты - она ходит только внутри. |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 04 Oct 2013 15:29 (Fri) Post subject: |
|
|
А что мешает непосредственно на сервере Local настроить приём почты с сервера External и обработку писем скриптами? |
|
Back to top |
|
|
SBV Subscriber
Joined: 24 Sep 2013 Posts: 18
|
Posted: 04 Oct 2013 15:54 (Fri) Post subject: |
|
|
Local не может смотреть наружу по безопасности.
Поэтому мыслится промежуточный CMS как бы в DMZ, который инициирует коннект наружу и внутрь, причем попеременно (во всякий момент только одно соединение активно). |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 04 Oct 2013 18:23 (Fri) Post subject: Re: автоматизация приема-отправки |
|
|
Очень непростая задача...
SBV wrote: | 4 Задание 2 также забирает почту для отправки наружу с сервера Local |
Подразумевается, что забирает по POP3? В этом случае решить вашу задачу, скорее всего, не получится, поскольку письма, принятые по POP3, не имеют SMTP-конверта с внешними получателями. Вариантов восстановления этих получателей я не вижу.
Допустимо ли, чтобы Local сам по SMTP присылал почту на Middle (сервер в DMZ)? При соблюдении условия попеременного коннекта Middle наружу и внутрь.
В этом случае какое-то решение просматривается. |
|
Back to top |
|
|
GrAnd CMS Master
Joined: 21 Oct 2005 Posts: 766 Location: г. Коломна
|
Posted: 04 Oct 2013 20:37 (Fri) Post subject: |
|
|
А на External для каждого получателя свой п/я или вся корреспонденция валится кучей в один? _________________ Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец! |
|
Back to top |
|
|
SBV Subscriber
Joined: 24 Sep 2013 Posts: 18
|
Posted: 05 Oct 2013 0:06 (Sat) Post subject: |
|
|
2 NAMOR: ну мне все равно по какому протоколу забирается, есть вариант кроме pop3?
Насчет того что естественней если local посылает я догадывался, но надеялся на какую -то хитрость....
Может надо смириться пусть local посылает - это хуже тк исходящее в dmz, но самое главное как я узнаю когда закончится передача с локала на мидл? Вся логика предполагается крутиться на мидл....
2 Grand: Ящики индивидуальные. |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 06 Oct 2013 15:31 (Sun) Post subject: |
|
|
SBV wrote: | ну мне все равно по какому протоколу забирается, есть вариант кроме pop3? |
SMTP.
SBV wrote: | Насчет того что естественней если local посылает я догадывался, но надеялся на какую -то хитрость.... |
С POP3 у меня не получилось никакой "хитрости" придумать, к сожалению. Очень уж нестандартная задача.
SBV wrote: | Может надо смириться пусть local посылает - это хуже тк исходящее в dmz, но самое главное как я узнаю когда закончится передача с локала на мидл? Вся логика предполагается крутиться на мидл.... |
Небольшую часть логики придётся вынести на Local.
Идея в том, что для синхронизации сеансов обмена почтой Local и Middle должны обмениваться между собой уведомлениями. И все свои действия по обработке и приёму-отправке почты выполнять только после получения уведомления от "партнёра". А после окончания этих действий, в свою очередь, уведомить "партнёра" об этом.
То есть Middle узнает об окончании передачи с Local при получении от него соответствующего уведомления. А Local об этом узнает, когда завершится его задание отправки (в этот момент и нужно отправить уведомление).
А о том, что нужно начать передачу, Local узнает при получении уведомления от Middle.
Для отправки таких межсерверных уведомлений нужна отдельная очередь и на Local и на Middle с настройкой:
[x] Если число писем не меньше 1, то запустить задание: <Задание планировщика для отправки этой очереди> |
|
Back to top |
|
|
SBV Subscriber
Joined: 24 Sep 2013 Posts: 18
|
Posted: 07 Oct 2013 9:50 (Mon) Post subject: |
|
|
Этот подход с межсерверными "переговорами" подразумевает Local должен быть CMS?
В таком случае у меня есть еще идея - что если обмен Local-Middle сделать просто путем обмена файлами (батник с парой команд move, работает на Local, на Middle просто соотв. папки расшарены или ftp сервер...)
И еще, мы все шаг 4 обсуждаем, а шаг 3 не вызывает аналогичных сомнений? В нем надо передать собранное из внешних индивидуальных ящиков с Middle на Local. Ранее Вы говорили, что при этом "письма, принятые по POP3, не имеют SMTP-конверта". |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 07 Oct 2013 11:19 (Mon) Post subject: |
|
|
SBV wrote: | Этот подход с межсерверными "переговорами" подразумевает Local должен быть CMS? |
Да, я так понял, что вы два CMS хотите поставить. В принципе, это не обязательно, если в другом сервере есть аналогичные возможности.
SBV wrote: | В таком случае у меня есть еще идея - что если обмен Local-Middle сделать просто путем обмена файлами (батник с парой команд move, работает на Local, на Middle просто соотв. папки расшарены или ftp сервер...) |
Не сработает. Письма из этих файлов попадут в очередь обработки только при перезапуске CMS.
SBV wrote: | И еще, мы все шаг 4 обсуждаем, а шаг 3 не вызывает аналогичных сомнений? В нем надо передать собранное из внешних индивидуальных ящиков с Middle на Local. Ранее Вы говорили, что при этом "письма, принятые по POP3, не имеют SMTP-конверта". |
Здесь проблем не возникнет, поскольку можно задействовать функцию "Извлечь локальных получателей из полей" в свойствах внешних ящиков. Таким образом, конверт будет создан автоматически при приёме письма из внешнего ящика.
А вот для извлечения внешних получателей аналогичной функции нет. Просто ни разу подобная задача не возникала. |
|
Back to top |
|
|
SBV Subscriber
Joined: 24 Sep 2013 Posts: 18
|
Posted: 07 Oct 2013 13:18 (Mon) Post subject: |
|
|
NAMOR, спасибо.
Можете в общих чертах накидать план настроек, как Вы сделали в соседней ветке (Задания в планировщике)? |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 07 Oct 2013 17:51 (Mon) Post subject: |
|
|
Часть конкретных настроек я описывал ранее, часть вам и так понятна. Напишу в общих чертах — уточняйте, что неясно.
Middle:
1. По расписанию принимает почту с External.
2. Обрабатывает принятую почту скриптом.
3. Отправляет почту на Local.
4. Отправляет на Local уведомление "отправляй почту".
Local:
5. Получает уведомление от Middle.
6. Отправляет почту на Middle.
7. Отправляет на Middle уведомление "почту отправил".
Middle:
8. Получает уведомление от Local.
9. Обрабатывает принятую почту скриптом.
10. Отправляет принятую почту на External.
11. Переходит к пункту 1.
Все действия должны выполняться строго последовательно. Поэтому нужно запретить приём почты с External по расписанию (п. 1) на время выполнения дальнейших действий.
Для этого в задании приёма с External настройте так:
[x] Продолжить выполнение, если существует файл: AllowReceiveFromExternal.flg
[x] Удалить файл после выполнения
Повторно создавать файл-флаг нужно после п. 10, чтобы вновь разрешить приём почты с External. Например, с помощью bat-файла.
На Middle достаточно бесплатной трёхпользовательской версии CMS.
Важно, чтобы здесь не было создано пользователей с теми же именами, что на Local.
У домена укажите имя как на Local и настройте: "Письма для несуществующих пользователей - Помещать в очередь: <очередь отправки на Local>". |
|
Back to top |
|
|
SBV Subscriber
Joined: 24 Sep 2013 Posts: 18
|
Posted: 10 Oct 2013 15:04 (Thu) Post subject: |
|
|
NAMOR, Вы писали: Для отправки таких межсерверных уведомлений нужна отдельная очередь и на Local и на Middle с настройкой:
[x] Если число писем не меньше 1, то запустить задание: <Задание планировщика для отправки этой очереди>
Я не понимаю, как мне обеспечить, чтобы межсерверное уведомление попало именно в эту очередь. В шаблоне очереди нет, в задании можно указать только шаблон и всё. |
|
Back to top |
|
|
NAMOR CMS Developer
Joined: 15 Oct 2005 Posts: 1079
|
Posted: 10 Oct 2013 17:03 (Thu) Post subject: |
|
|
С помощью основного сортировщика.
В шаблоне уведомления укажите получателем, например, cms@local.
В основном сортировщике создайте правило:
Если письмо имеет получателя: cms@local
Выполнить действия только для данных получателей
Поместить письмо в очередь: <очередь для межсерверных уведомлений>
Завершить сортировку письма |
|
Back to top |
|
|
|