在 Exchange 中删除重复的和不需要的代理地址

文章翻译 文章翻译
文章编号: 318774 - 查看本文应用于的产品
本文是一个合并下列以前可用的文章: 318774、 329617
展开全部 | 关闭全部

本文内容

概要

如果您是管理员,您可以使用 Microsoft Exchange 收件人策略自动配置和使用地址生成规则对所有 Exchange 收件人进行自定义电子邮件地址。 收件人更新服务大容量中的地址适用于根据新的和现有的用户指定的规则。 要配置这些规则,使用 Exchange 系统管理器可以访问收件人策略对象的属性。

however,in some situations,may use that causes duplicate or that causes multiple addresses to be applied across Exchange organization rule。 when duplicate e-mail addresses are detected during ordinary Exchange operation,non-delivery reports (NDRs) with 5.1.4 may be error code sent by server,and may experience other unexpected 的 behavior. 此外,应用程序事件日志中可能记录以下事件 ID 消息:



事件类型: 警告
事件源: MSExchangeIS
事件类别: 常规
事件 ID: 9514
计算机: Exchange_Server_Name
说明: 目录中的两个对象具有相同的代理-/ dc = com / dc = 域 / cn = 配置 / cn = 服务 / cn = Microsoft Exchange / cn = organization_name / cn = 管理组 / cn = administrative_group_name / cn = 服务器 / cn = Exchange_server_name / cn = informationstore / cn = storage_group_name / cn = 公用文件夹存储 (Exchange_server_name) 和 / dc = com / dc = 域 / ou = users / cn = user_name

本文介绍了种情况下重复的地址应用的位置以及如何删除这些重复的地址。

更多信息

下面的规则是 SMTP (Internet) 邮件格式地址一个典型的规则:
@domain.com
当您使用此规则时,电子邮件地址添加到 mailnickname@domain.com 的收件人策略被覆盖的每个收件人对象。 如果用户的 Exchange 电子邮件别名就 user1,地址,user1@domain.com 应用于用户。

可以使用 Exchange 若要定义自动命名规则。 例如,您可能需要为收件人配置为 Internet 电子邮件地址"FirstName_LastName@domain.com",而不是"mailnickname@domain com" 可以使用以下地址生成规则进行此更改:
%g_%s@domain.com
有关可用自动命名说明符和语法的其他信息,单击下面的文章编号以查看 Microsoft 知识库中相应的文章:
285136 如何为自定义 SMTP 电子邮件地址生成器通过收件人策略
if are using naming auto-specifiers,must make sure that reference in address generation rule fields actually exist for each of that are covered by rule recipients。 if do not do so,may cause duplicate or to be on objects throughout Exchange organization generated multiple e-mail addresses。

此问题的影响因哪些收件人是涉及到。 多个 Exchange 系统对象是已启用邮箱的。 如果错误的地址应用于这些系统对象,可能会出现问题。 例如,公用文件夹复制可能会失败或数据库可能无法装入。 此外,本文的"摘要"一节所述的了事件 ID 消息可能会记录。

作为此行为的示例,假设已定义 %g_%s@domain.com 地址生成规则。 此规则将 givenName 属性和 Active Directory 对象的 sn 属性值并使用这些值构造的电子邮件地址。 如果用户的 givenName 属性值是 Jeff 且 sn 属性值为 Smith,电子邮件地址是 Jeff_Smith@domain.com。

