Postfix / Spamassassin:未发送邮件返回发件人

时间:2009-05-05 03:16:27

标签: configuration email postfix-mta spamassassin

我遇到了新配置的邮件服务器的问题,其中来自本地域的欺骗性垃圾邮件实际上已被邮件服务器接受,邮件未按原样传送,spamassassin将其标记为垃圾邮件然后发送电子邮件“Undelivered Mail Return to Sender”给欺骗的本地用户。

我知道有一种方法可以在配置中解决这个问题,但我不知道在哪里,我希望有人可以指出我正确的方向。

要明确的是,邮件服务器不会中继,这只是本地用户问题。 我希望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
  日期:星期一,4
  2009年5月22:21:41 +0200
  致:主题:论坛上是你吗?   
  质量可靠,无延迟   交货!超级网上商店为   疾病治疗   http://www.xopfekec.cn/
  

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

Postfix main.cf(重要部分,未完成)

  

readme_directory = / usr / share / doc / postfix
  mydomain_fallback = localhost
  message_size_limit = 0
  mailbox_size_limit = 0
  myhostname = example.com.au
  mailbox_transport = cyrus
  mydomain = example.com.au
  inet_interfaces =全部
  enable_server_options =是
  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 = plain,login
  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

1 个答案:

答案 0 :(得分:2)

几点不同:

  • 这应该在serverfault.com上,但由于我没有参加测试,我会在这里回答。

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

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

  • 考虑将所有限制合并到smtpd_recipient_restrictions中。管理线性限制流通常比处理smtpd_ {客户端,helo,发件人,收件人} _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

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

您可以使用类似的HELO检查来清除客户端使用您自己的主机名/ IP或已知的坏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之类的昂贵的本地检查之前(您没有使用那个并且可能在您的问题描述中不需要它)。