在 Exchange 服务器上允许匿名中继

开放中继对于 Internet 上的邮件服务器而言是一个非常严重的问题。 无意或有意配置为开放中继的邮件服务器允许通过开放中继服务器透明地重新路由来自任何源的邮件。 这种行为掩盖了邮件的原始源,并使它看上去像是来自开放中继服务器的邮件。 垃圾邮件发送者急切地寻找并使用开放中继服务器,因此请不要将邮件服务器配置为开放中继。

另一方面,匿名中继是很常见的需求,因为许多公司拥有内部 Web 服务器、数据库服务器、监视应用程序,或生成电子邮件但无法真正发送这些邮件的其他网络设备。

在 Exchange Server中,可以在邮箱服务器上的前端传输服务中创建专用的接收连接器,允许从特定内部网络主机列表进行匿名中继。 下面是有关匿名中继接收连接器的一些关键注意事项:

  • 您需要创建专用的接收连接器以指定允许匿名中继邮件的网络主机,以便阻止任何人或任何其他设备使用该连接器。 不要尝试向 Exchange 创建的默认接收连接器添加匿名中继功能。 限制对接收连接器的访问非常重要,因为您不想将该服务器配置为开放中继。

  • 需要在前端传输服务中创建专用的接收连接器,而不是在传输服务中进行创建。 在 Exchange Server中,前端传输服务和传输服务始终位于邮箱服务器上。 前端传输服务具有名为 Default Frontend <ServerName> 的默认接收连接器,该连接器配置为侦听来自 TCP 端口 25 上任何源的入站 SMTP 连接。 您可以在前端传输服务中创建另一个接收连接器,也用于在 TCP 端口 25 上侦听传入 SMTP 连接,但您需要指定允许使用该连接器的 IP 地址。 专用的接收连接器将始终用于处理来自那些特定的网络主机的传入连接(配置为与正在连接服务器的 IP 地址最匹配的接收连接器胜出)。

    相比之下,传输服务具有名为 Default <ServerName> 的默认接收连接器,该连接器也配置为列出来自任何源的入站 SMTP 连接,但此连接器侦听 TCP 端口 2525,以便它不会与前端传输服务中的接收连接器冲突。 此外,只有组织中的其他传输服务和 Exchange 服务器应使用此接收连接器,因此会相应地设置身份验证和加密方法。

    有关详细信息,请参阅Mail flow and the transport pipeline安装过程中创建的默认接收连接器

  • 创建专用的接收连接器后,您需要修改其权限以允许仅由使用其 IP 地址标识的指定网络主机进行匿名中继。 网络主机至少需要具有接收连接器的下列权限才能匿名中继邮件:

    • ms-Exch-Accept-Headers-Routing

    • ms-Exch-SMTP-Accept-Any-Recipient

    • ms-Exch-SMTP-Accept-Any-Sender

    • ms-Exch-SMTP-Accept-Authoritative-Domain-Sender

    • ms-Exch-SMTP-Submit

      有关接收连接器的权限的详细信息,请参阅接收连接器权限组接收连接器权限

      有两种不同的方法可以用来配置在接收连接器上进行匿名中继所需的权限。 下表介绍了这些方法。

方法 授予的权限 优点 缺点
匿名用户 (Anonymous) 权限组添加到接收连接器,并将权限添加到 Ms-Exch-SMTP-Accept-Any-Recipient 接收连接器上的 NT AUTHORITY\ANONYMOUS LOGON 安全主体。 连接使用以下 NT AUTHORITY\ANONYMOUS LOGON 权限的安全主体:
  • ms-Exch-Accept-Headers-Routing
  • ms-Exch-SMTP-Accept-Any-Recipient
  • ms-Exch-SMTP-Accept-Any-Sender
  • ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
  • ms-Exch-SMTP-Submit
授予最小必需权限以允许匿名中继。 更难配置 (必须使用 Exchange 命令行管理程序) 。

