主题: 如何建立反垃圾邮件白名单

==== 必填信息。没有填写将不予回复 ====
- iRedMail 版本号:0.9.0,iredapd:1.6.0
- 使用哪个数据库存储用户帐号(OpenLDAP,MySQL,PostgreSQL):MySQL
- 使用的 Linux/BSD 发行版名称及版本号:CentOS6.5
- 与您的问题相关的日志信息:
====
张工:因为现在反垃圾邮件spamassassin会将一些正常邮件标记为垃圾邮件(打上[SPAM]标签),我想通过增加反垃圾邮件白名单,使spamassassin不对白名单里的域进行反垃圾邮件扫描。我想请问下这个要怎么做。

是否是通过启用amavisd_wblist.py插件来实现,如果是,我查看了下脚本中写的说明文档,但是对配置上还是有些疑惑:
# How to use this plugin:
#
# *) Enable `@lookup_sql_dsn` in Amavisd config file.
#
# *) Set Amavisd lookup SQL database related parameters (amavisd_db_*) in
#    iRedAPD config file `settings.py`, and enable this plugin.
#
# *) Enable iRedAPD in Postfix `smtpd_recipient_restrictions`.
#
# *) Enable this plugin in iRedAPD config file (/opt/iredapd/settings.py).
# *) Restart both iRedAPD and Postfix services.

1.Enable `@lookup_sql_dsn` in Amavisd config file.

# @lookup_sql_dsn =
#   ( ['DBI:mysql:database=mail;host=127.0.0.1;port=3306', 'user1', 'passwd1'],
#     ['DBI:mysql:database=mail;host=host2', 'username2', 'password2'],
#     ["DBI:SQLite:dbname=$MYHOME/sql/mail_prefs.sqlite", '', ''] );
# @storage_sql_dsn = @lookup_sql_dsn;  # none, same, or separate database
# @storage_redis_dsn = ( {server=>'127.0.0.1:6379', db_id=>1} );
# $redis_logging_key = 'amavis-log';
# $redis_logging_queue_size_limit = 300000;  # about 250 MB / 100000

...

@lookup_sql_dsn = @storage_sql_dsn;
我在我的amavisd.conf文件中找到两处关于lookup_sql_dsn参数的内容,是要把以下配置前的注释都去掉吗?但是数据库、账号和密码应该对应填什么?是否是填写第二步中对应的amavisd_db_name、amavisd_db_user、amavisd_db_password
# @lookup_sql_dsn =
#   ( ['DBI:mysql:database=mail;host=127.0.0.1;port=3306', 'user1', 'passwd1'],
#     ['DBI:mysql:database=mail;host=host2', 'username2', 'password2'],
#     ["DBI:SQLite:dbname=$MYHOME/sql/mail_prefs.sqlite", '', ''] );

2.Set Amavisd lookup SQL database related parameters (amavisd_db_*) in iRedAPD config file `settings.py`, and enable this plugin.

plugins = ["reject_null_sender", "amavisd_message_size_limit", "amavisd_wblist", "sql_alias_access_policy"]

...

# For Amavisd policy lookup
amavisd_db_server = "127.0.0.1"
amavisd_db_port = "3306"
amavisd_db_name = "amavisd"
amavisd_db_user = "amavisd"
amavisd_db_password = "xxxx"

以上是settings.py文件中的默认参数,是否还需要做其他操作?

3.Enable iRedAPD in Postfix `smtpd_recipient_restrictions`.

smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/MYRules/Mail_recipients,reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unlisted_recipient, check_policy_service inet:127.0.0.1:7777, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

以上是main.cf文件中smtpd_recipient_restrictions参数的配置,是否需要调整

4.Enable this plugin in iRedAPD config file (/opt/iredapd/settings.py).

这个是否是对应着第二步的plugins = ["reject_null_sender", "amavisd_message_size_limit", "amavisd_wblist", "sql_alias_access_policy"],还是有其他什么需要配置。

5.Restart both iRedAPD and Postfix services.

配置完后我要如何新增并管理我的白名单?

回复: 如何建立反垃圾邮件白名单

管理黑白名单请看以下文档:
http://www.iredmail.com/docs/manage.iredapd.html

回复: 如何建立反垃圾邮件白名单

张工:首先您提供的这份文档我在提问前就已经看过,但是我仍有以下几个疑问。
1.我理解建立反垃圾邮件白名单而使系统不对白名单的邮件域名扫描是通过使用iredapd建立是否正确?
2.根据我上面发的帖子,我对配置白名单方法的理解是否正确?
3.您提供文档的白名单管理是通过wblist_admin.py脚本实现,但是这个脚本是在iredapd1.7以后的版本,我用的是iredapd1.6的版本,1.6的版本该如何管理?是否要升级到1.7版本才能真正意义上的使用白名单?
3.1我现在使用python amavisd_wblist.py --list命令查看时会报以下错误:
Traceback (most recent call last):
  File "amavisd_wblist.py", line 41, in <module>
    from libs import SMTP_ACTIONS, sqllist, utils
ImportError: No module named libs
3.2如果需要升级iredapd来解决白名单管理的问题,那升级iredapd有哪些注意事项?
请张工帮忙解惑,谢谢!

回复: 如何建立反垃圾邮件白名单

叶嘉文 写道:

1.我理解建立反垃圾邮件白名单而使系统不对白名单的邮件域名扫描是通过使用iredapd建立是否正确?

当前 iredapd 和 amavisd 公用黑白名单。iredapd 作用于邮件进入队列之前,而 amavisd 作用于邮件进入队列之后。

叶嘉文 写道:

2.根据我上面发的帖子,我对配置白名单方法的理解是否正确?

正确。

叶嘉文 写道:

3.您提供文档的白名单管理是通过wblist_admin.py脚本实现,但是这个脚本是在iredapd1.7以后的版本,我用的是iredapd1.6的版本,1.6的版本该如何管理?是否要升级到1.7版本才能真正意义上的使用白名单?

升级。文档在此:
http://www.iredmail.com/docs/upgrade.iredapd.html