Ретранслятор почты по запросу - On-Demand Mail Relay

Ретранслятор почты по запросу (ODMR) является Расширение SMTP стандартизирован в RFC 2645 это позволяет электронное письмо для передачи получателям после их аутентификации. Он использует расширенную команду SMTP ATRN, аналогично ETRN команда, но доступна для динамически назначаемых IP-адресов.

ODMR работает следующим образом: проверять входящую почту, клиенты выдать команды EHLO и AUTH службе ODMR, за которыми следует команда ATRN (Authenticated TuRN); после успешной команды ATRN сервер ODMR начинает действовать как SMTP-клиент и начинает отправлять все сообщения, направленные на клиентский домен (или домены) с использованием протокола SMTP через одно и то же TCP-соединение. Поскольку соединения инициируются клиентами, этот протокол хорошо работает для машин, имеющих динамически назначаемые IP-адреса и / или защищенных брандмауэром (т.е. ваш интернет-провайдер может блокировать входящее соединение на порту 25 или может использовать NAT ). Только сервер ODMR, называемый провайдер, должен прослушивать SMTP-соединения на фиксированном IP-адресе.

Внешняя поддержка ODMR

Конструкция ODMR позволяет использовать протокол с SMTP-сервером, который изначально не поддерживает его. Отдельное приложение можно использовать для выполнения начального согласования протокола ODMR (EHLO, AUTH и ATRN), а затем передать соединение серверу SMTP, как только протокол перейдет в «обратное» состояние.

Пример транспорта ODMR

Типичный пример получения писем с помощью odmr.

В целях иллюстрации здесь (не часть протокола) обмены протоколами имеют префиксы для сервера (>) и клиента (<).

>  220 ПРИМЕР. Готовый сервер ретрансляции почты .NET по запросу>  250-EXAMPLE.NET>  250-AUTH CRAM-MD5 ВНЕШНИЙ>  250 ATRN>  334 <последовательность клавиш>>  235 теперь аутентифицирован как example.org>  250 ОК, теперь меняем соединение<220 example.org готов к получению электронной почты>  ПРИМЕР EHLO.NET<250-example.org <250 РАЗМЕР>  ПОЧТА ОТ: <250 ОК>  RCPT TO: <250 ОК, получатель принят ...>  ПОКИДАТЬ<221 example.org закрытие соединения

ODMR-клиенты

  • fetchmail (GPL ) работает со многими протоколами, включая ODMR; порты win32 требуют Cygwin: похоже, что это не поддерживает TLS обмен данными (с использованием STARTTLS)
  • xatrn (закрытый код), только win32; не поддерживает обмен данными TLS (с использованием STARTTLS)
  • xODMR (GPL ), переносимый (чистый Python), отлично работает с TLS.

ODMR-серверы

  • odmrd (GPL ) Реализация ODMR-сервера, написанного на Perl.