网络主机被视为匿名发件人。 邮件不会绕过反垃圾邮件或邮件大小限制检查,如果全局地址列表中有任何) ,则发件人的电子邮件地址无法解析为相应的显示名称 (。

Exchange 服务器 (ExchangeServers) 权限组和 外部保护 (ExternalAuthoritative) 身份验证机制添加到接收连接器。 连接使用以下 MS Exchange\Externally Secured Servers 权限的安全主体:
  • ms-Exch-Accept-Headers-Routing
  • ms-Exch-Bypass-Anti-Spam
  • ms-Exch-Bypass-Message-Size-Limit
  • ms-Exch-SMTP-Accept-Any-Recipient
  • ms-Exch-SMTP-Accept-Any-Sender
  • ms-Exch-SMTP-Accept-Authentication-Flag
  • ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
  • ms-Exch-SMTP-Accept-Exch50
  • ms-Exch-SMTP-Submit
更易于配置 (可以在 Exchange 管理中心) 执行所有操作。

网络主机被视为经过身份验证的发件人。 邮件绕过反垃圾邮件和邮件大小限制检查,发件人的电子邮件地址可以解析为全局地址列表中的相应显示名称。

授予提交邮件的权限,就像邮件源自 Exchange 组织中的内部发件人一样。 网络主机被视为完全可信,而不考虑卷、大小或它们所发送的邮件内容。

最后,您需要确定最符合贵组织需求的方法。 我们将向您展示如何配置这两种方法。 请记住要么采用这种方法,要么采用另一种方法,不能同时采用这两种方法。

在开始之前,您需要知道什么?

  • 估计完成该任务的时间:10 分钟。

  • 其中一些过程需要 Exchange 命令行管理程序。 若要了解如何在本地 Exchange 组织中打开 Exchange 命令行管理程序,请参阅 Open the Exchange Management Shell

  • 您必须先获得权限,然后才能执行此过程或多个过程。 若要查看所需的权限,请参阅 邮件流权限主题中的"接收连接器"条目。

  • 若要了解本主题中的过程可能适用的键盘快捷键,请参阅 Exchange 管理中心内的键盘快捷键

提示

是否有任何疑问? 请在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange ServerExchange OnlineExchange Online Protection

步骤 1:创建专用的接收连接器进行匿名中继

可以在 EAC 或 Exchange 命令行管理程序中创建接收连接器。

使用 EAC 创建专用的接收连接器进行匿名中继

  1. 在 EAC 中,导航到“邮件流>接收连接器”,然后单击“添加”图标。 此时将启动“新建接收连接器”向导。

  2. 在第一页上,输入以下信息:

    • 名称:输入接收连接器的描述性名称,例如匿名中继。

    • 角色:选择“ 前端传输”。

    • 类型:选择“ 自定义”。

      完成后,单击“下一步”。

  3. 在下一页上的“网络适配器绑定”部分中,执行下列操作之一:

    • 如果 Exchange 服务器有一个网络适配器,并且未使用不同的子网隔离内部和外部流量,请在端口 25 上接受现有 (所有可用的 IPv4) 条目。

    • 如果 Exchange 服务器具有内部网络适配器和外部网络适配器,并且使用不同的子网隔离内部和外部网络流量,则可以通过将连接器的使用限制为源自内部网络适配器的请求来进一步增强连接器的安全性。 为此:

      1. 选择现有 (“所有可用的 IPv4) ”条目,单击“ 删除”图标,然后单击“ 添加”图标

      2. 在生成的“网络适配器绑定”对话框中,选择“指定 IPv4 地址或 IPv6 地址”并输入一个在内部网络适配器上配置的有效可用的 IP 地址,然后单击“保存”

    完成后,单击“下一步”。

  4. 在下一页上的 “远程网络设置” 部分中,执行以下步骤:

    1. 选择现有的 0.0.0.0-255.255.255.255 条目,然后单击“ 删除”图标,然后单击“ 添加”图标

    2. 在生成的“远程地址设置”对话框中,输入 IP 地址或 IP 地址范围,用来标识允许使用此连接器的网络主机,然后单击“保存”。 您可以重复此步骤以添加多个 IP 地址或 IP 地址范围。 为了清楚地标识允许使用此连接器的网络主机,宁可标识得非常具体,也不能过于宽泛。

    完成后,单击“ 完成”。

使用 Exchange 命令行管理程序为匿名中继创建专用接收连接器

若要在 Exchange 命令行管理程序中创建相同的接收连接器,请使用以下语法:

New-ReceiveConnector -Name <ConnectorName> -TransportRole FrontendTransport -Custom -Bindings <LocalIPAddresses>:25 -RemoteIpRanges <RemoteIPAddresses>

本示例将新建一个具有以下配置选项的接收连接器:

  • 名称:匿名中继

  • 传输角色FrontEndTransport

  • 使用类型:自定义

  • 绑定0.0.0.0:25 (侦听 TCP 端口 25.) Exchange 服务器中所有网络适配器上配置的所有 IP 地址的入站消息

  • 允许使用此连接器的远程 IP 地址:192.168.5.10 和 192.168.5.11

New-ReceiveConnector -Name "Anonymous Relay" -TransportRole FrontendTransport -Custom -Bindings 0.0.0.0:25 -RemoteIpRanges 192.168.5.10,192.168.5.11

注意:

  • 在指定自定义使用类型时必须提供 Bindings 参数。

  • RemoteIpRanges 参数接受单个 IP 地址、ip 地址范围 (例如 192.168.5.10-192.168.5.20 ,) 或无类域间路由 (CIDR) (例如 192.168.5.1/24) 。 可以指定用逗号分隔的多个值。

步骤 2:在专用的接收连接器上配置匿名中继权限

在简介中所述,有两种不同的方法可用于配置接收连接器所需的权限:

  • 将连接配置为匿名。

  • 将连接配置为外部安全。

选择一种方法或另一种方法。 这些示例使用您在步骤 1 中创建的名为匿名中继的接收连接器。

将连接配置为匿名

在 Exchange 命令行管理程序中运行以下命令:

1.

Set-ReceiveConnector "Anonymous Relay" -PermissionGroups AnonymousUsers
Get-ReceiveConnector "Anonymous Relay" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

将连接配置为外部安全

  1. 在 EAC 中,导航到 “邮件流>接收连接器”,选择“匿名中继”连接器,然后单击“ 编辑”图标

  2. 在连接器属性中,单击“安全”并进行以下选择:

    • 身份验证:取消选择 传输层安全性 (TLS) 并选择“ 外部保护 (,例如使用 IPsec)

    • 权限组:选择 “Exchange 服务器”。

    完成后,单击“保存”。

若要在 Exchange 命令行管理程序中执行相同的步骤,请运行以下命令:

Set-ReceiveConnector "Anonymous Relay" -AuthMechanism ExternalAuthoritative -PermissionGroups ExchangeServers

如何知道操作成功?

若要验证是否已成功配置匿名中继,请执行以下步骤:

  • 验证专用的接收连接器的配置。

    Get-ReceiveConnector "Anonymous Relay" | Format-List Enabled,TransportRole,Bindings,RemoteIPRanges
    
  • 验证专用的接收连接器的权限。

    Get-ADPermission "Anonymous Relay" -User "NT AUTHORITY\ANONYMOUS LOGON" | where {($_.Deny -eq $false) -and ($_.IsInherited -eq $false)} | Format-Table User,ExtendedRights
    

    Get-ADPermission "Anonymous Relay" -User "MS Exchange\Externally Secured Servers" | where {($_.Deny -eq $false) -and ($_.IsInherited -eq $false)} | Format-Table User,ExtendedRights
    
  • 使用 Telnet 测试一个或多个指定的网络主机能否连接到专用的接收连接器,以及能否通过连接器匿名中继邮件。 默认情况下,大多数 Microsoft Windows 客户端或服务器版本中未安装 Telnet 客户端。 要安装它,请参阅 Install Telnet Client(安装 Telnet 客户端)。

    有关详细信息,请参阅使用 Telnet 测试 Exchange 服务器上的 SMTP 通信

    如果网络主机是没有安装 Telnet 的设备,您可以暂时将一台计算机的 IP 地址添加到接收连接器,并在完成测试后,从接收连接器删除 IP 地址。

    对于测试,您将需要以下值:

    • 目标:这是用于连接到专用接收连接器的 IP 地址或 FQDN。 这可能是在其中定义接收连接器的邮箱服务器的 IP 地址。 这与您在连接器上配置的“网络适配器绑定”属性(或 Bindings 参数)值有关。 您需要为环境使用有效值。 在此示例中,我们将使用 10.1.1.1。

    • 发件人的电子邮件地址:你可能会将匿名中继邮件的服务器或设备配置为使用组织权威域中的发送邮件地址。 在此示例中,我们将使用 chris@contoso.com。

    • 收件人的电子邮件地址:使用有效的电子邮件地址。 在此示例中,我们将使用 kate@fabrikam.com。

    • 邮件主题:测试

    • 消息正文:这是一条测试消息

    1. 打开"命令提示符"窗口,键入 telnet,再按 Enter 键。

    2. 键入 set localecho,再按 Enter 键。

    3. 键入 OPEN 10.1.1.1 25,再按 Enter 键。

    4. 键入 EHLO,再按 Enter 键。

    5. 键入 MAIL FROM:chris@contoso.com,然后按 Enter。

    6. 键入 RCPT TO:kate@fabrikam.com,然后按 Enter。

      • 如果收到响应 250 2.1.5 Recipient OK,则接收连接器允许来自网络主机的匿名中继。 继续执行下一步以完成测试邮件的发送。

      • 如果收到响应 550 5.7.1 Unable to relay,则接收连接器不允许来自网络主机的匿名中继。 如果发生这种情况,请执行以下操作:

        • 请验证您连接的是专用接收连接器的正确 IP 地址或 FQDN。

        • 请验证允许在其中运行 Telnet 的计算机使用接收连接器。

        • 请验证接收连接器的权限。

    7. 键入 DATA,再按 Enter 键。

      您应该会收到类似以下内容的响应:

      354 Start mail input; end with <CLRF>.<CLRF>

    8. 键入主题:测试,再按 Enter 键。

    9. 再次按 Enter 键。

    10. 键入这是一封测试邮件,再按 Enter 键。

    11. 按 Enter 键,键入句点 ( . ),再按 Enter 键。

      您应该会收到类似以下内容的响应:

      250 2.6.0 <GUID> Queued mail for delivery

    12. 若要与 SMTP 服务器断开连接,请键入 QUIT,再按 Enter 键。

      您应该会收到类似以下内容的响应:

      221 2.0.0 Service closing transmission channel

    13. 若要关闭 Telnet 会话,请键入 quit,再按 Enter 键。

  • 如果匿名中继间歇工作,您可能需要修改接收连接器的默认邮件发送速度和邮件限制。 有关详细信息,请参阅接收连接器上的邮件限制