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 / 问题 / 833499
Accepted
comfreak
comfreak
Asked: 2017-02-20 06:24:32 +0800 CST2017-02-20 06:24:32 +0800 CST 2017-02-20 06:24:32 +0800 CST

Postfix 中限制的影响

  • 772

我的问题与此类似,但我正在运行更新版本的 Postfix,并且那里的答案并没有真正回答我的问题。

我正在使用 Postfix 2.11 运行 Debian Jessie 服务器。

到目前为止,我了解到 Postfix 有这些检查:

  • smtpd_client_restrictions
  • smtpd_helo_restrictions
  • smtpd_sender_restrictions
  • smtpd_relay_restrictions
  • smtpd_recipient_restrictions

根据我阅读的内容,Postfix 将按上述顺序处理它们。

  1. 现在我的问题是,当任何限制中的条目匹配到时会发生什么OK?这是否意味着 Postfix 将跳过该特定 *_restriction的剩余检查,还是会一起跳过所有 *_restrictions检查?

  2. 除了这些检查的正确值之外OK,是否还有其他结果?REJECT

  3. 如果大多数教程只提到or ,其他_restrictions用途是什么?smtpd_client_restrictionssmtpd_recipient_restrictions

我想要实现的是:

  • 阻止以发送垃圾邮件而闻名的 MTA 客户端(例如,动态 IP 或黑名单中列出的其他客户端)和/或不符合 RFC(例如,非 FQDN 地址等)。
  • 同时允许某些客户端基于白名单绕过这个
  • 仅允许经过 SASL 身份验证的客户端将邮件中继到其他服务器,而不是每个列入白名单的域
  • 阻止冒充其他服务器的客户端(即 SPF),包括那些以前列入白名单的客户端(换句话说,让列入白名单的服务器只传送他们的邮件)
  • 为新服务器添加延迟以进一步增强垃圾邮件保护 (Postgrey)。这已经很有效了,我还为它创建了必要的白名单。

现在,如果您以任何一种方式回答问题 1,将所有检查放入*_restrictions上述其中之一,很可能不会成功,因为例如白名单会覆盖 SPF 检查。

因此,我的配置如下所示:

# basic configuration (myorigin, mydomain, etc.)

smtpd_helo_required = yes

smtpd_client_restrictions = check_client_access hash:/etc/postfix/blackwhitelists/whitelisted_client_addresses, 
    check_reverse_client_hostname_access hash:/etc/postfix/blackwhitelists/blacklisted_reverse_hostnames, 
    reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net,
    reject_rbl_client dnsbl.sorbs.net, reject_unknown_client

smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks,
    reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname,
    reject_unknown_helo_hostname, reject_unauth_pipelining

smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks,
    check_sender_access hash:/etc/postfix/blackwhitelists/blacklisted_sender_addresses

smtpd_relay_restrictions = permit_sasl_authenticated, permit_mynetworks,
    reject_unauth_destination

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
    reject_unauth_destination, reject_unauth_pipelining, 
    check_sender_access hash:/etc/postfix/blackwhitelists/whitelisted_sender_addresses, reject_non_fqdn_sender,
    reject_unknown_sender_domain, check_policy_service unix:private/policyd-spf, 
    check_policy_service unix:/var/spool/postfix/postgrey/socket

smtpd_etrn_restrictions = permit_sasl_authenticated, permit_mynetworks, reject

# more basic configuration

如您所见,许多选项现在会重复出现,因为我不确定是否在其他限制中也需要它们。总而言之,我也认为这很混乱。

我还在为通过所有这些检查的邮件运行 SpamAssassin。

email smtp postfix
  • 1 1 个回答
  • 1411 Views

1 个回答

  • Voted
  1. Best Answer
    Peter Zhabin
    2017-03-01T13:57:18+08:002017-03-01T13:57:18+08:00

    这些_restrictions适用于在 SMTP 对话的特定阶段可用的信息,即:

    • smtpd_client_restrictions应用于初始连接 (IP/FQDN)
    • smtpd_helo_restrictions应用于客户端 HELO/EHLO 命令
    • smtpd_sender_restrictions应用于 MAIL FROM 命令
    • smtpd_recipient_restrictions应用于 RCPT TO 命令

    smtpd_relay_restrictions控制中继到第三方域。

    每个限制中的所有项目都按给出的顺序进行评估,如果任何项目匹配此限制序列的处理将停止并采取指定的操作。可能的操作的完整列表是可用的access(5)手册页。

    如果 action 是 ACCEPT 或其任何同义词,评估将进入下一阶段的规则集。如果 action 是 REJECT(或其兄弟),则会向发送者返回一个错误,并且不会进行进一步的处理。

    您的规则集看起来不错,但限制性太强且容易出错 - 例如,发件人的 DNS 服务器关闭,不会接受来自他们的邮件,HELO/EHLO 限制将禁止配置不当的 Exchange 服务器和其他一些深奥的邮件程序,等等。

    根据我的经验,我建议将其设置为最低限度,并将所有 RBL、HELO 检查和反向检查替换为评分策略服务守护进程,例如postfwd2. 在那里,您可以微调应用于所有这些小事情的策略,并根据复杂的参数而不是单一的命中采取不同的行动。

    • 3

相关问题

  • 如何绕过 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