August 11, 2007
Exchange 2007
Message Limit Changes from Exchange 2003
Timothy L. Hollingworth, MCSE, HP‐ASE, VCP
HollingworthTim@yahoo.com
Why Care?
By default, Exchange 2000 and Exchange 2003 do not set limits on message size. In certain
circumstances, an upgrade of an existing Exchange 2000 or Exchange 2003 organization to Exchange
2007 may unexpectedly leave you with a 10MB maximum message size throughout the entire
organization. Now pay attention here because we are not only talking about messages that cross
internet connectors. These limits may be global, affecting every message passed to and from all internal
users, from the CEO down to the receptionist at the front desk.
Suddenly having an entire organization switch from no message limits to a 10MB limit may not go over
too well. It is probably best to discuss message size limits with your customer ahead of time and be
ready to change them back or set them appropriately in short order.
As with all things Microsoft, they try to be the end‐all in the enterprise space, making it way more
complicated than it needs to be for most deployments. In reality, the message limit types and scopes
discussed below are a great way to provide granular control over how and when messages of different
sizes are routed within large organizations. Organizations of all sizes however, need to be aware of the
issues surrounding message limits and consultants need to be sure that they protect and advise their
customers appropriately.
Exchange 2007 Limit Basics
Types: there are four types of limits that can be set
• Message Header Size Limits
• Message Size Limits: Limits on the size of the whole message including header, body and all
attachments.
• Attachment Size Limits: limits to the size of individual attachments within one message.
• Recipient Limits: number of recipients allowable for a single message.
Scope: where and to whom the limits will take effect
• Global Limits: These limits are stored in AD, control allowable message delivery content length
and allowable message submission content length, and apply to every exchange server in the
org.
• Organizational Limits: These limits are applied to all hub transport and edge transport servers in
the organization and work similarly to global limits.
• Connector Limits: Applied to messages that traverse a specific send connector, receive
connector or foreign connector.
• Server Limits: These limits are stored on and applied to individual hub transport or edge
transport servers.
• User Limits: Apply to individual users or distribution groups.
Issues and Fixes
Global Limits
As noted above, global limits apply to the entire organization and are stored in AD. Exchange 2000 and
Exchange 2003 set these limits to “Unlimited” and you can view and change this setting in ESM under
the properties Message Delivery under Global Settings. Changing message limits here effect the entire
organization and changes to these fields are a direct edit of AD.
If under previous versions of Exchange, your organization had left the default global message limits at
“Unlimited” and you upgrade your organization to Exchange 2007, setup will modify AD to set the send
message and receive message limits to 10240 KB. Setup will also set the maximum number of recipients
per message to 5000. As the name implies, these limit settings are global and have the potential to put
unexpected message limits on the entire organization as soon as Exchange 2007 is installed and AD
replication does what it is designed to do.
If your organization had changed the settings for global message limits to anything other than the
default settings, Exchange 2007 setup will preserve those settings.
Since the global limits are stored in AD, changing the settings to the appropriate value is quite easy. If
you have not done so already, install the support tools from the support folder on the Windows 2003
installation media (Iinstall the Windows Support Tools and Resource Kit tools on –EVERY‐ server I build)
and run ADSIEdit.msc. Expand Configuration CN=Configuration, CN=Services, CN=Microsoft
Exchange, CN=, CN=Global Settings. Right click CN=Message Delivery and choose
Properties. On the attribute editor tab, set the following attributes as appropriate:
• delivContLength: This is the limit for inbound messages. Valid input for this parameter is 0 to
2097151 KB. The default value is 10240 KB for an org where Exchange 2007 is installed.
Replacing the string with “unlimited” (without the quotes) will change the value back to the
Exchange 2000 or Exchange 2003 defaults.
• submissionContLength: This is the limit for outbound messages. Valid input for this parameter is
0 to 2097151 KB. The default value is 10240 KB for an org where Exchange 2007 is installed.
Replacing the string with “unlimited” (without the quotes) will change the value back to the
Exchange 2000 or Exchange 2003 defaults.
• msExchRecipLimit: This is the maximum number of recipients per message. Valid input for this
parameter is 0 to 2147483647 recipients. The default value is 5000 recipients for an org where
Exchange 2007 is installed.
If you still have a copy of Exchange 2003 System Manager hanging around, you could simply change the
properties of Message Delivery as appropriate without having to resort to ADSIEdit.
Organizational Limits
Organizational limits apply to all hub and edge transport server in the organization. There does not seem
to be much difference between global limits and organizational limits and Microsoft recommends that
they be set to the same value.
As a practical matter, under Exchange 2007, organizational limit values for MaxReceiveSize,
MaxSendSize and MaxRecipientEnvelopeLimit are set to “Unlimited” by default and as such, will not
have an impact on the organization when you introduce Exchange 2007. You really don’t have to mess
with organizational limits unless you want to. The command to view the organizational limits and the
resultant output is shown in the screen shot below
The output of the command confirms that organizational limits are set to unlimited for message send
size, message receive size and max number of recipients. As per Microsoft recommendations, you can
set the organizational limits to the same value as the global limits with the command shown below.
Connector Limits
One of the first tasks when migrating or transitioning an organization to Exchange 2007 is to create a
send connector to route email to an edge server, smart host or directly to the internet. Large
organizations will likely have many send connectors to route email to the internet.
The default value for the maximum size of messages that traverse newly created send (and receive)
connectors in Exchange 2007 is 10MB. If you delete an existing mail connector with any message limits
(including unlimited) from a legacy Exchange Server and simply stand up a send connector on an
Exchange 2007 Server to take its place without modifying the new connector, you have effectively set a
maximum message size limit at 10MB. Of course this limit does not apply to messages that are not
serviced by the new connector but I’m sure that you get the picture.
Actually, it is a little more granular than that. The default values for newly created connectors of various
types are given in the chart below.
Connector Type Parameter Value
Foreign Connector MaxMessageSize Unlimited
Receive Connector MaxHeaderSize 64KB
MaxMessageSize 10MB
MaxRecipientsPerMessage 200
Send Connector MaxMessageSize 10MB
Note that the MaxHeaderSize on connectors hosted on Exchange 2003 was 32KB.
The bottom line is that like global limits, the default values for connector limits have changed from
Exchange 2003 to Exchange 2007. You had better be ready to change the limits to values that restore
message flow back to the behavior expected by the customer when you transition message flow from
legacy connectors to connectors hosted on Exchange 2007 servers.
To ensure that you don’t inadvertently impact message flow, I highly recommend creating new
connectors via the shell using the switch –enabled $false. Doing so will create the connector in a
disabled state and allow you time to change limits as per your design specifications.
The first (non‐service pack) version of the Exchange 2007 console has no interface to connector limits so
you are left to shell commands. Here are some examples that should get you well under way.
To identify connectors and their current values, use the connector get commandlets and filter (fl) the
output on wildcard stings as follows:
• Get-SendConnector | fl id*,max*
Returns the values for attributes whose names match the string max* (MaxSendSize, etc) and
id* (Identity, etc) for all send connectors in the organization. Returns a formatted list of send
connector identities and maximums.
• Get-ReceiveConnector | fl id*,max*
Returns the values for attributes whose names match the string max* (MaxSendSize, etc) and
id* (Identity, etc) for all receive connectors in the organization. Returns a formatted list of
receive connector identities and maximums.
• Get-ForeignConnector | fl id*,max*
Returns the values for attributes whose names match the string max* (MaxSendSize, etc) and
id* (Identity, etc) for all foreign connectors in the organization. Returns a formatted list of
foreign connector identities and maximums.
To set values for connectors identified using the get comandlets, use the connector set commandlets
followed by the attributes and values you want to modify.
• Set-SendConnector –identity “Outbound Internet Mail Connector”
–MaxMessageSize 100MB
Sets the maximum message size for send connector with an identity “Outbound Internet Mail
Connector” to 100MB. Valid values are numbers followed by B, KB, MB or GB.
• Set-ReceiveConnector –identity “exchsvr01\client exchsvr01”
–MaxMessageSize 100MB
Sets the maximum message size for receive connector with identity “client exchsvr01” on server
exchsvr01 to 100MB. Valid values are numbers followed by B, KB, MB or GB.
• Set-ReceiveConnector –identity “exchsvr01\client exchsvr01”
–MaxHeaderSize 64KB
Sets the maximum header size for receive connector with identity “client exchsvr01” on server
exchsvr01 to 64KB. Valid values are numbers followed by B, KB, MB or GB.
• Set-RecieveConnector –identity “exchsvr01\default exchsvr01”
–MaxRecipientsPerMessage 250
Sets the maximum number of recipients per message for receive connector with identity
“Outbound Internet Mail Connector” on server exchsvr01 to 250.
Server Limits
Server limits are set on individual edge or hub transport servers and are stored on the server itself. The
only relevant changes from Exchange 2003 are that the transport server now sets
PickupDirectoryMaxRecipientsPerMessage to 100 and PickupDirectoryMaxHeaderSize to 64KB.
You may want to adjust the maximum number of recipients per message on individual transport servers
by using the command below. It may be useful to set this number higher on internal hub transport
servers servicing messages to be delivered within the organization and to a lower number on edge
servers to discourage spam. Valid values for the command are 1 through 10000.
Set-TransportServer –Identity
-PickupDirectoryMaxRecipientsPerMessage
User Limits
Little change here that I can see.
Exceptions
System messages, agent generated messages, delivery status messages and similar messages generated
by the transport server itself are exempt from message size limits.
A Note on Maximum Recipients per Message
At first glance, the new lower limits on maximum recipients per message (200 for connectors, 5000
globally) may seem quite restrictive. The limits on maximum number of recipient per message in
Exchange 2003 however was based on the membership of distribution groups and was counted after the
distribution group was expanded. Exchange 2007 now counts a distribution group as one recipient.
The new lower limits may have little practical impact unless your users are quite weird and address
messages to hundreds of users individually.
OWA Limits
OWA has its own controls on message size that can be controlled independent of message size limits
discussed above. The default value is 30000 KB and can be modified by changing the MaxRequestLength
value in the web.config file.
And Finally… The most restrictive limit wins.
Summary
The bullet points below summarize the issues surrounding message limits that need to be addressed
when deploying Exchange 2007:
• Discuss message size limits and maximum recipients per message with your customer as part of
the design phase.
• Be ready to change limits quickly when you introduce Exchange 2007 into the organization. The
two places where you have to pay particular attention are global limits (set in AD) and limits set
on new connectors.
• If an existing legacy Exchange organization has modified global limits from the default,
introduction of Exchange 2007 will not change those limits.
• If an existing legacy Exchange organization has retained the default unlimited global message
limits and default settings for maximum number of recipients per message, introduction of
Exchange 2007 will set global message limits at 10MB and cap the maximum number of
recipients per message at 5000. Change the settings back using ADSIEdit or Exchange 2003 ESM.
• Legacy connectors were created with unlimited message size. Exchange 2007 send and receive
connectors will cap message size at 10MB and max recipients per message at 200. Migration to
Exchange 2007 connectors requires attention to detail such as using the shell to create
connectors in a disabled state and modifying the connector limits to the appropriate values prior
to disabling or removing legacy connectors.