==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.4 X64
- 与您的问题相关的日志信息:
====
最近gmail 向我域发送有问题,时不时会收到退信
Remote server does not support EHLO 内容

我域向gmail发送没有问题

经过张工指导在main.cf打开debug_peer_list=gmailIP
dubug出现在timeout超时的位置,经过查看配置文件发现配置中有如下参数
smtp_connect_timeout = 10s
smtpd_timeout = 10s
果断删除,使用默认值
到现在测试一切正常

这个问题在这已解决
http://www.iredmail.com/bbs/topic2516-i … edapd.html
结帖吧

确实解决了,感谢张工的不厌其烦回答与解决问题,可以结贴了

它这个主要是为了解决大量的伪造投递的目标地址不存在的情况下,系统会产生大量的退信,是主要解决这个问题的,其实这个问题,可以用正则表达式在检查头信息的地方做,但这个是需要一个条件的,那就是from 为空并且是目标地址是我的别名,并且 我别名没有允许任何人发送到这个别名的情况下拒绝,其它的都允许。


其实,我感觉你没理解我说的重点,我其实不是要阻止想这种from为空的邮件进入我的邮箱,而是要解决 我本身设置只能管理员才能发送到我的别名组的,这种from为空的竟然也可以发送进去,你觉得这是postfix的机制问题,但我觉得这应该是iredadp是设计的时候,没有考虑到对from为空的情况下的限制问题。


说白一点,就是irepapd 条件限制不严格。

public: Unrestricted. Everyone can mail to this address.   这个是可以from 为空 的向我发送
domain: Only users under same domain can send mail to this address.  这个也可以
subdomain: Only users under same domain and sub-domains can send mail to this address.  这个还可以
membersOnly: Only members can send mail to this address.  这个就不可以了,因为这个的意思only,只能是成员,from显示不是我的成员。
allowedOnly: Only moderators can send mail to this address.  这个更要拒绝,from为空,显然不是我的管理员
membersAndModeratorsOnly: Only members and moderators can send mail to this address.  这个更是了from为空不是我的管理员也不是我的成员

我想这是我对这几个限制条件的理解。




ZhangHuangbin 写道:

完整的邮件头就这么几行么?这个就有点怪了。

空发件人是 RFC 里规定运行的,恐怕还以另外的方式来屏蔽这类的垃圾邮件才行。你看看这里的方法是否对你有用:
http://www.postfix.org/BACKSCATTER_README.html

###发送信息##
20-06-2013 17:56:42 Log record is created.
Message from   to lishixin@dongao.cn, file 14q5td0-000-0000.msg
Request DNS for SMTP servers for this e-mail...
Try DNS-server 192.168.0.181
Sending DNS request...
Found 1 relay(s) (mail.dongao.cn [5])
Send via mail.dongao.cn SMTP-server
Host: mail.dongao.cn
Connecting to SMTP server...
IP: 211.151.33.219
Port: 25
Socks5 not used
Connected with SMTP-server
< 220 mail.dongao.cn ESMTP Postfix
> EHLO baidu.com
< 250-mail.dongao.cn
250-PIPELINING
250-SIZE 15728640
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
> MAIL FROM:< >
< 250 2.1.0 Ok
> RCPT TO:<lishixin@dongao.cn>
< 250 2.1.5 Ok
> DATA
< 354 End data with <CR><LF>.<CR><LF>
...Message body was sent, 9 bytes
250 2.0.0 Ok: queued as 8E31161B1E
> QUIT
< 221 2.0.0 Bye
mail.dongao.cn "250 2.0.0 Ok: queued as 8E31161B1E"

####接收到的信息####
Return-Path: <MAILER-DAEMON>
Delivered-To: lishixin@dongao.cn
Received: from baidu.com (unknown [124.65.129.74])
    by mail.dongao.cn (Postfix) with ESMTP id 8E31161B1E
    for <lishixin@dongao.cn>; Thu, 20 Jun 2013 17:56:44 +0800 (CST)

test

###############################
baidu.com 是我伪造,这是就from 为空的收到的信息头,如果你们有限制别名组的,我还可以伪造一个from为空的给你们发一封,你们就可以收到了。
当然这个是没有把垃圾邮件直接隔离的情况下。

那它其不是 是一个BUG,在过滤from 的时候 允许空格这种字符了,那这家伙,一时半会解决不了。 那我应该怎么做啊,向postfix提交bug吗,

ZhangHuangbin 写道:

抱歉,我不认为应该在 iRedAPD 这里做控制。问题在于它如何绕过了 Postfix 的种种限制。

