Exchange 2010邮件联系人通过收件人策略获取分配的内部SMTP地址

此环境已从Exchange 2007升级到新的Exchange 2010服务器。 有几千个电子邮件联系人位于Federation_Contacts OU下。 在每个邮件联系人的电子邮件地址选项卡下,其正确的SMTP地址(例如[email protected])被分配为主要邮件地址。 但不知何故,每个人都得到了我们公司的内部电子邮件地址([email protected][email protected]

现在的问题是这些联系人的电子邮件反弹#550 5.1.1 RESOLVER.ADR.ExRecipNotFound; 未find

我们必须去删除错误创build的内部SMTP地址,并根据收件人策略设置取消选中自动更新地址。

我的问题是:1,我们如何批量删除这些邮件联系人的内部电子邮件地址,注意不要影响我们的内部用户?

2,我们如何停止交换(更确切地说,我猜,收件人的政策)创build新的邮件联系人的内部地址?

我使用Powershell来禁止从收件人策略更新电子邮件地址:

Get-MailContact -OrganizationalUnit "domain.local/OU" | set-mailcontact -emailaddresspolicyenabled $false 

然后,我使用ADModify.net去除分配给联系人的辅助SMTP地址。 它像一个魅力工作。

有同样的问题(有点晚),所以我把你的“脚本”,并更新它。 您需要禁用电子邮件地址策略才能应用于Exchange中的联系人,这将部分解决问题。

1)展开Microsoft Exchange本地2)展开组织configuration3)select集线器传输并转到电子邮件地址策略选项卡4)编辑每个离开Users with external e-mail addresses没有checkbox和Contacts with external e-mail addresses

在这里输入图像说明

它将部分解决问题,因为默认策略不能被禁用,所以我最终将domain.local电子邮件地址默认添加到新的联系人。

所以我写了一个基于提供的问题的脚本(有问题的问题有一些错误,来自同一个域的多个地址被分配,这是很大的噪音),将删除任何非外部的电子邮件地址,它会还要确保旧的联系人不会重新应用策略。

 #### # Input variables #### $domains = @("*@domain.com","*@domain.pl","*@evotec.pl", "*@domain.local") $ou = "evotec.local" #### # Removing internal domains from contacts #### $domains | foreach { $domain = $_; write-host "Preparing for removal of addresses with domain name:" $domain $Contacts = Get-MailContact -OrganizationalUnit $ou -Filter { EmailAddresses -like $domain -and name -notlike "ExchangeUM*" } -ResultSize unlimited -IgnoreDefaultScope $Contacts | foreach { $contact = $_; $email = $contact.emailaddresses; #write-host "1. " $contact #write-host "2. " $contact.name #write-host "3. " $email #write-host "4. " $contact.identity $email | foreach { if ($_.smtpaddress -like $domain) { $address = $_.smtpaddress; write-host "[*] Removing address" $address "from Contact" $contact.name; Set-Mailcontact -Identity $contact.identity -EmailAddresses @{Remove=$address}; } } } } #### # Setting up email address policy to disabled for all contacts #### write-host "Preparing all contacts for disabling email address policy" $Contacts = Get-MailContact -OrganizationalUnit $ou -Filter { EmailAddresses -like $domain -and name -notlike "ExchangeUM*" } -ResultSize unlimited -IgnoreDefaultScope | Where {$_.EmailAddressPolicyEnabled -eq $true} $Contacts | foreach { $contact = $_; write-host "[*] Setting up email address policy to disabled for" $contact.name $contact | set-mailcontact -emailaddresspolicyenabled $false } 

最后一步是将其设置为“任务计划程序”,因为新联系人将继续获取不可修改(至less以受支持的方式)默认策略。 在Exchange服务器的这种设置将运行得很好。 确保以正确的权限运行它。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; C:\ExchangeScript\RemoveLGBSEmailsFromContacts.ps1"

首先尝试确定可能是这个地址的那个政策。 你可以微调它应用到邮箱或联系人…

…或为联系人创build一个新的。

如果你需要做批量更改,清理这个糟糕的PowerShell对你来说是有用的。

Get-MailContact | Set-MailContact -EmailAddressPolicyEnabled:$ false

这应该做的所有邮件联系人的伎俩!