在 postfix 中阻止您自己的域通过 telnet HELO 发送邮件

在 postfix 中阻止您自己的域通过 telnet HELO 发送邮件

在我的 postfix/courier debian 9 服务器上,我可以通过 telnet 发送邮件,结果如下

 250 2.1.0 Ok

现在我尝试阻止用户通过 telnet HELO 命令使用我自己的域发送未经身份验证的邮件。

我在我的后缀中添加了这个main.cf

smtpd_helo_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    check_helo_access hash:/etc/postfix/check_helo_access,
    ...

这是我的文件/etc/postfix/check_helo_access

/mydomain\.de$/                 550 Forged HELO/EHLO command

现在这种方法可以了,但是当我尝试通过 telnet 发送电子邮件时,它被阻止了,但我收到了错误:

451 4.3.5 <mydomain.de>: Helo command rejected: Server configuration error

我也尝试过这样设置/etc/postfix/check_helo_access

mydomain.de REJECT

导致相同的错误消息。如果我将选项设置为smtpd_recipient_restrictions而不是smtpd_helo_restrictions,则会出现相同的错误。

我该如何正确配置,才能在 telnet 中收到清晰的错误消息?或者这是正确的方法,而错误消息只是误导性的?

答案1

你混合了两种不同的Postfix 查找表类型

  • hash

    基于哈希的索引文件类型。这仅在支持 Berkeley DB 数据库的系统上可用。公共数据库文件使用后图(1)或者邮政别名(1)命令,私有数据库由 Postfix 守护进程维护。使用的数据库名称hash:table是不带后缀的数据库文件名.db

  • pcre(只读)

    基于 Perl 兼容正则表达式的查找表。文件格式描述如下pcre_表(5)。中使用的查找表名称pcre:table是正则表达式文件的名称。

  • 如果你想使用

    /example\.com$/   550   Forged HELO/EHLO command
    

    你需要

    check_helo_access pcre:/etc/postfix/check_helo_access
    

    并建立 PostfixPCRE 支持。在 Debian 9 中,你需要postfix-pcre

  • check_helo_access hash:/etc/postfix/check_helo_access
    

    您必须使用格式

    example.com   550   Forged HELO/EHLO command
    

    postmap /etc/postfix/check_helo_access并记住在修改后执行。

作为附加提示,您可以HELO在完整HELOMAIL FROM&RCPT TO序列之后触发所有 、发件人和收件人限制,方法是将它们全部放入smtpd_recipient_restrictions。这样,您就不会丢失有关谁试图向谁发送邮件的信息,就像您在之后立即拒绝邮件一样HELO。这使得调试和取证变得容易得多。

相关内容