我们的开发服务器上有 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)?