複数のSMTPドメインを管理するために使用していたExchangeサーバーがあります。今では1つを管理するだけです。
すべてのアドレスポリシーからセカンダリドメインを既に削除しました。それを参照しているすべてのSMTPアドレスを削除する必要があります。
すべてのユーザーは、プライマリドメインを使用するように設定されたプライマリSMTPアドレスを持っています。しかし、それらのほとんどすべては、セカンダリドメインを使用して別のアドレスを持っています。 SIP 1つはlyncで使用され、1つ以上のX500は以前の移行から派生したものです。これらには触れないでください。
他に影響を与えずにこれらのセカンダリSMTPアドレスをすべて削除するにはどうすればよいですか?
これは私の元の回答よりも優れたバージョンです(メールボックスごとに削除する複数のアドレスを処理し、さらに多くの出力を提供します)。
$domain = 'somedomain.com'
$mbxs = Get-Mailbox -ResultSize Unlimited
foreach($m in $mbxs)
{
Write-Host 'Mailbox:' $m.SAMAccountName
$addrs = $m.EmailAddresses
for($i = 0;$i -lt $addrs.Count;$i++)
{
$addr = $addrs[$i]
if($addr.PrefixString -eq 'smtp'-and $addr.SmtpAddress -like '*@' + $domain)
{
Write-Host 'Removing address:' $addr.SmtpAddress
$m.EmailAddresses.RemoveAt($i)
$i--
}
}
if($addrs.Changed)
{
Write-Host 'Saving mailbox:' $m.SAMAccountName
Set-Mailbox $m -EmailAddresses $addrs
}
else
{
Write-Host 'No address to remove'
}
}
これを実際に運用する前に、ラボや少数のテストユーザーでテストしてください。
$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アドレスリストを取得し、古いドメイン名が含まれているアドレスリストを削除してから、アドレスリストを古いドメインへの参照を含まない新しい更新されたリストに置き換えるというものです。名前。
http://blogs.technet.com/b/exchange/archive/2005/01/10/350132.aspx
電子メールアドレス属性
Exchangeは、受信者の電子メールアドレスに関する情報を次の属性に格納して使用します。proxyAddresses
これは、電子メールアドレス情報が保持される主要な属性です。 Outlookで受信者のプロパティを開き、[電子メールアドレス]タブを見ると、この属性が表示されています。これは、受信者を表すすべてのアドレスを含む複数値の文字列です。各値の形式は次のとおりです。type:address
例:SMTP:[email protected]
タイプが大文字の場合、アドレスはそのタイプのプライマリアドレスと見なされ、その受信者のデフォルトの返信アドレスとして使用されます。タイプが小文字の場合、アドレスはセカンダリアドレスと見なされ、電子メールの配信中にアドレスを解決するために使用されるため、同じ受信者が異なる電子メールアドレス宛の電子メールを受信できます。