AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 590542
Accepted
Erich
Erich
Asked: 2014-04-23 04:44:31 +0800 CST2014-04-23 04:44:31 +0800 CST 2014-04-23 04:44:31 +0800 CST

QMail - 中继队列中的许多故障通知仅对本地主机开放

  • 772

如果收件人未在 rcpthosts 中列出,我将 qmail 服务器配置为拒绝邮件,并且我将 tcp-env 与 xinetd 一起使用以允许本地 procs 向添加以下行的任何人发送电子邮件/etc/hosts.allow:

tcp-env: 127.0.0.1 : setenv RELAYCLIENT

在测试期间,一切似乎都正常工作:

$ telnet mydomain.com 25
Trying xxx.xxx.xxx.xxx...
Connected to mydomain.com.
Escape character is '^]'.
220 mydomain.com ESMTP
HELO
250 mydomain.com
MAIL FROM: [email protected]
250 ok
RCPT TO: [email protected]
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

在现实生活中,队列中有很多这样的消息:

2744522 (1, remote)
  Envelope Sender:
  Envelope Recipient: [email protected] (To Be Delivered)
  Date: 22 Apr 2014 07:38:14 -0000
  From: [email protected]
  To: [email protected]
  Subject: failure notice
  Size: 18.45KB (18889 Bytes)

QMail 应该为 rcpthosts 中列出的域发送失败通知,并且应该拒绝未在其中列出的域的电子邮件而不发送失败通知。

谁能解释我做错了什么?

谢谢!

email
  • 1 1 个回答
  • 810 Views

1 个回答

  • Voted
  1. Best Answer
    Jenny D
    2014-04-23T05:57:39+08:002014-04-23T05:57:39+08:00

    qmail 的缺点之一是默认情况下,它在接受邮件之前不检查收件人地址的本地部分。它所做的只是检查收件人域是否在其允许的收件人域列表中。(这在 1990 年代早期是一个不合理的设计选择。如今已不那么如此了。)这意味着,例如垃圾邮件发送者进行字典喷洒可能会通过向不存在的收件人投掷大量邮件来填满您的服务器。当 qmail 尝试投递邮件时,会发现 localpart 不存在,并生成退回邮件。而且由于垃圾邮件发送者会伪造信封发件人,您的服务器将无法传递这些邮件,它会填满队列。

    最好的解决方案是首先不接受这些电子邮件。如果您的服务器可以立即拒绝电子邮件RCPT TO:[email protected],那么发送邮件服务器的工作就是发出退回邮件,您就不会被退回邮件淹没。

    另一个解决方案是减少 qmail 继续尝试传递退回邮件的时间,这样它们就会被更早地删除,因此也不会填满队列。

    而且,当然,您可以过滤传入的垃圾邮件并将其丢弃,而不是让它产生退回邮件。

    拒绝未知的本地部分

    实现此目的的唯一方法是修补 qmail,以便qmail-smtpd检查 localparts。您不能仅使用配置选项来执行此操作,您需要实际打补丁并重新编译并安装打补丁的qmail-smtpd.

    有几个不同的补丁可以实现这一点。我不能推荐其中任何一个——当我管理 qmail 服务器时,我们有另一个系统充当代理来进行过滤,所以我从不需要使用它。但是您可以在netdevice.com/wmail/rcptck和code.dogmap.org/qmail/找到几个补丁。

    减少 qmail 尝试发送退回邮件的时间

    如果这只能用于反弹,我不知道如何。但是您可以通过更改queuelifetime. man qmail-control应该告诉你怎么做。

    垃圾邮件过滤

    关于垃圾邮件过滤有太多要说的了,无法在这里找到一个答案。我会从考虑 RBL 风格的黑洞列表开始,并拒绝来自其中列出的 IP 地址的连接。当然,您需要仔细选择您的黑洞列表,并且您确实冒着阻止“真实”邮件的风险。在Chris Hardie 的 qmail anti-spam howto中有一些专门针对 qmail 进行垃圾邮件过滤的信息,在spamhaus.org上有关于各种黑洞列表的信息。

    我希望这足以作为一个开始。我已经使用 qmail 几十年了,包括为拥有数百万用户的 ISP 运行邮件系统 - 但我还必须补充一点,如果我现在要设置这样的系统,qmail 将不再是我的首选. 它在创建时是一个非常好的邮件服务器,它做了很多事情都非常好,但现在我可能会使用 postfix 来代替。时间和垃圾邮件发送者已经过去了,而 qmail 没有。

    • 1

相关问题

  • 如何绕过 ISP 的限制性电子邮件政策?

  • SharePoint 传入电子邮件出现“未知别名”错误

  • 电子邮件帐户的角色名称与人名

  • 如何在笔记本电脑上使用 Tobit David?[关闭]

  • 随行人员通过 VPN 连接到 Exchange 2007

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve