主题: 伪造寄件人地址
我们的邮箱现在存在如下几个问题
1. A用户登录之后发送邮件的时候可以任意修改from为其他人(不管这个地址是否存在)的邮箱地址, 给B发送邮件
2. 邮件列表的邮箱地址可以用来给任意人发送邮件,而不需要登录验证, 接收到这个邮件的用户的from上显示的就是邮件列表的地址.
对于问题1 我们的发信规则中有加入: reject_sender_login_mismatch, reject_authenticated_sender_login_mismatch, 来进行限制, 但是好像无效
对于问题2的验证. 有如下脚本
假设all@example.com 是一个邮件列表的地址
import sys
import smtplib
import email.utils
from email.mime.text import MIMEText
content = ["test",'test']
msg = MIMEText(''.join(content))
msg['To'] = email.utils.formataddr(('yp2','yp2@example.com,'))
msg['From'] = email.utils.formataddr(('all','all@example.com'))
msg['Subject'] = 'this is fake mail'
server = smtplib.SMTP()
try:
server.connect('mx.example.com')
server.ehlo()
server.sendmail('all@example.com',['yp2@example.com'],msg.as_string())
except Exception,e:
print e
sys.exit(1)
finally:
server.quit()