跳转到主要内容

于 2025年04月22日 摘录自 Postfix Address Classes

简介

Postfix 2.0 引入了地址类概念。这是根据收件地址的投递方式对收件地址进行分组的方法。该想法源自与 Victor Duchovni 的讨论。尽管地址类引入了少量不兼容性,但它也使得对 托管域 和未知收件人的处理得到改进。

本文档提供了以下内容:

地址类有什么用?

为什么应该关注地址类?这是 Postfix 决定接受哪些邮件以及如何投递它们的方式。换句话说,地址类对 Postfix 的运行至关重要。

地址类由三个要素定义。

  • 属于该地址类的域列表。

    示例:所有本地域(local domains),或所有中继域(relay domains)。

  • 该地址类中域的默认投递传输。

    示例:local_transportrelay_transport(这些指向在master.cf中定义的服务)。

    优势:这避免了在传输映射中显式指定路由信息。

  • 该地址类别的有效收件人地址列表。

    优势:Postfix SMTP 服务器会拒绝无效收件人,并返回错误信息"用户在 <地址类名称> 表中不存在",同时避免发送包含反向散射垃圾邮件的 MAILER-DAEMON 消息。

Postfix 实现了哪些地址类?

初始时地址类列表是硬编码的,但设计为可扩展。下表概述了各类的用途及相关配置参数。

本地域类(local)。

虚拟别名域类。

  • 用途:托管域,其中每个收件人地址被别名到不同域类中的一个地址,例如本地 UNIX 系统账户或远程地址。一个虚拟别名示例VIRTUAL_README文件中给出。
  • 域名在virtual_alias_domains中列出。默认值为 $virtual_alias_maps,以兼容 Postfix 1.1。
  • 这些域的有效收件人地址在 virtual_alias_maps 参数中列出。Postfix SMTP 服务器会以 "用户在虚拟别名表中不存在" 拒绝无效收件人。默认值为 $virtual_maps 以兼容 Postfix 1.1。

    注意:出于历史原因,virtual_alias_maps 参数适用于所有域类中的收件人,而不仅仅是虚拟别名域类。

  • 没有可配置的邮件投递传输。每个地址必须别名到其他域类中的某个地址。

虚拟邮箱域类。

中继域类。

  • 用途:将邮件转发至将您的系统列为主要或备用 MX 主机的远程目的地。有关基本配置细节的讨论,请参阅 BASIC_CONFIGURATION_README 文档。有关规范域、托管域和其他域的区别,请参阅VIRTUAL_README文件。
  • 域名通过 relay_domains 参数列出。
  • 这些域名的有效收件人地址通过 relay_recipient_maps 参数列出。Postfix SMTP 服务器会拒绝无效收件人,并返回错误信息"用户在中继收件人表中不存在"。如果该参数值为空,Postfix SMTP 服务器将接受所有列在 relay_domains 参数中的域的收件人。
  • 邮件投递传输方式通过 relay_transport 参数指定。默认值为relay,这是smtp(8)传输代理的克隆。

默认域类。

与 Postfix 1.1 相比的改进

Postfix 2.0 的地址类使以下改进相对于早期 Postfix 版本成为可能:

  • 您不再需要在 Postfix 传输映射中指定所有 virtual(8) 邮件箱域。virtual(8) 投递代理现在与 local(8)SMTP(8) 一样,成为了一等公民。
  • 在邮件网关系统中,地址类用于分离入站邮件中继流量($relay_transport)与出站流量($default_transport)。这解决了在存在大量出站邮件时,入站邮件投递可能因资源不足而受阻的问题。
  • SMTP 服务器以比 Postfix 版本 1 更一致的方式拒绝未知收件人。这有助于防止无法投递的邮件(包括退回的无法投递邮件)进入邮件队列。此行为由配置参数 smtpd_reject_unlisted_recipient 控制。
  • 从 Postfix 2.1 版本开始,SMTP 服务器还可以拒绝未知发件人地址(即会被拒绝为未知收件人地址的地址)。发件人"出站过滤"可帮助减缓电子邮件蠕虫的爆发。此功能由 smtpd_reject_unlisted_sender 配置参数控制。

与 Postfix 1.1 的不兼容性

Postfix 2.0 的地址类引入了几个与文档行为不兼容的更改。为了便于过渡,新参数的默认值与旧版本兼容。