我有 smtp 服务器 exim。我想禁止在电子邮件发送到不存在的地址时发送退回邮件。我在配置中的 acl 开头添加了以下内容:
begin acl
acl_check_rcpt:
deny domains = +local_domains
message = Can't verify recipient
!verify = recipient
但它没有帮助我。
在日志中可以看到正在工作的路由器:
rcpt_check_router:
driver = redirect
allow_fail
no_verify
data = "${if eq{}{${lookup mysql{ SQLUSR }}}{:fail: unknown local user}{$local_part@$domain} }"
当 :fail: 被 :blackhole: 取代时
rcpt_check_router:
driver = redirect
allow_fail
no_verify
data = "${if eq{}{${lookup mysql{ SQLUSR }}}{:blackhole: unknown local user}{$local_part@$domain} }"
没有退回消息。但 Exim 收到消息。
如何使用:fail:而不从邮件传递系统向发件人发送电子邮件?
答案1
您的 ACL 将通知发送服务器该地址未被接受。如果您想避免退回无效地址,则需要在这种情况下接受。或者,您可以推迟,这将导致发送服务器重新排队该消息。大多数垃圾邮件机器人不会重试。
如果您不退回或推迟到合法发件人,您可能会收到大量曾经有效的邮件地址。使用标准配置,拒绝发件人时发送的任何邮件都由发送服务器发送,而不是由 Exim 发送。接受邮件后退回邮件会导致反向散射垃圾邮件。
如果您接受所有发往本地域的邮件,则应配置路由器以将邮件发送到无效的电子邮件地址。如果路由器设置错误,您可能会丢弃有效的电子邮件。如果您接受,路由器似乎应该可以正常工作。但是,如果数据库调用失败,您可能会将合法邮件拒之门外。