Exchange 2010 郵件聯繫人通過收件人策略獲得分配的內部 SMTP 地址
此環境已從 Exchange 2007 升級到新的 Exchange 2010 伺服器。Federation_Contacts OU 下有數千個電子郵件聯繫人。在每個郵件聯繫人的電子郵件地址選項卡下,其正確的 SMTP 地址(例如 john@othercompany.com)被指定為主要地址。但不知何故,每個人也被分配了我們公司的內部電子郵件地址(john@ourcompany.com 和 john@ourcompany.local)
現在的問題是發給這些聯繫人的電子郵件會以#550 5.1.1 RESOLVER.ADR.ExRecipNotFound 退回;未找到
我們必須刪除錯誤創建的內部 SMTP 地址,並取消選中基於收件人策略設置的自動更新地址。
我的問題是:1-我們如何批量刪除這些郵件聯繫人的內部電子郵件地址,注意不要影響我們的內部使用者?
2-我們如何阻止 Exchange(更準確地說,我猜是收件人策略)為新郵件聯繫人創建這些內部地址?
我使用 Powershell 禁用從收件人策略更新電子郵件地址:
Get-MailContact -OrganizationalUnit "domain.local/OU" | set-mailcontact -emailaddresspolicyenabled $false
然後我使用 ADModify.net 剝離了分配給聯繫人的輔助 SMTP 地址。它就像一個魅力。
有同樣的問題(有點晚)所以我拿了你的“腳本”並更新了它。您需要禁用電子郵件地址策略以應用於 Exchange 中的聯繫人,這將部分解決問題。
- 展開 Microsoft Exchange On-Premises 2) 展開組織配置 3) 選擇集線器傳輸並轉到電子郵件地址策略選項卡 4) 編輯每個
Users with external e-mail addresses
不帶複選框和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 }
最後一步是將其設置為任務計劃程序,因為新聯繫人將繼續獲取不可編輯(至少以受支持的方式)的預設策略。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"