54SA.COM|专注于系统运维管理,为中国SA提供动力!
当前位置: 主页 > Windows > 服务器 > Exchange >

如何在Exchange 2007中自定义未送达报告(NDR)

时间:2010-10-28 21:26来源:编辑部 编辑:COCO

    未送达报告 (NDR) 是一种类型的发送状态通知。只要邮件无法送达,就会生成 NDR。如果服务器检测到投递失败的原因,则会将该原因与状态代码及所写的相应错误消息相关联。

  但是这些NDR都是系统自动生成的,有时候用户可能想自定义NDR中的内容。在Exchange 2003中,需要修改DLL文件才能实现,整个操作过程比较复杂。我们不在这里讲述了。在Exchange 2007,我们可以很容易地实现它。

  首先我们需要创建自定义的传递状态通知(DSN),然后将自定义的DSN通过传输规则联系起来。这样当用户发送邮件后会自动触发传输规则,传输规则将根据自定义的DSN向发件人返回未送达报告 (NDR),并删除原始邮件。

  1. 创建自定义的DSN:

  1) 打开Exchange Management Shell,运行下面的命令:

  New-SystemMessage -DsnCode 5.7.228 -Language En -Internal $True -Text 'Sending messages between the Sales and Brokerage groups is prohibited by policy #123. For more information, see Compliance Policy 123.'

  -Internal 参数设置为True,当内部用户发送邮件时触发该DSN。如图1所示。

   


    
    New-SystemMessage -DsnCode 5.7.228 -Language En -Internal $False -Text 'Sending messages between the Sales and Brokerage groups is prohibited by policy #123. For more information, see Compliance Policy 123.'

  -Internal 参数设置为False,当外部用户发送邮件给您的组织中的用户发送邮件时触发该DSN。如图2所示。


    
    2) 还可以运行下面的命令来检查刚才创建的DSN,如图3所示:
    
   

    
    Get-systemmessage

  注意:在这里我们只是做演示,对内部发件人和外部发件人使用相同的文本(-Text后面的参数),在实际环境中,您可以根据自己的需要来设置文本。我们在这里设置的语言是英文,您可以设置其他的语言版本。比如中文的、日文等等。

    2. 创建传输规则将自定义DSN关联起来:

  1) 打开Exchange Management Console,然后定位到组织配置-Hub Transport,点击传输规则,

  2) 右键选择新建传输规则,输入名称比如dsntest。在comment中您可以输入一些信息描述该规则的用途。如图4所示。

   


    
    3) 然后点击下一步,选中send to people,点击people,点击add,将test001添加进来,如图5所示。

   

    
    4) 然后点击下一步,选择send bounce message to sender with enhanced status code。如图6所示。然后点击5.7.1,输入5.7.228。你刚才创建DSN指定的代码。当然你也可以点击Delivery not authorized, message refused然后输入自定义的信息。我们这里保持缺省的不变。如图7所示。

   


    
    5) 点击两次下一步,然后点击new,点击finish。如图8所示。
    
   

  注:该配置是在150795M1上完成的。
    

    3. 验证结果。

  先介绍一下环境配置,我们有两个Exchange 2007组织。它们分别属于域dc.com和域wan.com。

  dc.com域中的用户:dcadministrator,dc est001;

  dc.com域中的Exchange 2007服务器名称:150795M1,该服务器有客户端访问服务器、邮箱服务器和中心传输服务器角色,同时该服务器还是DC。

  wan.com域中的用户:wanadministrator。

  dc.com域中的Exchange 2007服务器名称:roc-dc,该服务器有客户端访问服务器、邮箱服务器和中心传输服务器角色。同时该服务器还是DC。

  我们首先在域dc.com中的内部进行测试:

  1. 我们先通过OWA登录dcadministrator的邮箱,

  2. 然后发送一封邮件给dc est001,

  3. 然后等待系统的退信,该NDR中的用户信息部分显示的是我们刚才自定义的信息。如图9所示。

   


    
    我们首先在域dc.com中的外部进行测试,即使用外部用户wanadministrator发送邮件给dc est001。

  1. 我们先通过OWA登录wanadministrator的邮箱,

  2. 然后发送一封邮件给dc est001,

  3. 然后等待系统的退信,系统确实退信了,但是产生的NDR不是我们想要的。如图10所示。

   


    
    出现该问题是因为当将Exchange 2007服务器升级到update rollup 4或者最新update rollup,DSNConversionMode的缺省值是UseExchangeDSNs。如果该参数设置为UseExchangeDSNs,Exchange Server 2007将DSNs转换为Exchange 2007 DSN格式。以前DSN中包含的任何自定义的文本或附件将会被覆盖。如果将该参数设置为PreserveDSNBody,Exchange Server 2007将DSNs转换为Exchange 2007 DSN。但是,DSN消息中的文本主体会保留。如果您将该参数设置为DoNotConvert,Exchange Server 2007 不修改DSN消息。实际上,Exchange Server 2007将该消息作为标准的邮件来传递。

  我们先查看一下Exchange服务器roc-dc 上的DSNConversionMode的缺省值,如图11所示。运行命令:Set-transportConfig -DSNConversionMode DoNotConvert,然后在发送一次邮件给dc est001。


    
    这个时候收到的NDR正好是我们想要的。如图12所示。由于我们将该参数设置为DoNotConvert,所以Exchange Server 2007没有修改DSN,并且将原来的邮件作为附件附加上。

   

    
    如果我们运行Set-transportConfig -DSNConversionMode PreserveDSNBody命令的话,这个时候NDR中不包含原来的邮件。如图13所示。

   


    
   

[责任编辑:Lavy]

------分隔线----------------------------