Free Exchange 2010 SP2 Transport Agent

Printer-friendly versionPDF version
Exchange 2010

So as you may know Exchange 2010 SP2 came out with Address Book Policies to help seperate out your tenants if you are hosting multiple organizations. Even with this option there are still problems with Exchange sending information between tenants as if it were local.

Example of a problem is if Tenant-A emails Tenant-B and Tenant-B has a out of office reply on for internal and external. Tenant-A would receive back the out of office reply for the internal message that Tenant-B set instead of the external (since Exchange sees it as local).

As of right not I am not sure if it is possible to send the external message in a situation like this, but what is possible is deleting the internal OOF before the tenant gets it. This is what my transport agent does. It also routes all traffic between tenants to a specific send connector which you will have to configure for a smart-host.

This is currently in BETA and not written 100%. There are no performance counters and it is possible that the speed is not 100%. This is what I need you to test with me on if you can :-)

Attached is the transport agent. Please run the powershell script from the Exchange Shell.

To install run: ITSwapShop.ps1 Install

To uninstall run: ITSwapShop.ps1 Uninstall

File attachments: 

hey mate, Thanks for creating it. I'll get the test started right now in my lab. I'll give u the results at the end of the day.

Hi, have you had any thoughs on handling External OOFs?

Well this transport agent should still send External OOF to external recipients if they are not on the same Exchange organization.

As far as I know I do not think there is a way to correct this according to the guidance from Microsoft. I think you can just delete the internal OOF... but I could be wrong... honestly I hope I am wrong.

Hi, thanks for sharing this.

We are just in the middle of building a POC environment and will sure give it a try!

Thanks again,

I recently tested this script. 100% works for deleting internal OOF messages between the tenants. But it also deletes emails so that between the tenants they can't email each other.Anyone else has this problem or it's just me?


It shouldn't be deleting OOF messages because it will only delete the OOF messages if it detects that the mail template is OOF.

Did you install the agent on all of your hub transport servers? Also did you make sure that the send connector it created is configured for all your hub transport servers and set for a smart-host?

I got the e-mails to work with this. The problem was I forgot to change the smart host. But back to the topic, I tested this with OOF internal and external. What I noticed was that when Tenant A sends an email to Tenant B (which have OOF message for both internal and external). Tenant A doesn't receive any auto-replies at all. But after all, as above this is what it's suppose to do. Delete all OOF messages which are internal. But is there a work around this? If not I'll have to disable OOF for all the tenants so that they don't clash.

That is how it is supposed to work.

Take this for example:

TenantA has OOF set for internal and external
TenantB has OOF set for internal and external

If TenantA emails TenantB they should each be send an OOF. The problem is Exchange sees it as internal and sends the internal OOF. As far as I know there is no way to fix this yet.

So the transport agent deletes the OOF before it gets to the other tenant. So essentially they will not get a OOF at all.

Now if TenantA sends an email to another TenantA then they SHOULD get the internal OOF. If an external user sends an email to TenantA then TenantA's External OOF should be emailed back to the external user.

There has to be a way to fix this functionality by using Active Directory lookup on the recipient if they are considered internal. Maybe checking the customAttribute property that is used to identify the Tenants OU.

Wouldn't mind taking a peek at your source and maybe modifying it to be a little more full featured. I just found all of the documentation on msdn for creating transport agents. Alternatively I will just have to create my own... :)

I sure hope there is a way.


The problem is Exchange automatically sends the internal message. So to get the external OOF you would have to still delete the internal message that is being sent to the other tenant, then turn around and lookup somehow the users External OOF and then submit that to the other tenant.


I attached the source. It is pretty basic and I haven't really had time to modify it or make something else.

Ahh okay, At the moment I'm having trouble getting OOF messages from User A in TenantA to User B in TenantA. Do you have any ideas in why this might be happening?

I'm experiencing the same problem with tenant internal OOFs as Jonathan Ma. External OOFs work just fine, but all internal OOFs seem to be deleted wether or not the recipient is in the same tenant.

I have a single hub transpont server and route mail through an external smart host with the itswpashop send connector.

Any progress with this transport agent, or has it been abandoned?

It is supposed to delete the OOF if it is between tenants but not if within the same tenant.

I have not abandoned it because I still need it for my Exchange server. I've just been working on some other projects that needed to be completed first :-\

I know its been a while since I've updated it.. I apologize for that.

I'm having the same issue. All internal OOF's are dropped, even between users in the same tenant. Has the project been abandoned?

I also can't get the source code posted above to compile, was this an earlier version?

Thanks for writing this Transport Agent!

Any reason I shouldn't use my existing EX2010SP2 Edge Server as the smarthost?

I came across your TransportAgent while looking for a solution to route inter-tenant traffic. Great work!! I do have a few questions regarding the source in the .txt file as posted.

- Is the Logging.Report some custom library?
- Is the .txt the .cs you used to compile the dll?

After compiling the same code (and /* the Logging.Report */) i'm having difficulties Installing the dll onto an Exchange 2010 SP2 machine.

It doesnt like the -TransportAgentFactory "<namespace>.Routing"
Even if I compile the exact code and use -TransportAgentFactory ITSwapShop.Routing it returns an error that the TransportAgentFactory xxx.Routing does not excist.

Best Regards,

Hi, jdixon is the author of the transport agent, so I don't have much advice on it. I do believe the txt file is the .cs file used to compile the .dll. Although it has worked for us, he recommends using the transport agent from the WebSitePanel project, which can be downloaded here:

The transport agent posted in this article hasn't been tested enough and may have some problems. It may be updated in the future. If it is, we will post an update here.

Post new comment