我在 Linux 下有一个使用 smtpd.SMTPServer 接收电子邮件的小应用程序。这是小测试代码:
class CustomSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
print 'Receiving message from:', peer
print 'Message addressed from:', mailfrom
print 'Message addressed to :', rcpttos
print 'Message length :', len(data)
return
server = CustomSMTPServer(('0.0.0.0', 25), None)
asyncore.loop()
我有以下问题:(1)使用这段代码时,发送电子邮件的计算机收到以下消息:502错误:命令“EHLO”未实现,因此服务器无法正确回复以接收更多数据/与电子邮件通信- 发送计算机(我假设是客户端)。
不应该首先在 Ubuntu 安装中实现像 EHLO 这样的基本功能吗?为什么没有实施?
(2) 我认为可以通过在 Ubuntu 中安装 postfix 来安装 EHLO。我这样做了,然后进行了相同的测试调用,但后来因出现不同的错误而停止:
Client: RCPT TO: XXX@YYY.com
Server: 554 5.7.1 <XXX@YYY>: Relay access denied
(3)后来,在做了一些其他测试之后,我从测试代码本身得到了错误:
error: [Errno 98] Address already in use
事实证明,使用的 IP 地址已经在使用中,可以看到
netstat -lnpt
其中的情况是正在运行的后缀。停止 postfix 服务后,地址不再使用,但当然又回到问题 #1:
502 Error: command "EHLO" not implemented
我希望能够使用 SMTPServer 接收电子邮件 1. 无需安装 postfix 2. 使用 asyncore
如果有任何想法如何使用 python 库以简单的方式实现这一点,那就太好了!
干杯亚历克斯