1 python 有个模块 smtpd ,用来作为 smtp 服务器,可以自己实现邮件服务器 smtp 功能。
这个模块有 4 个 class:
smtpd.SMTPServer : 需要实现 process_message 函数,可以自己定义处理消息的内容,再发送给相应的其他邮件服务器,不过在 windows 下实验,实际没有发送邮件,只是个空 smtp 服务器。
smtpd.PureProxy:作为纯代理转发 ,可以发送。用 wireshark 可见实际发送数据给外部 mx 。
smtpd.MailmanProxy: mailman 的代理转发
smtpd.DebuggingServer: 主要做调试用。
2 smtp 用来作为客户端发送邮件,和 foxmail 等功能类似。
一般免费 smtp 都需要验证才能发送,也不支持 relay(转发) .
所以只能自己投递给邮件地址的 mx 服务器。
使用 nslookup ,设置 set type=mx , 可以查询到 mx 服务器
这时候的 mx 服务器是不需要验证的。如下代码只能发送给后缀是 qq.com
的邮箱 。不过也有发送份数限制。如果通过代理服务器绕过 ip 验证,理论上应该可以无限发送邮件。
代码:
import smtpd
import asyncore
print 'proxy start at 25 ...'
server = smtpd.PureProxy(('127.0.0.1', 25), ('mx1.qq.com', 25))
asyncore.loop()