我在新配置的邮件服务器上遇到了一个问题,其中邮件服务器实际上接受了来自本地域的欺骗性垃圾邮件,但邮件并未按原样传递,spamassassin 将其标记为垃圾邮件,然后发送电子邮件“未送达的邮件已返回发件人”给受欺骗的本地用户。

我知道有一种方法可以在配置中修复此问题,但我不知道在哪里,我希望有人能指出正确的方向。

需要明确的是,邮件服务器没有中继,这只是本地用户问题。我希望 postfix 拒绝任何据称来自本地用户且非内部发送的电子邮件。它会阻止这个问题。

这是一封电子邮件,向您展示正在发生的事情。我已将域名更改为 example.com.au。

###############################################


这是主机 example.com.au 的邮件系统。

很遗憾地通知您,您的消息无法发送
交付给一个或多个收件人。它附在下面。

如需更多帮助,请发送邮件到邮政。

如果您这样做,请附上此问题报告。你可以
从附加的返回消息中删除您自己的文本。

邮件系统

:主机 127.0.0.1[127.0.0.1] 说:554 5.7.0 拒绝,id=11887-07 - 垃圾邮件(回复 DATA 命令结束)
?
报告-MTA:dns;example.com.au
X-Postfix-队列-ID:661DC5D1DE
X-Postfix-发件人:rfc822;dan@example.com.au
到达日期:2009 年 5 月 5 日星期二 06:21:38 +1000(美国东部时间)

最终收件人:rfc822;dan@example.com.au
原始收件人:rfc822;dan@example.com.au
行动:失败状态:5.7.0
远程 MTA:域名;127.0.0.1
诊断代码:邮件传输协议;554 5.7.0 拒绝,id=11887-07 - 垃圾邮件?

从:贝热尼丝·佩内斯
日期:星期一, 4
2009 年 5 月 22:21:41 +0200
到: 主题:是你吗,论坛里的?

质量可靠,无延误
送货!超级网上商店
疾病治疗
http://www.xopfekec.cn/

###############################################

Postfix main.cf(重要部分,不完整)

自述文件目录 = /usr/share/doc/postfix
mydomain_fallback = 本地主机
消息大小限制 = 0
邮箱大小限制 = 0
myhostname = example.com.au
邮箱_传输=赛勒斯
mydomain = example.com.au
inet_interfaces = 全部
启用服务器选项=是
mydestination = $myhostname,localhost.$mydomain,localhost,example.com.au
smtpd_sasl_auth_enable = 是
smtpd_use_pw_server = 是
smtpd_recipient_restrictions = allowed_sasl_authenticated、permit_mynetworks、reject_unauth_destination、reject_unknown_recipient_domain、reject_unknown_sender_domain、reject_invalid_hostname
smtpd_pw_server_security_options = 普通,登录
content_filter = smtp-amavis:[127.0.0.1]:10024
我的网络 = 127.0.0.0/8, 10.0.1.0/24
smtpd_client_restrictions=permit_sasl_authenticated,reject_rbl_client dnsbl.sorbs.net

有帮助吗?

解决方案

几个不同点:

  • 这应该在 serverfault.com 上,但由于我不是那里的测试版,所以我会在这里回答它。

  • 的输出 会议后-n 比在 main.cf 中包含您认为相关的行更好。如果您有参数覆盖或其他自定义,还包括 master.cf 中的相关行。

  • 不要像这样接受然后退回邮件。如果您在 Postfix 中使用 SpamAssassin 作为队列后过滤器(通常的运行方式),则需要标记并传送(并使用客户端规则进行过滤)或隔离邮件而不通知发件人。从你的问题来看,你可能是一个反向散射源。停下来。参见示例 http://www.postfix.org/BACKSCATTER_README.html. 。请考虑使用 amavisd-new 将 SpamAssassin 集成到 Postfix 中,并提供各种有用的功能。

  • 考虑将所有限制合并到 smtpd_recipient_restrictions 中。通常,管理此类限制的线性流程比处理 smtpd_{client,helo,sender,recipient}_restrictions 之间的交互更容易。

  • 要防止 Postfix 接受来自外部的邮件,请添加一个 sender_access 映射来拒绝声称来自您的域的邮件:

smtpd_recipient_restrictions = 
  permit_sasl_authenticated, 
  permit_mynetworks, 
  reject_unauth_destination, 
  check_sender_access hash:$config_directory/reject_mydomains
  reject_unknown_recipient_domain,
  reject_unknown_sender_domain,
  reject_invalid_hostname

在reject_mydomains中

example.com.au REJECT you are not me

对于来自具有合法(?)理由使用您的域作为信封发件人(电子贺卡、邀请函、可能是一些外包服务,如调查或诸如此类)的发件人的邮件,这可能很容易出现误报。您可以在返回 OK 或适当限制类的 sender_access 映射之前使用 client_access 映射将您的“非我”规则列入白名单(请参阅 http://www.postfix.org/RESTRICTION_CLASS_README.html).

您可以使用类似的 HELO 检查来清除使用您自己的主机名/IP 或已知错误 HELO 字符串进行 HELO 的客户端

smtpd_recipient_restrictions = 
  permit_sasl_authenticated, 
  permit_mynetworks, 
  reject_unauth_destination, 
  check_helo_access hash:$config_directory/helo_checks
  check_sender_access hash:$config_directory/reject_mydomains
  reject_unknown_recipient_domain,
  reject_unknown_sender_domain,
  reject_invalid_hostname

在 helo_checks 中:

example.com.au             REJECT BAD-HELO you are not example.com.au
mailserver.example.com.au  REJECT BAD-HELO you are not me
localhost                  REJECT BAD-HELO you are not me
localhost.localdomain      REJECT BAD-HELO you are not me
# where 1.2.3.4 is the IP of your server
1.2.3.4                    REJECT BAD-HELO you are not me
127.0.0.1                  REJECT BAD-HELO you are not me

最后,订阅 RBL 等良好声誉的服务是一个非常好的主意。对于大多数用途来说,最佳的 RBL 是 zen.spamhaus.org. 。它可以免费用于轻到中等负载,如果您的使用量足够高以跨越其免费/付费阈值,那么成本是非常值得的。要在 Postfix 中配置,请添加

reject_rbl_client zen.spamhaus.org

到您的 smtpd_recipient_restrictions。在廉价的本地检查之后执行此操作,以节省 DNS 查询负载和延迟,但在昂贵的本地检查(例如reject_unverified_recipient)之前执行此操作(您没有使用该检查,并且问题描述中可能不需要它)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top