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


11

我们的开发服务器上有后缀,我希望它只能将邮件发送到我们的域,而不能发送到其他域,以防止外部用户意外地从我们的开发服务器接收邮件。

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

Answers:


7

transport(5)映射用于重新定义后缀如何路由电子邮件。

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

    transport_maps = hash:/etc/postfix/transport
    
  • 添加具有以下内容的新文件/ etc / postfix / transport:

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

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

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

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

7

您可以轻松地通过标准smtpd_recipient_restrictions限制接收者,或者更准确地说是check_recipient_access

只需创建一个具有以下内容的access(5)/etc/postfix/accessexample.com是您要允许向其发送邮件的域):

example.com    OK

您还可以只允许一些特定的地址:

user1@example.com    OK
user2@example.com    OK

使用postmap(1)编辑文件后,不要忘记对文件进行哈希处理:

# postmap /etc/postfix/access

现在在main.cf中设置以下收件人限制:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

并重新加载Postfix:

postfix reload

之后,测试它是否有效


1
这将适用于通过SMTP发送的邮件,而不是通过/ usr / lib / sendmail命令发送的邮件,本地进程可以同时执行这两种操作。看来'authorized_submit_users'设置可以用来阻止通过sendmail / postdrop进行的本地提交,那么smtpd限制就足够了。
Jacek Konieczny

6

因此,如果有人像我一样偶然发现此问题:答案的确是header_checks,它的工作方式如下:

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

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

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT redirect@example.com
    

allowed-domain.com您的邮件服务器仍应将邮件发送到的域替换。用redirect@example.com电子邮件地址替换所有其他电子邮件应重定向到。

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

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

除了重定向之外,您还可以简单地丢弃所有其他邮件。将上面的第二行替换为:

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

说明:

  • Postfix一对一地通过邮件头。
  • 每个标题行与header_checks文件逐行匹配。
  • 如果与第一行匹配(To:包含允许的域),它将跳至下一个标题行,并从顶部再次开始标题检查。由于没有其他行匹配,这意味着邮件已送达。
  • 如果与第二行匹配(To:包含另一个外部电子邮件地址),它将重定向邮件。

这个问题似乎已经用这个答案解决了,也许应该标记为已解决?(至少对我来说是一种魅力)
Sverre 2014年

Cc:Bcc:如何呢?
Paul Tobias

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.