Версия 5.2 |
|||||||||||||||||||||||||||||||
|
|
PIPE модуль CommuniGate Pro создаёт папку Submitted внутри директории данных CommuniGate Pro.
PIPE модуль периодически сканирует эту папку и обрабатывает файлы, имеющие расширение .sub. При обнаружении такого файла, модуль копирует его в файл очереди сообщений и передаёт его ядру сервера на обработку.
Текстовые файлы .sub должны содержать сообщения в формате RFC822. Модуль использует данные их полей заголовков RFC822 для создания конверта сообщения.
Если обработка .sub файла заканчивается неудачно (например, в файле не содержится адреса получателя), то модуль помещает соответствующую запись в Системный Журнал и меняет расширение файла на .bad.
Если .sub файл передан успешно, то он удаляется из папки Submitted.
Из-за специфики обработки PIPE модулем папки Submitted, рекомендуется создавать сообщения в другой файловой директории и затем перемещать созданные .sub файлы в папку Submitted с расширением .tmp, а затем менять расширение файла на .sub.
Сообщения, переданные через PIPE модуль, отмечаются как "полученные из доверенного источника" и в дальнейшем могут ретранслироваться без ограничений.
Папка Submitted используется для Эмуляции Существующей Почты.
PIPE модуль принимает все сообщения, направляемые в домен pipe.
Локальная часть адреса сообщения задаёт внешнее приложение, которое должно быть запущено. Эта часть может так же содержать параметры, заключённый в кавычки.
Для того, что бы ограничить набор приложений, которые могут запускаться через PIPE модуль, в настройках модуля PIPE задаётся каталог для внешних программ. Имена приложений, указанные в адресах сообщения не могут включать в себя символ косой черты (/) или символы обратной косой черты (\\), не могут начинаться с символа точка (.) и должны указывать на имя исполняемого файла, находящегося в каталоге для внешних программ.
Текст сообщения (включая заголовки и тело сообщения) передаётся внешней программе на её стандартный ввод.
Обратите внимание: программа должна считывать весь поток данных stdin, в противном случае обработка сообщения закончится неуспешно.
Когда внешнее приложение завершает свою работу, PIPE модуль читает и выкидывает её стандартный вывод. Убедитесь, что ваша программа ничего не записывает в стандартный вывод, что бы её работа не блокировалась в случае, когда буфер коммуникационного канала (pipe) между сервером и программой переполнен.
Когда внешнее приложение завершает свою работу, PIPE модуль читает стандартный вывод ошибок внешнего приложения. Если он не пустой, то доставка сообщения заканчивается неуспешно, и текст, записанный в стандартном выводе ошибок отправляется как сообщение об ошибке отправителю сообщения.
Для того что бы позволить PIPE процессорам доставлять сообщения одновременно, PIPE модуль создаёт отдельные очереди для каждого сообщения, которое он должен доставить. Если вы хотите использовать параллельную доставку, вы можете использовать следующий вид PIPE адреса:
"queue[name] application parameters"@pipe
Все сообщения, направляемые на такие адреса, будут помещаться в очередь name и сообщения в очереди будут отправляться внешним приложениям, указанным в адресах, одним PIPE процессором. Вы можете использовать любую алфавитно-цифровую строку как имя name для очереди и вы можете указывать столько очередей, сколько вам необходимо.
Для PIPE адресов, не имеющих префикса queue[name], PIPE модуль создаст отдельные очереди с цифровыми номерами.
Текст сообщения (заголовок и тело) отправляется на стандартный ввод (stdin) задачи.
Имя программы может иметь в качестве префикса тег [FILE]:Обратите внимание: Начало файла Очереди содержит сервисную информацию (конверт, опции и т.д.). Программа должна игнорировать эту информацию, пропустив все данные файла до первой пустой строки. Само сообщение начинается после первой пустой строки в файле Очереди.
Обратите внимание: Поля заголовков, добавляемые к сообщению Общими для Сервера и Общими для Кластера Правилами, не хранятся в файле Очереди, а отправляются задаче через стандартный ввод задачи.
Обратите внимание: этот префикс не должен использоваться на платформах MS Windows и IBM OS/2, так как Сервер держит файл сообщения открытым, что делает невозможным для внешних Задач чтение из него.
Имя программы может иметь в качестве префикса тег [RETPATH]:Имя программы может иметь в качестве префикса тег [STDERR] (смотрите ниже).
Имя программы может иметь несколько префиксов, и они могут быть указаны в любом порядке. Если указано несколько префиксов [FILE], [RETPATH] и [RCPT], то сначала добавляется флаг -f и его параметры, затем флаг -p и его параметры, а затем флаг -r и его параметры.
Если был указан префикс [STDERR] и внешнее приложение завершило отправку некоторых данных в свой канал стандартного вывода ошибок, то данные из стандартного вывода ошибок используются для формирования текста сообщения об ошибке.
Для того, что бы настроить параметры PIPE модуля, используйте Веб Интерфейс Администратора. Откройте страницу Очередь в области Установки, затем откройте страницу PIPE.
В чрезвычайной ситуации вам может понадобится обработать дополнительную директорию Queue, не останавливая ваш сервер. Такие ситуации могут возникать из-за сбоев в аппаратном обеспечении Сервера, когда восстановленные файлы должны быть обработаны каким-нибудь другим работающим Сервером.
Для обработки дополнительной директории Queue, передвиньте её в директорию данных работающего Сервера как директорию ForeignQueue. Если вы предпочитаете использовать символьные ссылки, то убедитесь, что директории Queue и ForeignQueue находятся на одной файловой системе.
Каждые три минуты PIPE модуль проверяет, существует ли в директории данных Сервера директория ForeignQueue. При обнаружении директории ForeignQueue, модуль передвигает все .msg файлы из директории ForeignQueue в директорию Queue (в процессе он может переименовывать файлы), и удаляет все .tmp файлы, найденные в директории ForeignQueue. Файлы с другими расширениями остаются в директории ForeignQueue.
Все передвинутые .msg файлы передается ядру Сервера в очередь ENQUEUER, и Сервер начинает обрабатывать их также, как он обрабатывает другие передаваемые сообщения.
Когда процесс сканирования завершён, директория ForeignQueue может быть удалена из директории данных.