Advanced Direct Remailer
是一个smtp服务器
来模拟向我的邮件服务器发信使用的
这个测试是最新的,不是job@那个别名,这个别名是我在一个测试环境里面搞的,这个只是为了演示from为空是怎么进入系统里面的。我想你应该解决一下iredapd可以绕过去的情况。

ZhangHuangbin 写道:

用Advanced Direct Remailer 本地建一个SMTP Server

这个 Advanced Direct Remailer 是什么?

*) sender 邮件地址少于6个字符不应该直接拒收,因为有其他情况会出现 sender 邮件地址少于6个字符的情况。

*) 你在邮件里给的 iRedAPD debug 日志里显示 job@ 这个帐号没有设置 access policy,所以 iRedAPD 认为所有人都可以往 job@ 这个别名发送邮件。

*) sender 为空的情况还需要再测试一下,可能是 iRedMail 的配置有疏漏,但暂时无法确定。抱歉。

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.4 X64
- 与您的问题相关的日志信息:
====
用Advanced Direct Remailer 本地建一个SMTP Server
telnet localhost 25
250 OK
ehlo example.com
250 OK
mail from:< > ##中间有个空格
250 OK
rcpt to:lishixin@example.cn
250 OK
data
354 Start mail input; end with <CRLF>.<CRLF>
test
.
250 OK
####
### maillog ###########################################################################3
Jun 18 13:49:54 mail postfix/smtpd[23083]: connect from unknown[124.65.12.4]
Jun 18 13:49:54 mail policyd: connection from: 127.0.0.1 port: 34520 slots: 0 of 2044 used
Jun 18 13:49:54 mail policyd: rcpt=1, module=bypass, host=124.65.12.4 (unknown), from=<>, to=lishixin@example.cn, size=0
Jun 18 13:49:54 mail postfix/smtpd[23083]: 59105619AC: client=unknown[124.65.12.4]
Jun 18 13:49:54 mail postfix/cleanup[23201]: 59105619AC: message-id=<>
Jun 18 13:49:54 mail postfix/qmgr[3713]: 59105619AC: from=<>, size=181, nrcpt=1 (queue active)
Jun 18 13:49:54 mail postfix/smtpd[23083]: disconnect from unknown[124.65.12.4]
Jun 18 13:49:54 mail postfix/pipe[23203]: 59105619AC: to=<lishixin@example.cn>, relay=dovecot, delay=0.19, delays=0.1/0.01/0/0.08, dsn=2.0.0, status=sent (delivered via dovecot service)
##### iredapd log ########
2013-06-18 13:56:42 DEBUG Connect from 127.0.0.1, port 40108.
2013-06-18 13:56:42 DEBUG smtp session: request=smtpd_access_policy
2013-06-18 13:56:42 DEBUG smtp session: protocol_state=RCPT
2013-06-18 13:56:42 DEBUG smtp session: protocol_name=ESMTP
2013-06-18 13:56:42 DEBUG smtp session: client_address=124.65.12.4
2013-06-18 13:56:42 DEBUG smtp session: client_name=unknown
2013-06-18 13:56:42 DEBUG smtp session: reverse_client_name=unknown
2013-06-18 13:56:42 DEBUG smtp session: helo_name=baidu.com
2013-06-18 13:56:42 DEBUG smtp session: sender=
2013-06-18 13:56:42 DEBUG smtp session: recipient=lishixin@example.cn
2013-06-18 13:56:42 DEBUG smtp session: recipient_count=0
2013-06-18 13:56:42 DEBUG smtp session: queue_id=
2013-06-18 13:56:42 DEBUG smtp session: instance=5a2b.51bff69a.74d3d.0
2013-06-18 13:56:42 DEBUG smtp session: size=0
2013-06-18 13:56:42 DEBUG smtp session: etrn_domain=
2013-06-18 13:56:42 DEBUG smtp session: stress=
2013-06-18 13:56:42 DEBUG smtp session: sasl_method=
2013-06-18 13:56:42 DEBUG smtp session: sasl_username=
2013-06-18 13:56:42 DEBUG smtp session: sasl_sender=
2013-06-18 13:56:42 DEBUG smtp session: ccert_subject=
2013-06-18 13:56:42 DEBUG smtp session: ccert_issuer=
2013-06-18 13:56:42 DEBUG smtp session: ccert_fingerprint=
2013-06-18 13:56:42 DEBUG smtp session: encryption_protocol=
2013-06-18 13:56:42 DEBUG smtp session: encryption_cipher=
2013-06-18 13:56:42 DEBUG smtp session: encryption_keysize=0
2013-06-18 13:56:42 INFO [124.65.12.4]  -> lishixin@example.cn, DUNNO
2013-06-18 13:56:42 DEBUG Connection closed
2013-06-18 13:56:42 DEBUG Closed SQL connection.

