Администрирование Lotus Notes 4.1x и Lotus Domino 4.5

         

Принцип работы SMTP MTA


Рассмотрим принцип работы SMTP MTA - агента, осуществляющего обмен сообщениями между пользователями Notes и пользователями Internet.

Рис.  7.13  Принцип работы SMTP MTA

Задача SMTPMTA, ее подзадачи и используемые ими базы данных

Контроллер подзадач (SMTPMTA) - задача, загружаемая на сервере Notes, например, командой консоли Load SMTPMTA. При старте он запускает и далее "контролирует" выполнение всех других подзадач агента. Все команды, передаваемые задаче SMTPMTA по команде консоли Tell, передаются ею соответствующим "подчиненным" подзадачам.

Конвертор исходящих сообщений (Outbound Message Converter, SMTPMTA OMSGCNV) преобразует сообщения из формата Notes в формат SMTP/MIME, подготавливая их для передачи. Контроллер исходящих сессий (Outbound Session Controller, SMTPMTA OSESCTL) управляет процессами передачи преобразованных сообщений по соответствующим SMTP-адресам. Он запускает очередной и (или) сообщает первому свободному из числа уже запущенных драйверов исходящих сессий, чтобы драйвер выполнил передачу одного или нескольких исходящих сообщений конкретному адресату. Драйвер исходящей сессии (Outbound Session Handler, SMTPMTA OSESHLRn) выполняет фактическое соединение непосредственно с почтовым сервером адресата или следующим почтовым сервером в SMTP-системе и доставляет сообщения, а также сообщает контроллеру о любых ошибках временного или постоянного характера.

Контроллер входящих сессий (Inbound Session Controller, SMTPMTA ISESCTL) управляет получением сообщений от других SMTP-систем. Он постоянно ожидает запроса на установление соединения с ним по порту 25, используемому протоколом SMTP. Протокол SMTP - высокоуровневый протокол для передачи почты поверх протокола TCP/IP. Когда запрос на соединение принят, он запускает очередной и (или) "передает" соединение первому свободному из числа уже запущенных драйверов входящих сессий, а "сам возвращается" в режим ожидания новых соединений. Драйвер входящей сессии (Inbound Session Handler, SMTPMTA ISESHLRn) получает входящее соединение от контроллера входящих соединений. Он принимает передаваемое ему сообщение в соответствии с протоколом SMTP и записывает принятое сообщение в очередь входящих сообщений. Конвертор входящих сообщений (Inbound Message Converter, SMTPMTA IMSGCNV) преобразует сообщения, полученные драйверами входящих сессий, в формат Notes. При этом в формат Notes преобразовывается и адрес получателя, а также выполняется проверка, возможно ли это сообщение доставить. Если сообщение не удается конвертировать или если оно не может быть доставлено, формируется сообщение о недоставке. Если же сообщение не предназначено для Notes, оно перемещается в очередь на отправку.


По каждому сообщению каждая задача информирует задачу Delivery Report Task (SMTPMTA DRT), была ли ее работа успешно выполнена или произошла ошибка временного или постоянного характера. Delivery Report Task обрабатывает сообщения в очередях в зависимости от их состояния. Сообщения, которые были успешно посланы или получены, удаляются из очередей. На сообщения, для которых возникла ошибка постоянного характера, формируется отчет о недоставке или сообщение администратору о наличии "мертвой" почты.

База данных SMTP.BOX создается во время установки SMTPMTA по шаблону SMTPBOX.NTF. В эту базу серверная задача Router осуществляет доставку сообщений, подлежащих конвертации и отправке. Конвертор исходящих сообщений опрашивает эту базу данных с определенным интервалом. Конвертированные сообщения не удаляются из базы до тех пор, пока они не будут доставлены или пока для них не будет сгенерировано сообщение о недоставке.

База данных Outbound work queue (SMTPOBWQ.NSF) используется для временного хранения для конвертированных сообщений, которые или ожидают отправки, или для которых отправка завершилась неуспешно, и теперь они ожидают обработки задачей Delivery Report Task.

База данных Inbound work queue (SMTPIBWQ.NSF) используется для временного хранения принятых драйверами входных сессий и ожидающих конвертации сообщений, а так же сообщений, ожидающих обработки задачей Delivery Report Task.

База данных MTA Tables database (MTATABLES.NSF) используются совместно как SMTP MTA, так и X400 MTA, как поисковая таблица для выбора набора символов и идентификации типов файлов, а также как таблица перекрестных связей между типами/подтипами MIME и расширениями файлов.



Доставка сообщения из Notes в Internet

1. Пользователь Notes создает почтовое сообщение, но в поле адреса (поле SendTo, метка поля To:) задает адрес в формате SMTP, например, iontsev@inttrust.msk.ru. Сообщение отправляется по почте Notes.