givenName 属性和 sn 属性不是强制性,已启用邮件的对象 (如通讯组列表和系统代理程序可能缺少这些属性。 在这种情况下,%g_%s@domain.com 地址生成规则就转换到 _@domain.com 地址生成规则。 对象但没有 givenName sn 属性值,规则成为相当于一条规则,hardcode 在电子邮件地址为 _@domain.com。

当您应用新的电子邮件地址时, 收件人更新服务检查目录林中的任何对象上是否已存在相同的地址。 如果是这样,一个数字值被添加到新的地址来区分它。 例如,如果有多个用户名为 Jeff Smith,由收件人更新服务处理的一个其他用户帐户可能会收到的电子邮件地址为 Jeff_Smith2@domain.com。

这意味着,而无需 givenName sn 属性值 %g_%s@domain.com 地址生成规则根据正在处理用户对象将接收电子邮件地址如 _1@domain.com、 _2@domain.com、 _3@domain.com 和其他类似的地址。

收件人更新服务检查新的收件人必须有电子邮件地址,每次对象,而无需 givenName sn 属性可能会收到其他电子邮件地址。 请考虑具有 _1@domain.com 地址的对象。 此地址不匹配该 _@domain.com 规则,并收件人更新服务可能会假定该对象仍必须有应用"硬编码"_@domain.com 地址。 重复地址检查查找 the_@domain.com 地址已经属于一个不同的对象,并且因此,可能会将分配的地址 (如 _4@domain.com。

if none of object attributes have been modified in Active Directory since last time Recipient Update Service ran,that object is not noticed by Recipient Update Service。 but if object is changed in any way,Recipient Update Service scans again to determine if new e-mail addresses will be applied to。 这意味着随时间,缺少说明符属性的单个对象可以有几十或几百个 _NNNN@domain.com 电子邮件地址。

通常,其他地址是惰性并不影响普通邮件流 ; 但是,随着时间的推移它们会导致收件人更新服务,以越来越多 inefficiently 过程项目。 收件人更新服务必须反复检查重复的地址时为对象指定新的地址。 if _1000@domain.com address exists,Recipient Update Service must perform over thousand duplicate address checks can assign based on _@domain.com generation rule new address before。

尽管 Exchange 在检查重复的电子邮件地址,检查 foolproof 不适合以下两个原因:
  • 必须为每个域配置一个单独的收件人更新服务。 甚至在单个域环境,有两个收件人更新服务。 一个收件人更新服务为域容器并且其他 (企业收件人更新服务) 是服务器配置容器。
  • Active Directory 复制延迟可能会导致不要显示在该夹数据库,正由不同的收件人更新服务在适当的时间中由一个收件人更新服务分配的地址。
当收件人更新服务连接到一个域控制器和域收件人更新服务在企业连接到另一个最有可能发生的情形下其中创建重复的地址是一种方案。 由每个收件人更新服务缺少说明符属性的对象处理的并行,将生成重复项。

最佳做法,以防止重复和多个地址

自动命名规则中最常使用的字符是下划线字符 (_)。 此部分指的是此基本示例 SMTP:%g_%s@domain.com 地址生成规则。

%g%s@domain.com address generation rule does not cause as %g_%s@domain.com same problems。 if object lacks givenName and sn attributes,address generation rule devolves to @domain.com。 this invokes of stamping of mailNickname @domain.com e-mail address default Recipient Update Service behavior

要防止自动命名说明符导致这些问题如果您使用自动命名说明符并且您使用地址生成规则的用户部分中的硬盘字符,必须显式测试的指定属性 (Attribute) 存在该收件人策略上配置该筛选器。
每个 Exchange 收件人策略有一个轻量目录访问协议 (LDAP) 筛选器,它定义该策略应用于对象。 您可以定义在对象最简单的筛选器 (mailnickname = *)。 在 LDAP 筛选器语法,属性 = * 可以读取"属性存在"。 因此,(mailnickname = *) 筛选器应用到每个对象具有一个 mailNickname 属性 (即,它是已启用邮件的每个对象) 的策略。 此筛选器是为默认收件人策略筛选器。

如果您创建其他收件人策略,筛选器可能会为您限制策略应用于对象复杂得多。 Exchange 提供了为基于常用的有意义条件,而不是需要您手动构建筛选器的管理员建立筛选器的一个用户界面。

for example,following filter is automatically generated to capture all Exchange users,contacts,and groups:
(&(&(& (mailnickname=*) (|(&(objectCategory=person)(objectClass=user)(!(homeMDB=*))
(!(msExchHomeServerName=*)))(&(objectCategory=person)
(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))
(&(objectCategory=person)(objectClass=contact))
(objectCategory=group)(objectCategory=publicFolder) ))))
要构造策略上的此筛选器:
  1. 启动 Exchange 系统管理器。
  2. 依次展开 收件人 收件人策略 ,然后打开您想要编辑或创建一个新的策略策略的属性。
  3. 常规 选项卡上,单击 修改
  4. 单击以选中在 常规 选项卡上所有复选框。
  5. click Storage tab,and then click Mailboxes on any server

    您不必配置 高级 选项卡上的任何内容。
若要修改此筛选器,以便它检查存在 givenName sn 的属性:
  1. open of recipient policy,properties and then click Modify
  2. 单击 高级 选项卡,选择 名字 用户字段和 姓氏 用户字段,并将这些字段的条件设置为 Present
在完成这两个过程之后,LDAP 筛选器显示为下面的筛选器:
(&(&(&(& (mailnickname=*) (| (&(objectCategory=person)
(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))
(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)
(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))
(objectCategory=group)(objectCategory=publicFolder))))
(objectCategory=user)(givenName=*)(sn=*)))
请注意,(objectCategory=user)(givenName=*)(sn=*) 已被添加筛选器的结束。 此筛选器现在捕获只有具有一个 givenName 和一个 sn 属性的用户才。 此筛选器将忽略通讯组列表、 联系人和 Exchange 系统对象。

查找和删除重复地址

重复的地址通常创建的自动命名说明符按照一种可预测的模式 (例如,_12345@domain.com、 _12346@domain.com 和类似的地址)。 因此,您可以对这些地址执行的自动的搜索并执行自动的清除。

您可以使用 Windows 2000 以导出和导入 Active Directory 信息作为纯文本以 LDIF 格式中包含 Ldifde.exe 实用工具。 Ldifde 使用相同的标准的 LDAP 搜索语法作为 Exchange 收件人策略筛选器。 can into Ldifde command line paste recipient policy filter and create that lists in that is captured by filter container every object text file。 following command is of to create text file general syntax example:
ldifde-f file.txt-d"dc = 子域,dc = domain,dc = com"-l [ 属性列表 ]-r"[ LDAP 筛选器 ]"
在此命令,Subdomain 符合筛选器中的所有对象将都写入 File.txt。 要捕获配置容器中的对象,您必须指定对容器和第一个域例如安装在目录林中,:
ldifde-f file.txt-d"cn = configuration,dc = firstdomain,dc = com"-l [ 属性列表 ]-r"[ LDAP 筛选器 ]"
-l parameter restricts for object that are written to File.txt attributes. if omit -l ,are listed for each object all attributes. 若要 to list of attributes none,use- l nothing . if do so,command only distinguished 的 name of each object exports to File.txt。

若要查找所有重复项或多个代理服务器地址,您可以运行 Ldifde 针对您的组织中每个域和对配置容器为目录林。 为此,您必须定义一个唯一的搜索模式与只在不需要的地址相匹配。

在此示例,搜索模式是 * SMTP:_*@*。 此搜索模式捕获以下划线开头的每个 SMTP (Internet Mail) Exchange 电子邮件代理服务器地址。 例如,运行以下命令:
ldifde-f badproxies.txt-d"dc = domain,dc = com"-l proxyaddresses-r"(proxyaddresses=*smtp:_*@*)"
此命令将数据导出到 Badproxies.txt 类似于以下数据:
dn: CN=Public Information Store (EXCHANGE1),CN=First Storage Group,CN=InformationStore,CN=EXCHANGE1,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=com
changetype: add
proxyAddresses: smtp:_3516c8@domain.com
proxyAddresses: SMTP:_160b1b@domain.com
proxyAddresses: smtp:_@domain.com
proxyAddresses: smtp:EXCHANGE1-PubIS@domain.com
proxyAddresses: X400:c=US;a= ;p=Organization;o=First Administrative Group;s=EXCHANGE1-Pub IS;

dn: CN=Microsoft DSA,CN=EXCHANGE1,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=domain,DC=com
changetype: add
proxyAddresses: smtp:_5b4ac@domain.com
proxyAddresses: SMTP:_137336@domain.com
proxyAddresses: smtp:_2ee369@domain.com
proxyAddresses: smtp:_2124b1@domain.com
proxyAddresses: smtp:_136617@domain.com
proxyAddresses: smtp:_5a29c@domain.com
proxyAddresses: smtp:_2ed263@domain.com
proxyAddresses: smtp:_1f3e3d@domain.com
proxyAddresses: smtp:_134a14@domain.com
proxyAddresses: smtp:_58b1d@domain.com
proxyAddresses: smtp:_2dcff6@domain.com
proxyAddresses: smtp:_20fa76@domain.com
proxyAddresses: smtp:_133b9e@domain.com
proxyAddresses: smtp:_927c0@domain.com
proxyAddresses: smtp:_2bd94@domain.com
proxyAddresses: smtp:_3340fd@domain.com
proxyAddresses: smtp:EXCHANGE1-SRS@domain.com
proxyAddresses: X400:c=US;a= ;p=Microsoft;o=Desperation;s=JESSICA-SRS;
					
Badproxies.txt file contains for whose proxy addresses include that begins with underscore SMTP address objects records。 all other addresses for these objects are also exported。 can filter out these extra addresses later。

下划线开头的一些地址可能是合法的。 If this condition is true,必须在继续之前从 Badproxies.txt 文件中删除这些对象。 运行下面的 Ldifde 命令来标识这些对象:
ldifde-f file.txt-d"dc = domain,dc = com"-l givenname,sn,samaccountname,mailnickname,displayname-r"(|(givenname=_*)(sn=_*)(samaccountname=_*)(mailnickname=_*)(displayname=_*))"
this command searches for objects whose first name,last name,Windows logon name,Exchange alias,or with underscore display name starts。 can adapt to that is for your particular environment appropriate pattern search filter。

注意 如果您的 Ldifde 命令的语法不正确,Ldifde 可能不返回错误。 而是,您可能看不到任何在所有搜索结果。 如果您的搜索将不返回任何对象,测试 Ldifde 命令通过更改搜索筛选器以小的方式返回结果。 例如,将下划线替换字母 A。

此外,如果您没有查看对象或属性的权限,这些项目不返回搜索并您没有收到的错误,指出您没有权限为某些对象。 搜索在域容器时,Microsoft 建议您以域管理员的身份登录。 当您搜索配置容器时,Microsoft 建议您以企业管理员身份登录。

在验证 Badproxies.txt 只包含的对象具有要删除的电子邮件地址之后,您必须筛选并重新格式化将 LDIF 文件,以便可以导入它再次。 LDIF 导入文件格式和导出文件格式明显不同。

可以使用下面的示例脚本将转换和筛选器导入文件。 此脚本作为一个示例仅提供的 ; 使用或修改此脚本需要您自担风险。 此脚本本身不能更改 Active Directory 信息。 您必须手动导入输出文件从脚本中向 Active Directory 进行更改。 在脚本中的每个行是 double-spaced,以使它易于检测到不正确的行换行。 若要 to run script,copy and paste to plain text file,following text and then name this file Proxyfix.bat。
@ECHO OFF

REM This script processes an LDIF Active Directory input file to create

REM an output file of proxy addresses to be deleted. You may set a

REM pattern to determine what addresses will be added to the output file.

REM If no pattern is set, all addresses will be exported and available for deletion.

REM Wildcard characters in the pattern are not permitted.

REM "Quotes" in the input and output filenames are not permitted.

REM Command line syntax:

REM proxyfix.bat [input file] [output file] pattern

REM Example: proxyfix.bat export.ldf export.out smtp:_

setlocal

set infile=%1

set outfile=%2

set pattern=%3

if {%pattern%}=={} set pattern=proxyAddresses

set pattern=%pattern:"=%

echo Input file is: %infile%

echo Output file will be: %outfile%

echo Current pattern is: %pattern%

pause

if exist %outfile% del %outfile%

:echo.>%outfile%.TMP

for /f "delims=" %%A in (%infile%) do call :DO_EACH_LINE "%%A"

echo ->>%outfile%.TMP

echo.>>%outfile%.TMP

echo Change "delete: proxyAddresses" to "add: proxyAddresses" to set instead of delete addresses>%outfile%.ERR

for /f "delims=" %%A in (%outfile%.TMP) do call :CHECK_EACH_RECORD "%%A"

copy /A %outfile%.ERR + %outfile%.TMP %outfile% >NULL

if errorlevel 0 if not errorlevel 1 (

del %outfile%.tmp

del %outfile%.err

echo LDIF import file saved as "%outfile%"

) ELSE (

echo FAILURE. Examine "%outfile%.tmp" and "%outfile%.err".

)

goto :EOF

:DO_EACH_LINE

set line=%1

set line=%line:"=%

IF "%line:~0,1%"==" " (

echo.

echo Broken line encountered! Could not process this line:

echo "%line%"

echo.

pause

)

if "%line:~0,4%"=="dn: " GOTO :DN

if "%line:~0,15%"=="changetype: add" (

echo changetype: modify>>"%outfile%.TMP"

echo delete: proxyAddresses>>"%outfile%.TMP"

)

if "%line:~0,16%"=="proxyAddresses: " GOTO :FINDPROXY

goto :EOF

:DN

echo ->>%outfile%.TMP

echo.>>%outfile%.TMP

echo Processing %line%

echo %line%>>%outfile%.TMP

goto :EOF

:FINDPROXY

echo %line% | find /I "%pattern%"

if errorlevel 0 if not errorlevel 1 echo %line%>>%outfile%.TMP

GOTO :EOF

:CHECK_EACH_RECORD

IF NOT DEFINED CHECKNEXT SET CHECKNEXT=NO

set line=%1

set line=%line:"=%

IF "%CHECKNEXT%"=="NO" (

IF "%line:~0,4%"=="dn: " SET DN="%line%"

echo Checking %DN%

)

if "%line:~0,22%"=="delete: proxyAddresses" (

set CHECKNEXT=YES

GOTO :EOF

)

IF "%CHECKNEXT%"=="YES" (

IF "%line%"=="-" (

echo             !!!WARNING!!!>>%outfile%.ERR

echo All proxy addresses will be removed from>>%outfile%.ERR

echo %DN%>>%outfile%.ERR

echo by importing this file to Active Directory.>>%outfile%.ERR

)

set CHECKNEXT=NO

GOTO :EOF

)

GOTO :EOF
Notes
  • 您首先对其进行编辑之前,此脚本生成的输出文件无法导入到 Active Directory。 根据如何在运行脚本,脚本可能会生成该操作将删除整个域中的每个代理地址文件。 您必须在它应用到 Active Directory 以确保存在所需的之前,仔细检查输出文件。
  • 文件中的顶部三个行是一个注释和空白区域,您必须删除在运行该文件之前。 如果有该文件的顶部警告,您必须删除这些还。
  • 如果该脚本暂停与"遇到断开的行"! 消息,您必须更正为报告并再次运行该脚本在行。
  • LDIF standard by with in first column space line break after continuing line into multiple lines divides long lines。 sample script does not account for this standard,except report to this kind of line is found when。 if in file there are many broken 的 lines,can by using global find correct these lines and replace procedure。 为此,使用支持之间分行符查找和替换一个文本编辑器。 您可以使用 Microsoft Word 来执行一个全局查找和替换,但必须记住要将已编辑的文件保存为纯文本。 在 Word,您可以搜索以下项,并将其替换执行任何操作:
    ^ p [ 空格字符 ]
    请注意在搜索文本是插入符号字符 (^) 和一个小写 p,不按 CTRL+P。
  • 如果输出文件中的一个记录会导致要从对象中删除所有代理服务器地址,该脚本尝试在该文件的顶部插入一条警告。 如果您使用此脚本来生成 LDIF 导入文件,您必须仔细检查这些文件,以确保它们包含只记录您要导入。

    下面的记录格式删除所有代理地址:
    dn: CN=OBJECT,CN=CONTAINER,....,DC=com
    changetype: modify
    delete: proxyAddresses
    -
    							
    如果在记录中名为没有特定的代理服务器地址,所有地址都将被都删除。 下面的记录格式删除只有一个代理服务器地址:
    dn: CN=OBJECT,CN=CONTAINER,....,DC=com
    changetype: modify
    delete: proxyAddresses
    proxyAddresses: SMTP:OBJECT@domain.com
    -
    						
  • 若要 to back out of changes that are made by output file (except for records that perform wholesale deletions),search output file,replace"delete: proxyAddresses"with"add: proxyAddresses,"and then again import file.
  • 若要导出一个容器中的所有对象都所有代理地址,使用-R"(proxyAddresses=*)"Ldifde 搜索筛选器。

    您可以使用此文件为备份文件的时间存在于一个特定点上的代理地址。 如果您处理此文件通过 Proxyfix.bat,此文件可以被创建为一个导入文件,您可以用来还原地址如有必要。
  • 如果您没有作为第三个参数在 Proxyfix.bat 命令行上定义一个筛选器,输入文件中的所有代理地址都复制到输出文件。 您可以更改"删除: proxyAddresses"to"添加: proxyAddresses"若要合并地址与已 Active Directory 中存在的地址。 还可以使用"替换: proxyAddresses"从 Active Directory 中删除所有代理地址并将其替换只输出文件中列出的地址。
  • 如果您从所有对象中删除所有代理服务器地址,更改对象并收件人更新服务会触发要还原所有地址根据以当前的收件人策略。 但是,完成此过程后之前,可能会生成未送达报告 (NDR) 在传输过程中的邮件。 如果配置容器中的地址被删除,可能会停止 Exchange 服务或您可能不能如果它们在停止,则已启动它们。 Microsoft 建议您使用格外小心处理代理服务器地址,尤其是对于中配置容器的对象时。
若要 to import LDIF file,run following command:
ldifde-i-f delproxies.txt

属性

文章编号: 318774 - 最后修改: 2007年12月3日 - 修订: 5.6
这篇文章中的信息适用于:
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Server 标准版
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
关键字:?
kbmt kbinfo KB318774 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。如果您发现了错误并希望帮助我们提高机器翻译技术,请完成文章末尾的在线调查。
点击这里察看该文章的英文版: 318774
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com