####问题关键所在############
/opt/iredapd/libs/sql/modeler.py

        # Not a valid email address.
        if len(smtp_session_data['sender']) < 6:
            return 'DUNNO'

sender 小于6的最后都dunno了。然后这个就直接返回了。
#### 暂时解决方法############
开启垃圾邮件,直接隔离
等待 张工处理吧

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.4 X64
- 与您的问题相关的日志信息:
====
[lishixin@mail tools]$ python cleanup_amavisd_db.py   
* [2013-06-17 16:30:23] Loading config file: /var/www/iRedAdmin-Pro-MySQL-1.6.0/tools/../settings.ini
Traceback (most recent call last):
  File "cleanup_amavisd_db.py", line 52, in <module>
    backend = cfg.get('general', 'backend')
  File "/usr/lib64/python2.6/ConfigParser.py", line 532, in get
    raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'general'


我找到问题了,原来是我没有sudo

这是我的amavisd 配置
@mynetworks = qw( 127.0.0.0/8 10.0.0.0/8 211.151.33.96/27 192.168.0.0/16 );

@inet_acl= qw( 127.0.0.0/8 10.0.0.0/8 211.151.33.96/27 192.168.0.0/16 );

白名单我看了,没有,我是不可能允许这种Ip在白名单里面的
另外我在日志中还发现我所有amavis都是显示是local
Jun 16 03:38:13 wumei amavis[22128]: (22128-15) Blocked SPAM, LOCAL [111.176.69.238] [111.176.69.238] <pnkr@jylnzsyag.org> ->

LOCAL每一个amavis检查的这个地方都有这个local标志,这不知道,这是否是正常情况 。

ZhangHuangbin 写道:

比较奇怪,没有 from 地址,没有 message-id。暂时还不知道它如何生成这样的邮件并进入你的服务器的。

*) 检查一下 policyd 的数据库里是否将这个 IP 列为白名单了。日志里显示 bypass,可能之前已经列为白名单。

*) 另外,你是否将这个 IP 在 Amavisd 里添加为内部网段了?日志里是这么显示的:

Jun 15 10:18:46 wumei amavis[18696]: (18696-13) Passed SPAM, LOCAL [27.46.112.206] [27.46.112.206] <> -> <bianwensi@dongao.com>, quarantine: IQc08s0jD7mK, mail_id: IQc08s0jD7mK, Hits: 9.502, size: 714, queued_as: 421C3801C7, 1639 ms

你是说的policyd.conf里面的SENDERTHROTTLE=0
和RECIPIENTTHROTTLE=0这个默认可是0啊。

ZhangHuangbin 写道:

Policyd 默认已经开启了相关的参数。

这个就是提取过的一分钟时间段的日志啊,只是名字我重命名成maillog了,正常的日志怎么可能只有几百K啊,我正常的都几百M,这是一分钟,从开始到结束的完整日志,我只贴一点,我怕不全。

ZhangHuangbin 写道:

请自己先提取出相关的信息,再贴上来。你不能简单地把日志一丢完事吧

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.4 X64
- 与您的问题相关的日志信息:
====
针对配置项中的,邮件收发限制问题,这个是否需要在policyd.conf 把相关的选项打开,还是不用打开就可以,这个有点小疑问?

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:
- 与您的问题相关的日志信息:
==== ==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.4 X64
- 与您的问题相关的日志信息:
====
恶意IP:27.46.112.206
持续时间:2013-06-15 10:18:44到2013-06-15 10:19:49
临时解决办法:黑名单封锁IP
造成危害:发送上百封垃圾邮件

具体日志 看附件,请张工给分析一下。

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:
- 与您的问题相关的日志信息:
==== ==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):
- 使用的 Linux/BSD 发行版名称及版本号:CentOS 6.4 X64
- 与您的问题相关的日志信息:
====
编辑 vim /etc/dovecot/dovecot.conf 去除如下行的# 符号
    sieve_before = /data/vmail/before_sieve/before.sieve
