如何从所有Exchange邮箱中删除辅助域的SMTP地址?

我有一个Exchange服务器,用于pipe理多个SMTP域; 现在只需要pipe理一个。

我已经从所有地址策略中删除了二级域名; 我需要删除引用它的所有SMTP地址。

所有用户都将其主SMTP地址设置为使用主域; 但几乎所有人都有使用二级域的另一个地址。 他们也有许多其他不同的地方:用于lync的SIP,以及从以前的迁移得到的一个或多个X500。 这些不应该被触及。

如何删除所有这些辅助SMTP地址而不影响其他内容?

find了!

$domain = 'olddomain.com' foreach ($mbx in (Get-Mailbox | where { $_.EmailAddresses -like ('*@' + $domain) })) { $addresses = $mbx.EmailAddresses $address = ($addresses | where {$_.PrefixString -eq 'SMTP' -and $_.AddressString -like ('*@' + $domain)}) Write-Host ('Removing address ' + $address.addressstring + ' from mailbox ' + $mbx.Name) $addresses.Remove($address) Set-Mailbox $mbx -EmailAddresses $addresses } 

请在实验室和/或一小组testing用户之前进行testing,然后再进行testing。

 $SMTPDomainToRemove = "@OldDomain.com" $AllUsers = Get-ADUser -Filter * -Properties proxyAddresses Foreach($usr In $AllUsers) { $NewAddressList = @() $OldAddressList = $usr.proxyAddresses Foreach($addr In $OldAddressList) { If(!($addr -Match $SMTPDomainToRemove)) { $NewAddressList += $addr } } If($NewAddressList.Count -GT 0) { Set-ADUser $usr -Replace @{ 'proxyAddresses' = $NewAddressList} } } 

我们的想法是,我们采用每个用户的proxyAddresses地址列表,删除那些在其中具有旧域名的地址列表,然后将地址列表replace为不包含对旧域的引用的新的,更新的地址列表名称。

http://blogs.technet.com/b/exchange/archive/2005/01/10/350132.aspx

电子邮件地址属性

Exchange以下列属性存储和使用有关收件人电子邮件地址的信息:proxyAddresses

这是保留电子邮件地址信息的主要属性。 当您在Outlook中打开收件人的属性并查看“电子邮件地址”选项卡时,您正在查看此属性。 这是包含表示收件人的所有地址的多值string。 每个值必须具有以下格式:type:address

例如:SMTP:[email protected]

当types是大写字母时,地址被认为是该types的主要地址,并被用作该收件人的默认回复地址。 当types为小写字母时,该地址被认为是次要地址,并用于在电子邮件递送期间parsing地址,允许相同的收件人接收针对不同电子邮件地址的电子邮件。