smtpd.md
1> **Источник:** https://python-all.ru/2.7/library/smtpd.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 20.13. [`smtpd`](https://python-all.ru/2.7/library/smtpd.html#module-smtpd) – SMTP-сервер89**Исходный код:** [Lib/smtpd.py](https://python-all.ru/src/2.7/Lib/smtpd.py)1011---1213Этот модуль предоставляет несколько классов для реализации SMTP-серверов. Один из них – универсальная реализация, которая ничего не делает и может быть переопределена, а два других предлагают конкретные стратегии отправки почты.1415## 20.13.1. Объекты SMTPServer1617#### `class smtpd.SMTPServer(localaddr, remoteaddr)`1819Создаёт новый объект [`SMTPServer`](https://python-all.ru/2.7/library/smtpd.html#smtpd.SMTPServer), который привязывается к локальному адресу *localaddr*. Он будет рассматривать *remoteaddr* как вышестоящий SMTP-ретранслятор. Оба *localaddr* и *remoteaddr* должны быть кортежем [(host, port)](https://python-all.ru/2.7/library/socket.html#host-port) . Объект наследуется от [`asyncore.dispatcher`](https://python-all.ru/2.7/library/asyncore.html#asyncore.dispatcher) и поэтому встраивается в цикл событий [`asyncore`](https://python-all.ru/2.7/library/asyncore.html#module-asyncore) при создании.2021#### `process_message(peer, mailfrom, rcpttos, data)`2223Вызывает исключение [`NotImplementedError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.NotImplementedError). Переопределите этот метод в подклассах, чтобы выполнять полезные действия с этим сообщением. Всё, что было передано в конструктор как *remoteaddr*, будет доступно как атрибут `_remoteaddr` . *peer* – адрес удалённого хоста, *mailfrom* – отправитель конверта, *rcpttos* – получатели конверта, а *data* – строка, содержащая содержимое письма (должна быть в формате [**RFC 2822**](https://python-all.ru/2.7/library/smtpd.html) ).2425## 20.13.2. Объекты DebuggingServer2627#### `class smtpd.DebuggingServer(localaddr, remoteaddr)`2829Создаёт новый отладочный сервер. Аргументы – как в [`SMTPServer`](https://python-all.ru/2.7/library/smtpd.html#smtpd.SMTPServer). Сообщения будут отбрасываться и выводиться на stdout.3031## 20.13.3. Объекты PureProxy3233#### `class smtpd.PureProxy(localaddr, remoteaddr)`3435Создаёт новый сервер-чистый прокси. Аргументы – как в [`SMTPServer`](https://python-all.ru/2.7/library/smtpd.html#smtpd.SMTPServer). Всё будет пересылаться на *remoteaddr*. Имейте в виду, что его запуск с большой вероятностью сделает вас открытым ретранслятором, поэтому будьте осторожны.3637## 20.13.4. Объекты MailmanProxy3839#### `class smtpd.MailmanProxy(localaddr, remoteaddr)`4041Создаёт новый чистый прокси-сервер. Аргументы те же, что и в [`SMTPServer`](https://python-all.ru/2.7/library/smtpd.html#smtpd.SMTPServer). Всё будет перенаправляться на *remoteaddr*, если только локальные настройки mailman не знают об адресе – в этом случае обработка пойдёт через mailman. Учтите, что запуск этого сервера с большой вероятностью превратит вас в открытый релей, так что будьте осторожны.42