-2

我在新配置的邮件服务器上遇到问题,其中欺骗来自本地域的垃圾邮件实际上被邮件服务器接受,邮件没有按原样发送,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-Queue-ID:661DC5D1DE
X-Postfix-Sender:rfc822;dan@example.com.au
到达日期:2009 年 5 月 5 日星期二 06:21:38 +1000 (EST)

最终收件人:rfc822;dan@example.com.au
原始收件人:rfc822;dan@example.com.au
操作:失败状态:5.7.0
远程 MTA:dns;127.0.0.1
诊断代码:smtp;554 5.7.0 拒绝,id=11887-07 - 垃圾邮件?

发件人:Berenice Penez
日期:
2009 年 5 月 4 日星期一 22:21:41 +0200
收件人:主题:是你吗,在论坛上?

质量可靠,
交货不延误!
治病超级网店
http://www.xopfekec.cn/

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

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

readme_directory = /usr/share/doc/postfix
mydomain_fallback = localhost
message_size_limit = 0
mail_size_limit = 0
myhostname = example.com.au mail_transport
= cyrus
mydomain = example.com.au
inet_interfaces = all
enable_server_options = yes
mydestination = $myhostname,localhost.$ mydomain,localhost,example.com.au
smtpd_sasl_auth_enable = 是
smtpd_use_pw_server = 是
smtpd_recipient_restrictions = permit_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
mynetworks = 127.0.0.0/8,
10.0.1.0/24 smtpd_client_restrictions = permit_sasl_authenticated,reject_rbl_client dnsbl.sorbs.net

4

1 回答 1

2

几个不同的点:

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

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

  • 不要接受然后像这样退回邮件。如果您使用 SpamAssassin 作为 Postfix 中的队列后过滤器(通常的运行方式),您需要标记并发送(并使用客户端规则过滤)或隔离邮件而不通知发件人。从您的问题的外观来看,您可能是反向散射源。停下来。参见例如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,
  拒绝_unauth_destination,
  check_sender_access 哈希:$config_directory/reject_mydomains
  reject_unknown_recipient_domain,
  拒绝未知发件人域,
  拒绝无效主机名

在reject_mydomains

example.com.au 拒绝你不是我

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

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

smtpd_recipient_restrictions =
  permit_sasl_authenticated,
  permit_mynetworks,
  拒绝_unauth_destination,
  check_helo_access 哈希:$config_directory/helo_checks
  check_sender_access 哈希:$config_directory/reject_mydomains
  reject_unknown_recipient_domain,
  拒绝未知发件人域,
  拒绝无效主机名

在 helo_checks 中:

example.com.au 拒绝 BAD-HELO 你不是 example.com.au
mailserver.example.com.au REJECT BAD-HELO 你不是我
localhost REJECT BAD-HELO 你不是我
localhost.localdomain REJECT BAD-HELO 你不是我
# 其中 1.2.3.4 是你服务器的 IP
1.2.3.4 拒绝 BAD-HELO 你不是我
127.0.0.1 REJECT BAD-HELO 你不是我

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

reject_rbl_client zen.spamhaus.org

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

于 2009-05-05T05:55:52.767 回答