Содержание страницы
20.13. smtpd – SMTP-сервер¶smtpd – SMTP Server
Исходный код: Lib/smtpd.py
Этот модуль предоставляет несколько классов для реализации SMTP-серверов. Один из них – универсальная реализация, которая ничего не делает и может быть переопределена, а два других предлагают конкретные стратегии отправки почты.
20.13.1. Объекты SMTPServer¶SMTPServer Objects
-
class
smtpd.SMTPServer(localaddr, remoteaddr)¶ Создаёт новый объект
SMTPServer, который привязывается к локальному адресу localaddr. Он будет рассматривать remoteaddr как вышестоящий SMTP-ретранслятор. Оба localaddr и remoteaddr должны быть кортежем (host, port) . Объект наследуется отasyncore.dispatcherи поэтому встраивается в цикл событийasyncoreпри создании.-
process_message(peer, mailfrom, rcpttos, data)¶ Вызывает исключение
NotImplementedError. Переопределите этот метод в подклассах, чтобы выполнять полезные действия с этим сообщением. Всё, что было передано в конструктор как remoteaddr, будет доступно как атрибут_remoteaddr. peer – адрес удалённого хоста, mailfrom – отправитель конверта, rcpttos – получатели конверта, а data – строка, содержащая содержимое письма (должна быть в формате RFC 2822 ).
-
20.13.2. Объекты DebuggingServer¶DebuggingServer Objects
-
class
smtpd.DebuggingServer(localaddr, remoteaddr)¶ Создаёт новый отладочный сервер. Аргументы – как в
SMTPServer. Сообщения будут отбрасываться и выводиться на stdout.
20.13.3. Объекты PureProxy¶PureProxy Objects
-
class
smtpd.PureProxy(localaddr, remoteaddr)¶ Создаёт новый сервер-чистый прокси. Аргументы – как в
SMTPServer. Всё будет пересылаться на remoteaddr. Имейте в виду, что его запуск с большой вероятностью сделает вас открытым ретранслятором, поэтому будьте осторожны.
20.13.4. Объекты MailmanProxy¶MailmanProxy Objects
-
class
smtpd.MailmanProxy(localaddr, remoteaddr)¶ Создаёт новый чистый прокси-сервер. Аргументы те же, что и в
SMTPServer. Всё будет перенаправляться на remoteaddr, если только локальные настройки mailman не знают об адресе – в этом случае обработка пойдёт через mailman. Учтите, что запуск этого сервера с большой вероятностью превратит вас в открытый релей, так что будьте осторожны.