2. Серверная задача Mail Router анализирует адрес сообщения и распознает, что адрес задан не в формате Notes, а в формате SMTP. Далее Mail Router использует информацию из документа Foreign SMTP Domain. В простейшем случае в этом документе "сказано", что все сообщения с SMTP-адресами должны передаваться в домен с некоторым именем, например, SMTPMAIL. Далее Mail Router использует информацию из документа Connection типа SMTP. В простейшем случае в этом документе "сказано", что некоторый сервер Notes из текущего домена Notes, например, NotesSrv400/InterTrustCorp/SU, "умеет" соединяться с почтовым сервером Internet из домена SMTPMAIL, а так же задано SMTP-имя этого почтового сервера Internet, например, inttrust.space.ru, и, возможно, его IP-адрес. В действительности и этот сервер Notes (в нашем случае NotesSrv400/InterTrustCorp/SU), и почтовый сервер Internet физически функционируют на одном и том же компьютере, причем роль почтового сервера Internet выполняет агент SMTP MTA - одна из задач сервера Notes.



3. Сообщение доставляется почтой Notes до такого сервера Notes, в данном случае NotesSrv400/InterTrustCorp/SU. Задача Mail Router на этом сервере помещает это сообщение в базу данных SMTP.BOX. Обратите внимание, что SMTP.BOX - предопределенное имя, оно не задается в настроечных документах.

4. Подзадача Outbound Message Converter периодически опрашивает базу SMTP.BOX на предмет появления новых сообщений. Период опроса задается в документе Server в секции Internet Message Transfer Agent (SMTP MTA) в поле с меткой Poll for new messages every [120] seconds. Когда подзадача находит в SMTP.BOX новое сообщение, она преобразует его в формат Internet (RFC 822) и записывает в базу Outbound Work Queue. При преобразовании адреса отправителя из формата Notes в формат SMTP используется информация из документа Global Domain. При этом исходящее сообщение не удаляется из SMTP.BOX - подзадача лишь "устанавливает" для данного сообщения в SMTP.BOX статус "Ожидает отправки".

5. Подзадача Outbound Session Controller считывает сообщение из очереди на передачу (Outbound Work Queue) и "сообщает" первой или очередной созданной ею подзадаче Outbound Session Handler идентификатор этого сообщения. Подзадача Outbound Session Controller может по умолчанию создать до трех подзадач Outbound Session Handler, а администратор может управлять их количеством. При возможности Outbound Session Controller группирует сообщения на один и тот же хост "в один пакет".

6. Подзадача Outbound Session Handler по адресу получателя сообщения (например, iontsev@inttrust.msk.ru), используя сервер DNS, определяет имя компьютера назначения и его IP-адрес (в нашем примере им окажется хост sequent.kiae.su,

193.125.152.6). Далее подзадача открывает соединение с компьютером назначения и передает данное сообщение, используя драйвер протокола SMTP. Если сообщение было успешно передано на компьютер назначения, подзадача Outbound Session Handler изменяет статус этого сообщения в очереди Outbound Work Queue на "Доставлено". Если же сообщение не удалось доставить - например, компьютер назначения в данный момент недоступен - сообщение "возвращается" в очередь Outbound Work Queue, где некоторое время ожидает очередной попытки доставки. Если сообщение не удалось доставить за определенное количество попыток, или если не удается определить IP-адрес компьютера назначения, или если адресат (в нашем примере это iontsev) на компьютере назначения неизвестен, сообщение получает статус "Невозможно доставить".



7. Доставленные сообщения (со статусом "Доставлено") подзадача Delivery Report Task удаляет из Outbound Work Queue и SMTP.BOX. Для сообщений, которые не удалось доставить (со статусом "Невозможно доставить") подзадача Delivery Report Task генерирует и отправляет отправителю почтой Notes уведомление о недоставке, и после этого также удаляет такие сообщения из Outbound Work Queue и SMTP.BOX.

Доставка сообщений из Internet в Notes

1. Подзадача Inbound Session Controller "пассивно прослушивает" (функция listen() в интерфейсе сокетов) используемый протоколом SMTP порт 25 в ожидании запроса на соединение от какого-нибудь почтового сервера Internet. Обнаружив запрос на соединение, она передает этот запрос для обработки первой или очередной созданной ею подзадаче Inbound Session Handler, и продолжает "прослушивать" порт 25. Подзадача Inbound Session Controller по умолчанию может создать до 3-х подзадач Inbound Session Controller, а администратор может изменить максимальное количество создаваемых подзадач.

2. Подзадача Inbound Session Handler принимает SMTP-сообщение и записывает его в очередь Inbound Work Queue в формате RFC822.

3. Подзадача Inbound Message Converter читает сообщение из Inbound Work Queue и анализирует адрес получателя. Если сообщение адресовано не в домены Internet, перечисленные в списках в документе (документах) формы Global Domain, подзадача переносит это сообщение Outbound Work Queue для последующей доставки в место назначения. Если же адрес принадлежит домену Internet из списка, адрес конвертируется в формат Notes. Если сообщение может быть доставлено по почте Notes, оно преобразуется в формат Notes и помещается в MAIL.BOX сервера. Дальнейшей доставкой такого сообщения будут заниматься задачи Mail Router на серверах Notes. Если же сообщение не может быть доставлено адресату в Notes или не может быть преобразовано в формат Notes, подзадача Inbound Message Converter передает идентификатор этого сообщения подзадаче Delivery Report Task.

4. Подзадача Delivery Report Task формирует в адрес отправителя сообщение о недоставке - Non-delivery Report - которое помещается в очередь Outbound Work Queue. Доставкой уведомления о недоставке далее занимаются подзадачи Outbound Session Controller и Outbound Session Handler.


Содержание раздела