How can I safely remove unused secondary domain from 500+ mailboxes ?

Hi, I have removed my secondary domain in my exchange server organizational configurations http://technet.microsoft.com/en-us/library/bb124423(v=exchg.80).aspx 

But somehow it is still appearing in all of the mailboxes in my domain ?

Any idea please to safely remove it from the production mailbox?
LVL 9
Senior IT System EngineerIT ProfessionalAsked:
Who is Participating?
 
Jamie McKillopConnect With a Mentor IT ManagerCommented:
Hello,

This powershell script will do what you want. Just set the $domain variable to the domain you want to remove.

$domain = ""
Get-Mailbox -ResultSize unlimited | % {
	foreach ($address in $_.emailaddresses) {
		If (($address.type -eq "SMTP") -and (($address.Address.Split("@")[1] -eq $domain))) {
			$_.emailaddresses -= [Microsoft.Exchange.Data.ProxyAddress]("smtp:$($address.address)")
		}
	}
	Set-Mailbox $_.primarysmtpaddress -EmailAddresses $_.EmailAddresses
}

Open in new window


JJ
0
 
Chris HInfrastructure ManagerCommented:
I'm assuming < exchange 2003?  

Remove the domain from any recipient update policies and user accounts.  Or remove from recipient update policies and 'apply this policy now'
0
 
Senior IT System EngineerIT ProfessionalAuthor Commented:
I'm on exchange server 2007 SP1
0
Protect Your Employees from Wi-Fi Threats

As Wi-Fi growth and popularity continues to climb, not everyone understands the risks that come with connecting to public Wi-Fi or even offering Wi-Fi to employees, visitors and guests. Download the resource kit to make sure your safe wherever business takes you!

 
SubsunConnect With a Mentor Commented:
Try this..
Import-Csv Email.csv | % {
$user = Get-Mailbox $_.SMTP
$user.emailAddresses -= $_.Oldsmtp
Set-Mailbox $user -emailAddresses $user.emailAddresses
}

Open in new window

Sample CSV format
SMTP,Oldsmtp
bob.smith@xyz.com,bsmith@sym.com
john.smith@xyz.com,jsmith@sym.com
joe.brown@xyz.com,jbrown@sym.com

Open in new window

Code will remove bsmith@sym.com from mailbox bob.smith@xyz.com
0
 
Simon Butler (Sembee)Connect With a Mentor ConsultantCommented:
Another option would be to use admodify - that should remove the entries for youa s well.

Exchange 2007 SP1 is very old BTW, no longer supported in fact. You should look at upgrading to Exchange 2007 SP3 plus the latest rollup as soon as possible.

Simon.
0
 
Senior IT System EngineerIT ProfessionalAuthor Commented:
Thanks for the reply Sembee,

admodify  --> what is that and can I do that automatically for all mailbox in the office ?

Yes I know, as long as it is still running and no issue, I keep it that way, I am afraid to break something if I'm upgrading it into SP3 RU 8
0
 
Simon Butler (Sembee)ConsultantCommented:
Is Google broken today?
admodify - in your favourite search engine and it will come up as the first hit. It allows bulk changes to the Active Directory.

You are going to have more problems staying on such an old version. The world moves on, staying so out of date because you are scared you are going to break something is not really a good attitude to have. If the server is exposed to the internet in any way then you are putting your data at risk by not keeping it up to date. Hopefully you don't have the same attitude to patching of other systems. That may seem harsh, but I clean up so many sites where system maintenance has not been carried out and they wonder why they have problems. Standing still in the current IT security environment is not an option unless you are completely 100% isolated from the outside world.

Simon.
0
 
Senior IT System EngineerIT ProfessionalAuthor Commented:
wow that's cool jjmck, so where can I put the -WhatIf to check the script before I run it in production ?
0
 
Jamie McKillopConnect With a Mentor IT ManagerCommented:
Put the -whatif at the end of the set-mailbox command.

JJ
0
 
Senior IT System EngineerIT ProfessionalAuthor Commented:
Thanks to all
0
 
Senior IT System EngineerIT ProfessionalAuthor Commented:
is there any way to modify the script to display which mailbox got the secondary address ?

jjmck, many thanks in advance for the powershell assistance
0
 
Jamie McKillopIT ManagerCommented:
This will output the display name of the mailbox anytime it finds a mailbox with an SMTP address that contains the domain you specify:

$domain = ""
Get-Mailbox -ResultSize unlimited | % {
	foreach ($address in $_.emailaddresses) {
		If (($address.type -eq "SMTP") -and (($address.Address.Split("@")[1] -eq $domain))) {
			$_.emailaddresses -= [Microsoft.Exchange.Data.ProxyAddress]("smtp:$($address.address)")
			$_.displayname
		}
	}
	Set-Mailbox $_.primarysmtpaddress -EmailAddresses $ProxyAddresses
}

Open in new window


JJ
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.