开发服务器上的 Postfix,只允许将邮件发送到一个域

开发服务器上的 Postfix,只允许将邮件发送到一个域

我们的开发服务器上有 postfix,我希望它只能向我们的域发送邮件,而不是向其他域发送邮件,防止外部用户意外接收来自我们开发服务器的邮件。

我搜索了文档,尝试了几种方法,但它仍然发送到所有域......

答案1

运输(5)地图用于重新定义 Postfix 如何路由电子邮件。

  • 将以下行添加到 /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    
  • 添加新文件 /etc/postfix/transport,内容如下:

    .example.com   :
    example.com    :
    *              discard:
    

用您的邮件服务器仍应向其发送邮件的域名替换example.com。如果您不关心子域名,请删除第一行。

编辑文件后不要忘记对其进行哈希处理后图(1)并重新加载 postfix 以使更改生效:

# postmap /etc/postfix/transport && postfix reload

答案2

您可以轻松地使用标准限制收件人smtpd_recipient_restrictions或者更准确地说检查收件人访问

只需创建一个访问(5)表格/etc/postfix/access内容如下(示例.com是您要允许发送邮件的域):

example.com    OK

您还可以仅允许某些特定地址:

[email protected]    OK
[email protected]    OK

编辑文件后不要忘记对其进行哈希处理后图(1)

# postmap /etc/postfix/access

现在将以下收件人限制放入您的 main.cf 中:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

并重新加载 Postfix:

postfix reload

在那之后,测试它是否有效

答案3

所以如果有人像我一样被这个问题难倒:答案是肯定的header_checks它的工作原理如下:

  • 添加以下行到/etc/postfix/main.cf

    header_checks = regexp:/etc/postfix/header_checks
    
  • /etc/postfix/header_checks添加包含以下内容的新文件:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT [email protected]
    

将其替换allowed-domain.com为您的邮件服务器仍应向其发送邮件的域名。将其替换[email protected]为所有其他电子邮件应重定向到的电子邮件地址。

如果需要允许多个域,第一行应如下所示:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

您可以简单地删除所有其他邮件,而不是重定向。将上面的第二行替换为:

/^To:.*@/   DISCARD No outgoing mails allowed

解释:

  • Postfix 逐一检查邮件头。
  • header_checks每个标题行与文件逐行匹配。
  • 如果匹配第一行(To:包含允许的域),它会跳到下一个标题行并从顶部重新开始标题检查。由于没有其他行匹配,这意味着邮件被投递。
  • 如果它与第二行匹配(To:包含另一个外部电子邮件地址),它会重定向邮件。

答案4

你有没有尝试过header_checks(5)

相关内容