Exchange Server中的 DSN 和NDR 的过程

与早期版本的 Exchange 一样,Exchange Server使用传递状态通知 (也称为 DSN、未送达报告、NDR 或退回邮件) 向邮件发件人提供传递状态和失败通知消息。 有关NDR的详细信息,请参阅 Exchange Server 中的 DSN 和NDR

可以使用 Exchange 中包含的默认NDR,也可以使用 Exchange 命令行管理程序创建包含自定义文本的NDR,以满足组织的需求。 自定义 NDR 文本替换给定增强状态代码或配额事件的默认文本。 如果删除自定义 NDR,将使用默认 NDR 文本, (无法完全删除默认 NDR) 。 还可以禁用自定义 NDR 以保留它们,但在使用默认 NDR 文本) (,则不要使用它们。

开始前,有必要了解什么?

  • 估计完成每个过程的时间:少于 10 分钟。

  • 本主题main焦点是自定义 NDR 文本,用于替换 Exchange 使用的默认 NDR 文本。 您可以为其他增强状态代码值创建新的NDR, (例如,5.999.999) ,但如果 Exchange 不使用增强状态代码,则没有人会看到这些NDR。 可以将一系列自定义增强状态代码用作邮件流规则操作的一部分, (也称为传输规则) 。 有关详细信息,请参阅 Exchange Server 中的邮件流规则操作

  • 本主题中的过程适用于邮箱服务器和边缘传输服务器。

  • 对于本主题中的大多数过程,不能使用 Exchange 管理中心 (EAC) 。 需要使用 Exchange 命令行管理程序。 若要了解如何在本地 Exchange 组织中打开 Exchange 命令行管理程序,请参阅 Open the Exchange Management Shell

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

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

提示

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

使用 Exchange 命令行管理程序查看所有默认的NDR

若要将所有语言的默认NDR 列表输出到名为 C:\My Documents\Default NDRs.html 的 HTML 文件,请运行以下命令:

Get-SystemMessage -Original | Select-Object -Property Identity,DsnCode,Language,Text | ConvertTo-Html | Set-Content -Path "C:\My Documents\Default NDRs.html"

注意:应将列表输出到文件,因为列表很长,如果未安装所需的语言包,将收到错误。

有关详细的语法和参数信息,请参阅Get-SystemMessage

使用 Exchange 命令行管理程序查看自定义NDR

若要查看组织中所有自定义 DDR 的摘要列表,请运行以下命令:

Get-SystemMessage

注意:默认情况下,没有自定义的NDR,因此此命令不返回任何结果。

若要查看自定义 NDR 的详细信息,请使用以下语法:

Get-SystemMessage -Identity <NDRIdentity>

有关可用 <NDRIdentity> 值的说明,请参阅本主题中的 NDR 的标识值 部分。

此示例返回以英语发送给内部发件人的增强状态代码 5.1.2 的自定义 NDR 的详细信息。 如果这种语言、受众和增强状态代码组合没有自定义 NDR,则会收到错误。

Get-SystemMessage En\Internal\5.1.2 | Format-List

此示例返回邮箱的 ProhibitSendReceive 配额的自定义英语 NDR 的详细信息。 如果没有针对这种语言和配额组合的自定义 NDR,则会收到错误。

Get-SystemMessage En\ProhibitSendReceiveMailBox | Format-List

有关详细的语法和参数信息,请参阅Get-SystemMessage

创建自定义NDR

使用 Exchange 命令行管理程序为增强状态代码创建自定义NDR

若要为增强状态代码创建自定义 NDR,请使用以下语法:

New-SystemMessage -Internal <$true | $false> -Language <Locale> -DSNCode <x.y.z> -Text "<NDR text>"

这些值为:

  • 内部:控制是将 NDR 发送到内部还是外部发件人。 对于内部发送方,请使用值 $true。 对于外部发送方,请使用值 $false。 例如,在内部发件人的自定义文本中,可以包含不希望包含在外部发件人的NDR中的技术支持联系人信息。
  • 语言:有关可用语言的列表,请参阅本主题中的 DDR 支持的语言 部分。
  • DSNCode:增强状态代码。 有效值为 4。x.y 或 5。x.y ,其中 xy 是一到三位数。
  • 文本:可以使用纯文本或 HTML 格式。 有关详细信息,请参阅本主题中的 HTML 标记和NDR中的特殊字符 部分。

本示例为用英语发送给外部发件人的增强状态代码 5.1.2 创建自定义纯文本 NDR。

New-SystemMessage -Internal $false -Language En -DSNCode 5.1.2 -Text "You tried to send a message to a disabled mailbox that's no longer accepting messages. Please contact your System Administrator for more information."

本示例为用英语发送给内部发件人的增强状态代码 5.1.2 创建自定义 HTML NDR。

New-SystemMessage -DSNCode 5.1.2 -Internal $true -Language En -Text 'You tried to send a message to a <B>disabled</B> mailbox. Please visit <A HREF="https://it.contoso.com">Internal Support</A> or contact &quot;InfoSec&quot; for more information.'

有关详细语法和参数信息,请参阅 New-SystemMessage

使用 Exchange 命令行管理程序为配额创建自定义NDR

若要为配额创建自定义 NDR,请使用以下语法:

New-SystemMessage -Language <Locale> -QuotaMessageType <Quota> -Text "<NDR text>"

这些值为:

此示例为邮箱上的 ProhibitSendReceive 配额创建自定义英语纯文本 NDR。

New-SystemMessage -Language En -QuotaMessageType ProhibitSendReceiveMailBox -Text "Your mailbox is full, and can't send or receive messages. Delete any unwanted large messages (messages with attachments) and empty your Deleted Items folder"

有关详细语法和参数信息,请参阅 New-SystemMessage

如何知道操作成功?

若要验证是否已成功创建自定义 NDR,请执行以下步骤:

  • 运行以下命令并验证属性值:

    Get-SystemMessage | Format-List Identity,DsnCode,Language,Text
    
  • 发送将生成配置的自定义 NDR 的测试消息。

使用 Exchange 命令行管理程序修改自定义NDR

若要修改自定义NDR,请使用以下语法:

Set-SystemMessage -Identity <NDRIdentity> [-Text "<NDR text>"] [-Original]

有关可用 <NDRIdentity> 值的说明,请参阅本主题中的 NDR 的标识值 部分。 有关 NDR 文本>值的说明<,请参阅本主题中的 HTML 标记和 NDR 中的特殊字符部分。

本示例更改以英语发送给内部发件人的增强状态代码 5.1.2 的自定义 NDR 中的文本。

Set-SystemMessage -Identity En\Internal\5.1.2 -Text "The mailbox you tried to send an email message to is disabled and is no longer accepting messages. Please contact the Help Desk at extension 123 for assistance."

本示例更改邮箱上的 ProhibitSendReceive 配额的自定义英语 NDR 中的文本。

Set-SystemMessage -Identity En\ProhibitSendReceiveMailBox -Text "Your mailbox is full. Delete large messages and empty your Deleted Items folder."

此示例禁用指定的自定义 NDR。 自定义 NDR 会保留,并显示在 Get-SystemMessage 的结果中,但改用默认 NDR。

Set-SystemMessage -Identity En\Internal\5.1.2 -Original

注意:如果没有相应的默认 NDR,则使用 原始 开关时会收到错误。

有关详细的语法和参数信息,请参阅Set-SystemMessage

如何知道操作成功?

若要验证是否已成功修改自定义 NDR,请将 NDRIdentity> 替换为<适当的值,并运行以下命令以验证属性值:

Get-SystemMessage -Identity <NDRIdentity> | Format-List

使用 Exchange 命令行管理程序删除自定义NDR

若要删除自定义 NDR,请使用以下语法:

Remove-SystemMessage -Identity <NDRIdentity>

有关可用 <NDRIdentity> 值的说明,请参阅本主题中的 NDR 的标识值 部分。

本示例删除以英语发送给内部发件人的增强状态代码 5.1.2 的自定义 NDR。

Remove-SystemMessage -Identity En\Internal\5.1.2

此示例删除邮箱上的 ProhibitSendReceive 配额的自定义英语 NDR。

Remove-SystemMessage -Identity En\ProhibitSendReceiveMailBox

有关语法和参数的详细信息,请参阅 Remove-SystemMessage

如何知道操作成功?

若要验证是否已成功删除自定义 NDR,请运行以下命令以验证未列出自定义 NDR:

Get-SystemMessage

将 DDR 的副本转发到 Exchange 收件人邮箱

可以将 Exchange 组织配置为将 DDR 的副本发送给 Exchange 收件人。 但是,默认情况下,不会向 Exchange 收件人分配邮箱,因此会丢弃发送给 Exchange 收件人的任何邮件。 若要将 DDR 的副本发送到 Exchange 收件人邮箱,需要:

  1. 将邮箱分配给 Exchange 收件人。

  2. 指定要监视的增强状态代码 (而不是配额) 。

步骤 1:使用 Exchange 命令行管理程序将邮箱分配给 Exchange 收件人

注意:由于邮件量很大,我们建议为 Exchange 收件人使用专用邮箱。 有关创建邮箱的详细信息,请参阅在 Exchange 管理中心创建共享邮箱在 Exchange Server 中创建用户邮箱

若要将邮箱分配给 Exchange 收件人,请使用以下语法:

Set-OrganizationConfig -MicrosoftExchangeRecipientReplyRecipient <MailboxIdentity>

本示例将名为“Contoso 系统邮箱”的现有邮箱分配给 Exchange 收件人。

Set-OrganizationConfig -MicrosoftExchangeRecipientReplyRecipient "Contoso System Mailbox"

步骤 2:指定要监视的增强状态代码

  • 可以使用 EAC 或 Exchange 命令行管理程序。

  • 默认情况下,即使没有指定增强状态代码,这些代码的NDR 会自动发送给 Exchange 收件人:

    • 5.1.4
    • 5.2.0
    • 5.2.4
    • 5.4.4
    • 5.4.6
    • 5.4.8
  • 只能指定增强状态代码。 无法指定配额。

使用 EAC 指定要监视的增强状态代码

有关 EAC 的详细信息,请参阅 Exchange Server 中的 Exchange 管理中心

  1. 在 EAC 中,转到 “邮件流>接收连接器”。

  2. 单击“ 更多选项 ” (“更多选项”图标。) 并选择“ 组织传输设置”。

  3. 在打开的 “组织传输设置” 窗口中,单击“ 传递 ”选项卡。在 “DSN 代码 ”部分中,执行以下一个或多个步骤:

    • 若要添加条目,请键入要监视的增强状态代码 (4。 <y.z> 或 5。 <y.z>) ,然后单击“ 添加 (添加”图标。) 。 根据需要重复此步骤的次数。

    • 若要修改现有条目,请单击“ 编辑 ” (“编辑”图标将其选中。) ,然后内联修改它。

    • 若要删除现有条目,请选择它,然后单击“ 删除 (删除”图标。) 。

    完成后,单击“保存”。

使用 Exchange 命令行管理程序指定要监视的增强状态代码

若要添加用于监视的增强状态代码(这将替换任何现有值),请使用以下语法:

Set-TransportConfig -GenerateCopyOfDSNFor <x.y.z>,<x.y.z>...

此示例将 Exchange 组织配置为将增强状态代码值 5.7.1、5.7.2 和 5.7.3 的所有NDR 转发给 Exchange 收件人。

Set-TransportConfig -GenerateCopyOfDSNFor 5.7.1,5.7.2,5.7.3

若要在不修改任何现有值的情况下添加或删除条目,请使用以下语法:

Set-TransportConfig -GenerateCopyOfDSNFor @{Add="<x.y.z>","<x.y.z>"...; Remove="<x.y.z>","<x.y.z>"...}

本示例添加增强状态代码 5.7.5,并从转发到 Exchange 收件人的现有NDR 列表中删除 5.7.1。

Set-TransportConfig -GenerateCopyOfDSNFor @{Add="5.7.5"; Remove="5.7.1"}

如何知道操作成功?

若要验证是否已成功配置要发送到 Exchange 收件人邮箱的NDR 副本,

  • 运行以下命令并验证属性值:

    Get-TransportConfig | Format-List GenerateCopyOfDSNFor
    
  • 监视 Exchange 收件人邮箱,查看是否在邮箱中传递了包含指定增强状态代码的NDR。

DDR 的标识值

NDR 的标识使用以下格式之一:

  • 增强状态代码的 NDR<Language>\<Internal |External>\ <DSNcode>。 例如,En\Internal\5.1.2Ja\External\5.1.2

    • <DSNcode>:有效值为 4。x.y 或 5。x.y ,其中 xy 是一到三位数。 若要生成 Exchange 使用的增强状态代码列表,请参阅本主题前面的 使用 Exchange 命令行管理程序查看所有默认的NDR 部分。
    • 内部或外部:可以在内部或外部发件人的NDR中使用不同的文本。
    • <语言>:有关支持的语言列表,请参阅本主题中的 DDR 支持的语言 部分。
  • 配额的NDR<Language>\ <QuotaMessageType>。 例如,En\ProhibitSendReceiveMailBox

    • <语言>:有关支持的语言列表,请参阅本主题中的 DDR 支持的语言 部分。

    • <QuotaMessageType>:有效值为:

      可以使用 and 比较运算符指定多个条件。不是以整数表示的属性值必须使用引号 (") 括住。

      • ProhibitSendReceiveMailBox:邮箱超出其 ProhibitSendReceiveQuota 限制。
      • ProhibitSendMailbox:邮箱超出其 ProhibitSendQuota 限制。
      • WarningMailbox:如果邮箱配置了 或 ProhibitSendReceiveQuota 限制,ProhibitSendQuota则邮箱超出其IssueWarningQuota限制。
      • WarningMailboxUnlimitedSize:邮箱未ProhibitSendQuota配置 或 ProhibitSendReceiveQuota 限制时超出其IssueWarningQuota限制。

      WarningMailboxUnlimitedSize:邮箱超出了它的 IssueWarningQuota 限制(若未配置 ProhibitSendQuota 或 ProhibitSendReceiveQuota 限制的话)。

      • ProhibitPostPublicFolder:公用文件夹超出其 ProhibitPostQuota 限制。
      • WarningPublicFolder:公用文件夹在配置了ProhibitPostQuota限制时超出其IssueWarningQuota限制。
      • WarningPublicFolderUnlimitedSize:公用文件夹未ProhibitPostQuota配置限制时超出其IssueWarningQuota限制。

      WarningPublicFolderUnlimitedSize:公用文件夹超出了它的 IssueWarningQuota 限制(若未配置 ProhibitPostQuota 限制的话)。

      • ProhibitReceiveMailboxMessagesPerFolderCount:邮箱超出其 MailboxMessagesPerFolderCountReceiveQuota 限制。
      • WarningMailboxMessagesPerFolderCount:邮箱在配置了ailboxMessagesPerFolderCountReceiveQuota限制时超出其MailboxMessagesPerFolderCountWarningQuota限制。
      • WarningMailboxMessagesPerFolderUnlimitedCount:邮箱未MailboxMessagesPerFolderCountReceiveQuota配置限制时超出其MailboxMessagesPerFolderCountWarningQuota限制。

      WarningMailboxMessagesPerFolderUnlimitedCount:邮箱超出了它的 MailboxMessagesPerFolderCountWarningQuota 限制(若未配置 MailboxMessagesPerFolderCountReceiveQuota 限制的话)。

      • ProhibitReceiveFolderHierarchyChildrenCountCount:邮箱超出其 FolderHierarchyChildrenCountReceiveQuota 限制。
      • WarningFolderHierarchyChildrenCount:邮箱在配置了FolderHierarchyChildrenCountReceiveQuota限制时超出其FolderHierarchyChildrenCountWarningQuota限制。
      • WarningFolderHierarchyChildrenUnlimitedCount:邮箱未FolderHierarchyChildrenCountReceiveQuota配置限制时超出其FolderHierarchyChildrenCountWarningQuota限制。
      • ProhibitReceiveFoldersCount:邮箱超出其 FoldersCountReceiveQuota 限制。
      • WarningFoldersCount:邮箱在配置了FoldersCountReceiveQuota限制时超过其FoldersCountWarningQuota限制。
      • WarningFoldersCountUnlimited邮箱未FoldersCountReceiveQuota配置限制时超出其FoldersCountWarningQuota限制。

      WarningFoldersCountUnlimited:邮箱超出了它的 FoldersCountWarningQuota 限制(若未配置 FoldersCountReceiveQuota 限制的话)。

      • ProhibitReceiveFolderHierarchyDepth:邮箱超出其 FolderHierarchyDepthWarningQuota 限制。
      • WarningFolderHierarchyDepth:邮箱在配置了FolderHierarchyDepthReceiveQuota限制时超出其FolderHierarchyDepthWarningQuota限制。
      • WarningFolderHierarchyDepthUnlimited::邮箱未FolderHierarchyDepthReceiveQuota配置限制时超出其FolderHierarchyDepthWarningQuota限制。

DDR 支持的语言

下表列出了可在自定义NDR中使用的代码支持的语言。

语言代码 语言
af 南非荷兰语
am-ET 阿姆哈拉语(埃塞俄比亚)
ar 阿拉伯语
as-IN 阿萨姆语(印度)
bg 保加利亚语
bn-BD 孟加拉语(孟加拉国)
bn-IN 孟加拉语(印度)
bs-Cyrl-BA 波斯尼亚语(西里尔文,波斯尼亚和黑塞哥维那)
bs-Cyrl-BA 波斯尼亚语(拉丁语,波斯尼亚和黑塞哥维那)
ca 加泰罗尼亚语
cs 捷克语
cy-GB 威尔士语(英国)
da 丹麦语
de 德语
el 希腊语
en 英语
es 西班牙语
et 爱沙尼亚语
eu 巴斯克语
fa 波斯语
fi 芬兰语
fil-PH 菲律宾语(菲律宾)
fr 法语
ga-IE 爱尔兰语(爱尔兰)
gl 加利西亚语
gu 古吉拉特语
ha-Latn-NG 豪萨语(拉丁语,尼日利亚)
he 希伯来语
hi 印地语
hr 克罗地亚语
hu 匈牙利语
hy 亚美尼亚语
id 印度尼西亚语
ig-NG 伊博语(尼日利亚)
is 冰岛语
it 意大利语
iu-Latn-CA 依奴提图特语(拉丁语,加拿大)
ja 日语
ka 格鲁吉亚语
kk 哈萨克斯坦语
km-KH 高棉语(柬埔寨)
kn 卡纳达语
ko 朝鲜语
kok 孔卡尼语
ky 吉尔吉斯坦语
lb-LU 卢森堡语(卢森堡)
lo-LA 老挝语(老挝人民民主共和国)
lt 立陶宛语
lv 拉脱维亚语
mi-NZ 毛利语(新西兰)
mk 马其顿语
ml-IN 马拉雅拉姆语(印度)
mr 马拉地语
ms 马来语
ms-BN 马来语(文莱达鲁萨兰国)
mt-MT 马耳他语(马耳他)
ne-NP 尼泊尔语(尼泊尔)
nl 荷兰语
nn-NO 挪威语(尼诺斯克语)
no 挪威语
nso-ZA 塞索托语(南非)
or-IN 奥里雅语(印度)
pa 旁遮普语
pl 波兰语
ps-AF 普什图语(阿富汗)
pt 葡萄牙语
pt-PT 葡萄牙语(葡萄牙)
qut-GT 基切语(危地马拉)
quz-PE 盖丘亚语(秘鲁)
ro 罗马尼亚语
ru 俄语
rw-RW 金雅旺达语(卢旺达)
si-LK 僧伽罗语(斯里兰卡)
sk 斯洛伐克语
sl 斯洛文尼亚语
sq 阿尔巴尼亚语
sr 塞尔维亚语
sr-Cyrl-CS 塞尔维亚语(西里尔文,塞尔维亚)
sv 瑞典语
sw 斯瓦希里语
ta 泰米尔语
te 泰卢固语
th 泰语
tn-ZA 塞茨瓦纳语(南非)
tr 土耳其语
tt 鞑靼语
uk 乌克兰语
ur 乌尔都语
uz 乌兹别克语
vi 越南语
wo-SN 沃洛夫语(塞内加尔)
xh-ZA 科萨语(南非)
yo-NG 约鲁巴语(尼日利亚)
zh-Hans 中文(简体)
zh-Hant 中文(繁体)
zh-HK 中国香港特别行政区 ()
zu-ZA 祖鲁语(南非)

若要控制在NDR中使用的语言,请在 Set-TransportConfig cmdlet 上使用以下参数:

  • ExternalDsnDefaultLanguage:指定要在外部NDR上使用的默认语言。 默认值为空白 () $null ,这意味着使用默认的 Windows 服务器语言。
  • InternalDsnDefaultLanguage:指定要在内部NDR上使用的默认语言。 默认值为空白 () $null ,这意味着使用默认的 Windows 服务器语言。
  • ExternalDsnLanguageDetectionEnabled
    • $true:Exchange 尝试使用与原始邮件相同的语言发送外部 NDR。 此值为默认值。
    • $false:对外部 NDR 禁用语言检测,NDR 语言由 ExternalDsnDefaultLanguage 参数确定。
  • InternalDsnLanguageDetectionEnabled
    • $true:Exchange 尝试使用与原始邮件相同的语言发送内部 NDR。 此值为默认值。
    • $false:对内部 NDR 禁用语言检测,NDR 语言由 InternalDsnDefaultLanguage 参数确定。

DDR 中的 HTML 标记和特殊字符

包含在 NDR 中的自定义文本最多可以包含 512 个字符,其中包括文本和 HTML 标记。 例如,可以包含问题的详细说明、技术支持的联系信息以及支持部门网站的链接。

若要控制 Exchange 是在 DDR 中使用 HTML 还是纯文本,请在 Set-TransportConfig cmdlet 上使用以下参数:

  • ExternalDsnSendHtml
    • $true:在 DDR 中为外部发件人使用 HTML 标记。 此值为默认值。
    • $false:在外部发件人的NDR中使用纯文本。
  • InternalDsnSendHtml
    • $true:在 DDR 中为内部发件人使用 HTML 标记。 此值为默认值。
    • $false:在 DDR 中对内部发件人使用纯文本。

下表介绍了可在 NDR 文本中使用的 HTML 标记。

说明 HTML 标记
粗体 <B></B>
斜体 <EM></EM>
换行符 <BR>
段落 <P></P>
Hyperlink <A HREF="url"></A>

注意:由于此标记包含双引号,因此,如果在自定义文本中使用此标记,则需要使用单引号 (而不是在完整文本字符串周围) 双引号。 否则,将收到错误。

NDR 中的某些字符需要转义代码来从字面上识别它们,而不是通过它们在 NDR 中的函数来标识它们。 下表介绍了这些字符:

字符 转义代码
< &lt;
> &gt;
" &quot;
& &amp;

例如,如果希望 NDR 显示文本 Please contact the Help Desk at <1234>.,则需要使用 值 "Please contact the Help Desk at &lt;1234&gt;."

这是使用 HTML 标记和转义代码的自定义 NDR 文本值的示例。

'You tried to send a message to a <B>disabled</B> mailbox. Please visit <A HREF="https://it.contoso.com">Internal Support</A> or contact &quot;InfoSec&quot; for more information.'