我想只检查传入电子邮件的黑名单。我的用户通常使用被列入黑名单的动态 IP,因此如果我打开黑名单选项,他们将无法发送电子邮件。我该如何实现这一点?此外,有没有办法设置自动删除标记为垃圾邮件的电子邮件?
这是我的 exim 配置。 http://paste.servergur.us/wilumojabi.coffee
答案1
你必须白名单合法发件人,而其他发件人则通过黑名单。但更有效的方法是使用带身份验证的 SMTPS。
exim
旨在询问spamd
ACL 的分数,如果分数足够高 - 只需拒绝或将消息放入黑洞即可。传递 + 删除是浪费资源。
答案2
从相反的方向思考一下:您希望将 RBL 检查限制为仅检查那些不是来自经过身份验证的用户的入站电子邮件:
deny message = rejected because $sender_host_address is in a black list \
at $dnslist_domain\\n$dnslist_text
!authenticated = *
dnslists = ${readfile {/etc/exim/dnsbl.conf}{:}}
您的第二个问题可以通过两种方式解决。一种是您可以将垃圾邮件直接发送到用户的垃圾邮件文件夹,而不是他们的收件箱。
# Add X-Spam-Flag if spam is over system-wide threshold for non-authed users
warn condition = ${if >{$message_size}{500K}{no}{yes}}
!authenticated = *
spam = exim
add_header = X-Spam-Flag: Yes
set acl_m_filter_to_spam = 1
# In transport which actually delivers the email, if $acl_m_filter_to_spam
# is set, I append ".Spam/" to the maildir delivery path
另一种选择是拒绝该消息而不是接受它。
# Reject spams with score over limit for non-authed users
deny condition = ${if >{$message_size}{500K}{no}{yes}}
!authenticated = *
message = This message scored $spam_score points. Rejected.
spam = exim:true
condition = ${if >{${eval10:$spam_score_int/10}}{INBOUND_SPAM_LIMIT}}
就我而言,我实际上会同时做这两件事。如果电子邮件的评分为 5.0 或更高,我会将其标记为垃圾邮件。如果评分为 5.0 到 5.9,我会将其过滤到垃圾邮件文件夹。如果评分为 6.0 或更高,我会完全拒绝该电子邮件。
请注意,上述垃圾邮件示例适用于常规入站电子邮件。我复制了整个部分以扫描发送邮件的 SMTP 身份验证用户,我只是启用/禁用了不同的分数,并设置了不同的垃圾邮件和拒绝阈值。