550891493 写道:如果用postfix做黑名单的话 能否可以配置退信自定义消息吗?
可以。看 Postfix 文档: http://www.postfix.org/access.5.html
550891493 写道:2 我用 SpamAssassin 做黑名单 但对方照样可以发送消息过来 只是收到的消息被标志为垃圾信息
SpamAssassin 是一个 after-queue 的垃圾邮件检测工具。用到它的时候邮件已经进入 postfix 队列,所以无法在 smtp 会话阶段就拒收。
550891493 写道:3 网上查资料 看到 Amavisd-new 也可设置黑白名单 那么 Amavisd-new 与 Policyd (cluebringer) 设置的黑白名单 目的(效果) 是不是 一样的 抱歉打扰了
Amavisd-new 在 iRedMail 里被配置为 after-queue 的邮件检测工具,所以和 spamassassin 一样,也是无法在 smtp 会话阶段就拒收。
总结:
实现黑白名单的办法有非常多种,postfix/spamassassin/amavisd/policyd/cluebringer,但要考虑的情况也很多:它们各自在邮件接收过程的哪个阶段起作用、如何管理黑白名单数据、是否可能让数据在多个程序之间共享?
* postfix 自带的 check_sender_access 类似的机制是自带的,但管理它的黑白名单只能是编辑系统上的文件。如果是 hash 格式,编辑完后还要执行 postmap 命令让 postfix 读取修改后的文件。且黑白名单数据无法直接被其它程序使用。
* amavisd 自己也有黑白名单机制(需要用到参数 @lookup_sql_dsn),但因为 amavisd 被配置为 after-queue 里使用,所以无法作用于 smtp 会话阶段直接拒收。
* spamassassin 的情况与 amavisd 类似,不赘述。
* policyd/cluebringer 是直接作用于 smtp 会话阶段的。好处是直接就拒收,节省系统资源。
cluebringer 自带了一个 amavisd 补丁,使得 cluebringer 可以读取 amavisd 里的黑白名单,将原本在 after-queue 阶段的 amavisd 黑白名单变成在 smtp 会话阶段就可以处理,节省了系统资源。但问题在于,这个补丁 amavisd 官方并没有收录,所以你得自己打补丁。这样的后果就是,打了补丁之后,会影响通过 yum/apt-get 等工具升级软件包,并且你还得重新打补丁。
即将发布的 iRedMail-0.9.0 里采用的方案是:
* 因为 amavisd 是核心的 after-queue 的垃圾/病毒邮件检测工具,所以我们将黑白名单保存在 amavisd 里。
* 增加一个 iRedAPD 插件用于在 smtp 会话阶段就读取 amavisd 里的黑白名单来拒收黑名单用户发来的邮件。
* 在 iRedAdmin-Pro 里可以管理 amavisd 的黑白名单。
这个方案还有一点额外的好处:
* 黑白名单可以是针对全局(整个服务器),也可以是单个域,或单个用户。
* 因为上面的配置用到了 amavisd 里的 @lookup_sql_dsn,所以 iRedAdmin-Pro 现在也可以管理 per-recipient policy lookup。例如:配合 iRedAdmin-Pro 里的 self-service(自助服务),用户可以登录 iRedAdmin-Pro 并设置自己的 spam score,管理黑白名单,等。当然管理员也可以管理。