Link to home
Start Free TrialLog in
Avatar of dan_computerx
dan_computerx

asked on

Shared address space in Exchange 2007

Hi all,

I can't figure out how to have the correct address as the return
address in a shared address space setup with exchange 2007.

Long story follows...

I am transitioning from a unix mail server to Exchange.  I would like
to do so slowly, one user at a time.

I am routing all mail into the unix server which then forwards
messages for specific users on to the Exchange server via SMTP.  This
works well.

(I know that the recommended method of doing a shared address space is
to have the Exchange server receive messages first  but the unix box
has much more flexible routing options and has a decent virus
scanner.  I am pretty comfortable with it and I am less likely to
create a routing loop or do something equally stupid on the unix box
than I am on a Exchange server.  If we need to we can put the Exchange
box first.)

I have read Q321721 but it is written for Exchange 2000/2003.

I am not familiar with Exchange 2007, this is my first 2007 install
and I have been out of the Exchange world for several years.

My Windows domain is a subdomain of the companies registered domain.
So the Exchange server is exchange.ad.company.com

I have created accepted domains in the "Hub Transport" area of
"Organization Configuration" thus

   Name               DomainName         DomainType            Default
   ----               ----------         ----------            -------
   ad.company.com     ad.company.com     Authoritative         True
   *.company.com      *.company.com      ExternalRelay         False

I have created a send connector thus that smart hosts everything to
the unix box:

   Identity     AddressSpaces    Enabled
   --------     -------------    -------
   smarthost    {smtp:*;1}       True

