我有一个python脚本在localhost中运行SMTP服务器 . 这是我非常简单的代码:
import smtpd
import asyncore
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)
server = CustomSMTPServer(('127.0.0.1', 25), None)
asyncore.loop()
如果我从localhost上运行的电子邮件客户端发送电子邮件,则电子邮件将成功到达STMP服务器 . 但是,如果我从位于同一本地网络(192.168.1.1/24)的计算机中运行的电子邮件客户端发送电子邮件,则不会成功 . 下面是我从Outlook Express获得的错误:
The connection to the server has failed. Account 'localhost', Server '192.168.1.115'.
Protocol SMTP, Port: 25, Secure(SSL): No, Socket Error: 10061, Error Number: 0x800CCC0E
为了以防万一,我在两台PC上都停用了McAfee防火墙,但我仍然遇到同样的错误 .
哪里可以问题?它与asyncore.loop()方法有什么关系吗?谢谢!
1 回答
您的服务器正在环回接口上运行:
无法从任何外部网络访问该接口,只能从本地计算机访问该接口 .
您需要在真实的网络接口(例如192.168.1.115,基于错误消息)上启动您的电子邮件服务器 .
此外,我怀疑你无论如何都无法检索任何消息 . 您正在运行SMTP服务器:它通过SMTP接受邮件但不提供POP3 / IMAP服务,因此您无法使用远程电子邮件客户端检索邮件 . SMTP服务器可用于在本地基于文件的消息存储中存储消息(并且如果格式正确,则在同一台计算机上运行的电子邮件客户端可以从文件中检索消息) .