That seems a little counterproductive, doesn’t it?
Isn’t the whole point of a Mail Contact to put an external address in your Global Address List?
Well, yes and no.
There are certain situations where you may not want an external contact to be generally available to your user base.
Take this scenario for example.
You are the sole IT person at your company. You contract an external company to perform network monitoring 24×7. Your devices email out alerts to a distribution list. This distribution list contains two people. Yourself and the mail contact for the monitoring company. You both get the alerts. They are your safety net when you aren’t looking.
Their email address is helpdesk@contractor.com. You also have an internal support email of helpdesk@yourcompany.com. To remove any chance that your users may pick the wrong helpdesk you decide you must hide the email of the contractor.
So, how do you hide a Mail Contact from your Global Address List?
It depends on the version of Exchange you are running.
In this article, we will explore how to do this for both Exchange 2010 and 2013. Let’s tackle the 2010 side first.
Exchange 2010
If you are still on Exchange 2010 then it is simple. It’s in the GUI.
- Open Exchange Management Console.
- Expand Microsoft Exchange On-Premises (server name).
- Expand Recipient Configuration.
- Select Mail Contact.
- In the right pane double-click on the contact you wish to hide.
- Towards the bottom of the General tab select Hide from Exchange Address Lists checkbox.
- Click Ok.
You are all set!
Do you get the feeling the Exchange 2013 process is not as straightforward?
You would be correct.
Exchange 2013
Microsoft has removed this option from the GUI for Mail Contacts.
Strangely, this checkbox is still available for all other mail objects. So, if you want to hide a User, Shared, or, Resource Mailbox that is still in the EAC. Groups too.
Why did Microsoft just single out Mail Contacts?
Not sure.
It is still possible to hide contacts. We do it through the Exchange Management Shell (EMS).
Once you have the Exchange Management Shell open type the following:
C:\> Set-MailContact <contact alias> -HiddenFromAddressListsEnabled $true
Once you press enter you will be returned to a cursor prompt.

To confirm this actually worked you can run the following command from EMS.
C:\> Get-MailContact <contact alias> | fl *hidden*
This should come back with a value of true.

If you need to revert your change just flip the Boolean back to $false
C:\> Set-MailContact <contact alias> -HiddenFromAddressListsEnabled $false
If you want to find all mail contacts that are currently visible and make them hidden you could do this.
C:\> Get-MailContact | Where-Object {$_.HiddenFromAddressListsEnabled -eq $false} | Set-MailContact -HiddenFromAddressListsEnabled $true
You are all set!
In both versions of Exchange, the best way to double-check your work is with Outlook Web App. Compose a new email and click the To link. Then view the All Contacts address list. Your contact should not appear in this list.
If testing with Outlook in cached mode, you will need to manually update the Offline Address Book. Otherwise, your changes won’t be immediately apparent. By default, the Offline Address Book only regenerates every 24 hours.
Did this post help you? Let us know how we are doing by leaving us a comment. Your feedback is always important to us!
Thanks for the this post, was helpful today.
mss268ngkyt UAE5Xgz F8cV c1tLJvl
i want to block a group of users from accessing all address lists in exchange 2010. They should not be able to see the address lists in outlook and owa
Hi Giraffe,
Take a look at address book policies. https://docs.microsoft.com/en-us/exchange/create-an-address-book-policy-exchange-2013-help
I enjoy reading an article that will make people think.
Also, thank you for permitting me to comment!
Thx for this simply well done post!
Awesome post.
Thanks for sharing your thoughts about gui di uc re. Regards
Is there a way to hide only specific e-mails, i.e. from a CSV file?
Excuse syntax errors here, with a little tweaking you should be able to get the below to work.
$emailtohide = Import-Csv -path “C:\emails.csv”
Foreach ($email in $emailtohide) {
Get-Mailcontact -identity $email.email | Set-Mailcontact –
HiddenFromAddressListsEnabled $true
}
Very Helpful. Thank you
Glad to help!
its posible to hide All contacts in one step?
Hey Edwin,
Yes you could just do.. Get-MailContact | Set-MailContact -HiddenFromAddressListsEnabled $true
Is there a way to hide a Mail Contact from the GAL but keep it visible in another address list?
Hey MGadler,
Are you looking to hide all mail contacts from the GAL, or, just a few key contacts?
If all of them, you could modify the GAL filtering so they do not include Mail Contacts in the first place.
If just a few contacts you could give those contacts a custom attribute and then specify in the GAL, with the Set-GlobalAddressList cmdlet to filter objects with that attribute value. Should work.
Now its back in GUI on General tab
It’s in GUI only for exchange users, for outside contacts, powershell is still needed.