Документация Python неофициальный перевод
Содержание страницы

20.13. smtpd – SMTP-серверsmtpd – SMTP Server

Исходный код: Lib/smtpd.py


Этот модуль предоставляет несколько классов для реализации SMTP-серверов. Один из них – универсальная реализация, которая ничего не делает и может быть переопределена, а два других предлагают конкретные стратегии отправки почты.

20.13.1. Объекты SMTPServerSMTPServer 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. Объекты DebuggingServerDebuggingServer Objects

class smtpd.DebuggingServer(localaddr, remoteaddr)

Создаёт новый отладочный сервер. Аргументы – как в SMTPServer. Сообщения будут отбрасываться и выводиться на stdout.

20.13.3. Объекты PureProxyPureProxy Objects

class smtpd.PureProxy(localaddr, remoteaddr)

Создаёт новый сервер-чистый прокси. Аргументы – как в SMTPServer. Всё будет пересылаться на remoteaddr. Имейте в виду, что его запуск с большой вероятностью сделает вас открытым ретранслятором, поэтому будьте осторожны.

20.13.4. Объекты MailmanProxyMailmanProxy Objects

class smtpd.MailmanProxy(localaddr, remoteaddr)

Создаёт новый чистый прокси-сервер. Аргументы те же, что и в SMTPServer. Всё будет перенаправляться на remoteaddr, если только локальные настройки mailman не знают об адресе – в этом случае обработка пойдёт через mailman. Учтите, что запуск этого сервера с большой вероятностью превратит вас в открытый релей, так что будьте осторожны.