How to Standardise Exchange 2010 Message Size Limits
Written on April 28, 2011

There has long been “somewhere” in my exchange organisation that has a 10MB message size limit, rather than our supposed standard 15MB. Finally this annoyed me enough to do something about it. Because I’m all for saving time, I figured I’d script it. I trawled through Exchange and found all the places where it is possible to limit the size of messages (if I’ve missed any, please let me know!). From here I wrote a script to find the size limit on every instance of each of these possible places. As far as I can see, there are three places of concern in an Exchange 2010 organization: Send Connectors, Receive Connectors and the Global Transport Configuration.

Evaluating the Current Limits

It is possible to use three simple cmdlets to retrieve any and all data that is required to achieve my goal…But that wouldn’t be much fun, would it? No sense running these three and trawling through the results each time. See Making it Pretty below for the final result.

Send Connectors are present at the organization level (that is, they are not specific to a particular server, and can be assigned to one or more). To retrieve send connectors, simply use the Get-SendConnector cmdlet. We are looking at the MaxMessageSize property:

Receive Connectors are server-specific. Fortunately, however, this is irrelevant in our case: Get-SendConnector and the MaxMessageSize property are this time of interest:

Finally let’s investigate the Global Transport Config. This applies to All transports in the Organization. You can retrieve its settings by running the cmdlet Get-TransportConfig. We’re interested in the properties MaxReceiveSize and MaxSendSize:

Making it Pretty

It’s pretty easy to trawl through the above results and investigate them…but where’s the fun in that? Or perhaps you want to do this as part of your regular Exchange Organisation health check report (you do have one, don’t you?)? I’m going to start by finding the smallest message size limit, since this is the one that we’re concerned about here. Small size limits act as a bottle-neck in the truest sense of the word.

I’ve put all my relative limits into an object array that looks like this:

Type                 Server           Name                                           Limit
----                 ------           ----                                           -----
SendConnector        Organization     EdgeSync - Default-First-Site-Name to Internet 10 MB (10,485,760 bytes)
SendConnector        Organization     EdgeSync - Inbound to Default-First-Site-Name  unlimited
ReceiveConnector     EX01             Default EX01                                   15 MB (15,728,640 bytes)
ReceiveConnector     EX01             Client EX01                                    15 MB (15,728,640 bytes)
ReceiveConnector     EX02             Default EX02                                   15 MB (15,728,640 bytes)
ReceiveConnector     EX02             Client EX02                                    15 MB (15,728,640 bytes)
ReceiveConnector     EX01             Anonymous Authentication Networks              15 MB (15,728,640 bytes)
ReceiveConnector     EX02             Anonymous Authentication Networks              15 MB (15,728,640 bytes)
TransportConfig      Organization     Maximum Receive Size                           15 MB (15,728,640 bytes)
TransportConfig      Organization     Maximum Send Size                              15 MB (15,728,640 bytes)

Let’s grab the smallest limit from here (Note: Usually you would use Measure-Object here, but “unlimited” is, unfortunately, not a numerical value):

$smallest = $limits | Sort-Object Limit | Select-Object first 1
$smallest

Now we know which is the very smallest size of message that can fully traverse the organization as well as one of the places it exists. To find all the places this smallest limit exists, we run this line:

$limits | Where {$_.Limit -eq ($smallest).Limit }

Download the finished script here.

And of course, the output:

    The maximum size of any email that can fully traverse your Exchange Organization is 10 MB (10,485,760 bytes)
    This is because of the following object(s):

    Type             Server       Name                                           Limit
    ----             ------       ----                                           -----
    SendConnector    Organization EdgeSync - Default-First-Site-Name to Internet 10 MB (10,485,760 bytes)

    You should raise the maximum size of message allowed across the object(s) above if you are having mail
    delivery issues of large items. Note that this script will not check non-exchange transports such as
    AntiVirus and Smart-hosts.
    Raise the size of message allowed across Send Connectors with Set-SendConnector -MaxMessageSize
    Raise the size of message allowed across Receive Connectors with Set-ReceiveConnector -MaxMessageSize
    Raise the size of message allowed across the global transport config with Set-TransportConfig -MaxReceiveSize
    and Set-TransportConfig -MaxSendSize

Comments/questions

There's no commenting functionality here. If you'd like to comment, please either mention me (@[email protected]) on Mastodon or email me. I don't have any logging or analytics running on this website, so if you found something useful or interesting it would mean a lot to hear from you.