【发布时间】:2017-09-06 18:02:52
【问题描述】:
我有一个在 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
其中的情况是正在运行的后缀。停止后缀服务后,地址不再使用,但当然又回到问题#1:
502 Error: command "EHLO" not implemented
我希望能够使用 SMTPServer 来接收电子邮件 1.无需安装postfix 2. 使用 asyncore
如果有任何想法如何使用 python 库以简单的方式实现这一点,那就太好了!
干杯 亚历克斯
【问题讨论】: