20.13. smtpd-SMTP 服务器

源代码: Lib/smtpd.py


该模块提供了几种实现 SMTP 服务器的类。一种是通用的什么都不做的实现,可以将其重写,而其他两种则提供特定的邮件发送策略。

20.13.1. SMTPServer 对象

    • class * smtpd. SMTPServer(* localaddr remoteaddr *)
    • 创建一个新的SMTPServer对象,该对象绑定到本地地址* localaddr 。它将 remoteaddr *视为上游 SMTP 中继器。 * localaddr remoteaddr *应该都是(host, port)Tuples。该对象继承自asyncore.dispatcher,因此将在实例化时将自身插入asyncore的事件循环中。
  • process_message((peer mailfrom rcpttos data *)

    • 引发NotImplementedError个 exception。在子类中重写此内容,以对此消息执行一些有用的操作。无论在构造函数中作为* remoteaddr *传递的内容,都可以用作_remoteaddr属性。 * peer 是远程主机的地址, mailfrom 是信封的始发者, rcpttos 是信封的收件人, data *是包含电子邮件内容的字符串(应为 RFC 2822格式)。

20.13.2. 调试服务器对象

    • class * smtpd. DebuggingServer(* localaddr remoteaddr *)
    • 创建一个新的调试服务器。参数根据SMTPServer。消息将被丢弃,并在标准输出上打印。

20.13.3. PureProxy 对象

    • class * smtpd. PureProxy(* localaddr remoteaddr *)
    • 创建一个新的纯代理服务器。参数根据SMTPServer。一切都会中继到* remoteaddr *。请注意,运行此命令很有可能使您进入开放继电器,因此请小心。

20.13.4. MailmanProxy 对象

    • class * smtpd. MailmanProxy(* localaddr remoteaddr *)
    • 创建一个新的纯代理服务器。参数根据SMTPServer。除 nonlocal 邮递员配置知道地址,否则所有内容都将中继到* remoteaddr *,在这种情况下,它将pass邮递员处理。请注意,运行此命令很有可能使您进入开放继电器,因此请小心。