在 postfix 中,如何通过 587 强制执行 tls + auth,同时将 tls 保留为 25 的可选项

在 postfix 中,如何通过 587 强制执行 tls + auth,同时将 tls 保留为 25 的可选项

我想为一些域托管邮件服务。我已成功设置 postfix 来查询这些虚拟域的 sql。我想做的是:

  • 对于 25 上的连接:

    1. 拒绝中继(仅传送至我的虚拟域的收件人)
    2. 保留 tls 可选,但仅当客户端执行 tls 时才提供身份验证
    3. 仅接受非黑名单客户端(例如,限制来自 spamhaus 的 XBL+SBL+PBL)或执行 tls 和 auth 的客户端(设置为使用 auth 和 tls 进行身份验证的“朋友邮件服务器”)
  • 对于 587 上的连接:

    1. 强制执行 tls 和 auth
    2. 允許搖擺。
    3. 仅接受未列入黑名单的客户端(黑名单如上所述,但省略 PBL 检查)

我的问题:

  • 答:我知道上述的后缀选项,但我找不到如何根据监听端口来区分它们。

  • B. 我是否会因为上述政策而与所谓的合法客户遇到众所周知的问题?

我是邮件服务器设置的新手,如有无意义的问题/假设,请见谅(请指出)。谢谢。

答案1

这很容易,

  1. /etc/postfix/main.cf将添加/更改

    smtpd_tls_security_level=may
    

    这样默认情况下 TLS 可用(但可选)。

  2. 然后,您将通过覆盖参数/etc/postfix/master.cf来覆盖端口 587(端口):submission

    submission inet n       -       n       -       -       smtpd
      -o smtpd_tls_security_level=encrypt
    

    这要求所有提交(端口 587)连接都使用 TLS。

至于拒绝中继,这是默认设置;仅允许经过身份验证的用户和您在中指定的 IP 地址进行中继mynetworks

main.cf最后,您可以通过附加以下内容来添加黑名单smtpd_recipient_restrictions

    reject_rbl_client zen.spamhaus.org,

或任何您想要的黑名单。这些应该出现在列表末尾,就在最后一个 之前permit


最后一件事。有关如何防止垃圾邮件的更多想法,请参阅打击垃圾邮件 - 作为电子邮件管理员、域名所有者或用户,我能做什么?

答案2

我不知道问题 B 的答案,但是问题 A 的答案是:

在 Postfix 中,通常有一个master.cf定义每个正在运行的进程的文件,通常在 中。在该文件中,每个正在运行的 Postfix 服务都有一个条目,因此 port和 port/etc/postfix有两个不同的条目。对于它们中的每一个,您还可以将参数传递给以使它们具有不同的设置。25587smtpd

这是我的邮件服务器的一个例子:

4.3.2.1:25      inet  n       -       -       -       -       smtpd
  -o smtpd_sasl_auth_enable=yes
4.3.2.1:10027   inet  n       -       -       -       -       smtpd
  -o mynetworks=91.190.245.4/32 127.0.0.0/8
  -o smtpd_client_restrictions=permit_mynetworks,reject

相关内容