创建对应的文件 内容 如下
# rule:[Undelivered Copy to maintain]
if allof (header :contains "From" "MAILER-DAEMON", not header :contains "To" "root@")
{
        redirect :copy "test1@domain.com";
}
注意保持权限一致
然后service dovecot restart
这样发件人 包含MAILER-DAEMON 并且 收件人不包含 root@的邮件都会复制一份到test1@domain.com这个邮箱里面,
这个文件的内容当然不是我手写的,这个是生成的。
具体生成方法看附件里面的图片吧,大家一看都笑了,原来这么简单。

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本:  iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用的 Linux/BSD 发行版名称及版本号:  iRedAdmin-Pro    v1.6.0 (MySQL)
- 与您的问题相关的日志信息:
====
最近隔离系统因为一次QQ的问题,发现QQ的10000@qq.com发送到我的邮件有问题,联系了张工,才知道是是它的头不规范,仔细查看日志,发现 智联,前程无忧的一些邮件也标注上了垃圾文件的头,虽然邮件本身有问题,但想想还是想办法解决一下,最近人事部,老是说邮件比以前少了,少了,天天少了,少的我头都大了,所以直接把前程无忧,智联招聘的服务器设置到白名单里面,具体配置如下:
sudo vim /etc/amavisd/amavisd.conf
把 280行的#号去除
268   '.' => [  # the _first_ matching sender determines the score boost
269
270    new_RE(  # regexp-type lookup table, just happens to be all soft-blacklist
271     [qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou)@'i         => 5.0],
272     [qr'^(greatcasino|investments|lose_weight_today|market\.alert)@'i=> 5.0],
273     [qr'^(money2you|MyGreenCard|new\.tld\.registry|opt-out|opt-in)@'i=> 5.0],
274     [qr'^(optin|saveonlsmoking2002k|specialoffer|specialoffers)@'i   => 5.0],
275     [qr'^(stockalert|stopsnoring|wantsome|workathome|yesitsfree)@'i  => 5.0],
276     [qr'^(your_friend|greatoffers)@'i                                => 5.0],
277     [qr'^(inkjetplanet|marketopt|MakeMoney)\d*@'i                    => 5.0],
278    ),
279
280   read_hash("/var/amavis/sender_scores_sitewide"),
281
282    { # a hash-type lookup table (associative array)
283      'nobody@cert.org'                        => -3.0,
284      'cert-advisory@us-cert.gov'              => -3.0,
285      'owner-alert@iss.net'                    => -3.0,
286      'slashdot@slashdot.org'                  => -3.0,
287      'securityfocus.com'                      => -3.0,
288      'ntbugtraq@listserv.ntbugtraq.com'       => -3.0,
289      'security-alerts@linuxsecurity.com'      => -3.0,
290      'mailman-announce-admin@python.org'      => -3.0,
291      'amavis-user-admin@lists.sourceforge.net'=> -3.0,
292      'amavis-user-bounces@lists.sourceforge.net' => -3.0,


然后新建一个 sender_scores_sitewide 文件,路径保持一致
[lishixin@mail ~]$ cat /var/amavis/sender_scores_sitewide
.quickmail.51job.com    -5.0
.zhaopinmail.com          -5.0
.qq.com                        -5.0

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本: iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用的 Linux/BSD 发行版名称及版本号: CentOS6.4 X64
- 与您的问题相关的日志信息:
====
# Set default action.
# Available actions: D_PASS, D_BOUNCE, D_REJECT, D_DISCARD.
$final_virus_destiny      = D_DISCARD;
$final_banned_destiny     = D_PASS;
$final_spam_destiny       = D_PASS;
$final_bad_header_destiny = D_PASS;

我的隔离配置如上,都是采用默认配置,在控制台上面显示出的隔离数量是不是不代表用户没有收到,只是显示打上垃圾邮件标记的数量,这里这并没有直接拒绝,情况是不是这样的。张工?

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本: iRedAdmin-Pro    v1.6.0 (MySQL)
- 使用的 Linux/BSD 发行版名称及版本号: CentOS 6.4 X64
- 与您的问题相关的日志信息:
====

从 X-Spam-Status 这个邮件头里可以看到,qq 发出的邮件头是不规范
的,缺少了 "Date:" 这个邮件头,被 SpamAssassin 标记了高分。

你可以试试在 Amavisd 里不检查 bad header。在
amavisd.conf 里搜索 "bad_header”。

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本: iRedAdmin-Pro     v1.6.0 (MySQL)
- 使用的 Linux/BSD 发行版名称及版本号: CentOS6.4 X64
- 与您的问题相关的日志信息:
====
在迁移后升级成iRedAdmin-Pro版本后,添加别名成员添加不进去,联系张工最终才知道,因为从extmail迁移过来,没有对alias表进行添加,这个在别名操作的时候,会检查这个表。所以在迁移后,要对这个表进行添加。

具体字段要求,其实很简单
insert into alias (address, goto, domain) values ('user@domain.com', 'user@domain.com', 'domain.com');
像这样,然后批量搞一下就OK了。