Эта среда была обновлена с Exchange 2007 до нового сервера Exchange 2010. В подразделении Federation_Contacts находится несколько тысяч адресов электронной почты. На вкладке «Адреса электронной почты» для каждого почтового контакта их правильный 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, и это частично решит проблему.
1) Разверните Microsoft Exchange On-Premises 2) Разверните конфигурацию организации 3) Выберите Hub Transport и перейдите на вкладку Политики адресов электронной почты 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"
Get-MailContact | Set-MailContact -EmailAddressPolicyEnabled: $ false
Это должно помочь ВСЕМ почтовым контактам!
Прежде всего, попытайтесь определить политику, которая могла подбирать эти адреса. Вы можете настроить его так, чтобы он применялся только к почтовым ящикам или контактам ...
... или создайте новый только для контактов.
Чтобы навести порядок, PowerShell поможет вам, если вам нужно внести массовые изменения.