Mailflow seems to work so far (I haven't tested a whole lot) but the
return address of messages sent from OWA are in the form
user@ad.company.com rather than user@company.com.

I can not make the change to the "Default Policy" of "Email Address
Policies" when company.com is set to "External Relay Domain" and I can
not set company.com to from "Authoritative" to "External Relay Domain"
when company.com is referenced in the default recipient policy.

I'm starting to think that I am going to be stuck using Method 2 from Q321721
but I am hoping to avoid that.  I don't want to deal with all those extra
contacts.  I am also aware that mailbox/contact handling has changed
considerably with 2007 and I am not sure that the listed technique will
work at all.

Just to make things more interesting...  While doing one last test
before posting this it started working!  Mail sent from OWA was going
as u...@company.com.  I rebooted the Exchange server and now it is
back to u...@ad.company.com.  Which brings me to question two.  Is
there a way to dump the Exchange server's configuration to a human
readable form?  Plain text would be best but XML would be fine too.

TIA,

Dan
Avatar of dan_computerx
dan_computerx

ASKER

Thanks to Alan Sun from the Microsoft Managed Newsgroups I have a solution.  For the benefit of those searching I will outline it here.  It has been a while so I might miss a few things.  Proceed with caution.

My apologies if Experts-Exchange munges the text.

A summary:

1. Add the SMTP domain to the recipient policy.
2. Manualy set the NonAuthoritativeDomains via ADSI.
3. Create a SMTP send connector for the shared domain.
4. Create mail enabled contacts for each user still on the old system

Here is my edited version of Alan's instructions.

1. Add the shared SMTP domain to the Accepted Domain as Authoritative Domain.

2. Modify default email address policy to set the new added domain as Primay.   On the Default Policy, ensure that the EnabledPrimarySMTPAddressTemplate is set to the domain we want to share.  You should be able to do that by running the following command.  I did it from the GUI.

get-emailaddresspolicy "Default Policy" -EnabledPrimarySMTPAddressTemplate "@domain.com".

3. To ensure the change has taken place, look at the EmailAddresses on an internal account and  verify that we see SMTP:alias@domain.com under the attribute emailaddresses by command:

get-mailbox <identity> | fl

You should have something like this (I have no idea what bits are actually important):

[PS] C:\>get-mailbox ExchangeUser | fl


Database                           : EXCHANGE\First Storage Group\Mailbox Database
<snip>
Alias                              : exchangeuser
DisplayName                        : Exchange User
EmailAddresses                     : {SMTP:exchangeuser@DOMAIN.COM, smtp:exchangeuser@INTERNAL.DOMAIN.COM, smtp:test@DOMAIN.COM}
<snip>
EmailAddressPolicyEnabled          : True
PrimarySmtpAddress                 : exchangeuser@DOMAIN.COM
<snip>
WindowsEmailAddress                : exchangeuser@DOMAIN.COM
<snip>

4. Now we are going to set the NonAuthoritativeDomains attribute:

a. Open ADSIEdit.msc in the Exchange 12 forest.
b. Browse to CN=Configuration, CN=Services, CN=Microsoft Exchange, CN=(Your Org), CN=Recipient Policies
c. Right click on CN=Default Policy and go to Properties
d. Locate and click the msExchNonAuthoritativeDomains attribute. Then click Edit
e. Type @domain.com and click Add, OK, OK.
f. Verify that the change has taken place by the command:
get-emailaddresspolicy | fl . The NonAuthoritativeDomains attribute now shows {@DOMAIN.COM}

Here is mine:

[PS] C:\>get-emailaddresspolicy | fl


RecipientFilter                   : Alias -ne $null
LdapRecipientFilter               : (mailNickname=*)
LastUpdatedRecipientFilter        : Alias -ne $null
RecipientFilterApplied            : True
IncludedRecipients                : AllRecipients
<snip>
RecipientFilterType               : Precanned
Priority                          : Lowest
EnabledPrimarySMTPAddressTemplate : @DOMAIN.COM
EnabledEmailAddressTemplates      : {SMTP:@DOMAIN.COM}
DisabledEmailAddressTemplates     : {}
Enabled                           : True
HasEmailAddressSetting            : True
HasMailboxManagerSetting          : False
NonAuthoritativeDomains           : {smtp:@DOMAIN.COM}
AdminDescription                  :
MinAdminVersion                   : -2147453113
AdminDisplayName                  :
ExchangeVersion                   : 0.1 (8.0.535.0)
Name                              : Default Policy
DistinguishedName                 : CN=Default Policy,CN=Recipient Policies,CN=DOMAIN,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=INTERNAL,DC=DOMAIN,DC=COM
Identity                          : Default Policy
Guid                              : a5e28296-122d-43e9-bdac-c56bf9ea6163
ObjectCategory                    : INTERNAL.DOMAIN.COM/Configuration/Schema/ms-Exch-Recipient-Policy
ObjectClass                       : {top, msExchGenericPolicy, msExchRecipientPolicy}
WhenChanged                       : 6/11/2007 12:38:31 PM
WhenCreated                       : 5/23/2007 12:53:47 PM
OriginatingServer                 : DC1.INTERNAL.DOMAIN.COM
IsValid                           : True

5. Restart the Microsoft Exchange Transport Service.  I rebooted.

Note: Ensure that there is a send connector for the Remote Domain.  Since I am paranoid I created one for DOMAIN.COM and another wildcard.

[PS] C:\>Get-SendConnector

Identity AddressSpaces                  Enabled
-------- -------------                  -------
Joshua   {smtp:DOMAIN.COM;1, smtp:*;1}  True

I found on my own that I needed to create a contact for each user on the old system.  It was a pain and I avoided it for as long as I could but eventually I gave in and did it.  Essentailly I did method two from MSK 321721.

I did it using Import-CSV commandlet.  I created a csv file in the format

Alias,ExternalEmailAddress,Name,DisplayName,FirstName,LastName
FLAST,flast@DOMAIN.COM,FIRST LAST,FIRST LAST,FIRST,LAST

then ran the command:

Import-CSV MailContact.csv | foreach {New-MailContact -alias $_.alias -ExternalEmailAddress $_.ExternalEmailAddress -Name $_.Name -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -org INTERNAL.DOMAIN.COM\Users}

In retrospect I should have added more than the basic information.
ASKER CERTIFIED SOLUTION
Avatar of Netminder
Netminder

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
There is an even easier way to do this, WITHOUT having to create the email addresses.  Created your domain in accepted domains as an internal relay.  Then create your email address policy with your shared domain as the primary (that's what you want right??).  Now, go to the send connectors, create a new one with the domain as the address space.  Specifiy how you want to route it (MX or straight to an IP) and you are good to go!