The Magician

Лимиты на отправку и получение

Увеличение лимитов подключений и количества писем коннекторов приема

По умолчанию в Exchange не слишком большие лимиты для коннекторов приема. С одного IP можно отправлять не более 5 писем в минуту. Это довольно мало, если мы делаем большие автоматизированные рассылки, к примеру, для 1С. В этом случае часть писем будут уходить без проблем, а часть отбрасываться. В случае с 1С рассылкой, которая обращается на коннектор Client Frontend нужно увеличить лимиты ещё и для коннектора Client Proxy.

Это можно сделать следующим образом:

Set-ReceiveConnector -Identity "Client Proxy MX03" -MessageRateLimit 200 -MaxInboundConnection 10000 -MaxInboundConnectionPerSource 100 -MaxInboundConnectionPercentagePerSource 30
Set-ReceiveConnector -Identity "Client Frontend MX03" -MessageRateLimit 200 -MaxInboundConnection 10000 -MaxInboundConnectionPerSource 100 -MaxInboundConnectionPercentagePerSource 30

Размеры вложений

Транспортные ограничения и коннекторы

Узнать текущие транспортные лимиты можно командой:

Get-TransportConfig | ft MaxSendSize, MaxReceiveSize

Выставить необходимый параметр можно, например, так:

Set-TransportConfig -MaxRecieveSize 100MB
Set-TransportConfig -MaxSendSize 100MB

Узнаем ограничения на коннекторах приёма и отправки:

Get-ReceiveConnector | ft Name, MaxmessageSize
Get-SendConnector | ft Name, MaxMessageSize

Меняем настройки коннекторов:

Get-ReceiveConnector | Set-ReceiveConnector -MaxmessageSize 100mb
Get-SendConnector | Set-SendConnector -MaxmessageSize 100mb

Ограничения, установленные на уровне конкретного ящика

Get-Mailbox jp@arasaka.local | ft Name, MaxSendSize, MaxReceiveSize
Set-Mailbox jp@arasaka.local -MaxSendSize 100mb -MaxReceiveSize 100mb

Размеры вложений Active Sync

Для протокола Active Sync в Exchange существуют отдельные лимиты, не связанные с лимитом коннекторов. В случае превышения лимита на отправку - на мобильном телефоне можно наблюдать сообщение о недоставленном письме следующего содержания:

EasSendFailedPermanentException: An EAS Send command failed: Unable to send the message: either the send quota has been exceeded; or the message was too large; or the mailbox is over-quota.

Ниже следует перечень конфигураций, где необходимо поменять данный лимит.

:!: При рассчёте лимитов Active Sync - требуется учитывать, что все сообщения и вложения отправляются в кодировке base64, что увеличивает их фактический объём приблизительно на 33%.

1) Проверить файл:

C:\Program Files\Microsoft\Exchange Server\v15\ClientAccess\Sync\web.config
<httpRuntime maxRequestLength="30720" fcnMode="Disabled" />
<authentication mode="Windows" />

В данном случае, как видно, лимит установлен в 30 МБ.

2) Проверить настройки IIS для сайтов Default Web SiteMicrosoft-Server-ActiveSync и Exchange Back EndMicrosoft-Server-ActiveSync.

Для данных сайтов в консоли управления IIS нужно выбрать Features View и открыть Configuration Editor. Вверху, в графе section нужно найти следующий параметр: system.webServer/security/requestFiltering, далее раскрыть ветку requestLimits и задать maxAllowedContentLength в байтах.

Пример показан на скриншоте.

По умолчанию этот параметр установлен в 30000000 байт.

:!: Параметр необходимо проверить для двух указанных выше сайтов.

3) Отредактировать настройки данного файла:

%ExchangeInstallPath%FrontEnd\HttpProxy\Sync\web.config

Интересующий нас параметр (по умолчанию установлен в 10 МБ):

maxRequestLength="10240"

4) Переходим к следующему файлу:

%ExchangeInstallPath%ClientAccess\Sync\web.config

Правим параметр, который также по умолчанию устанавливает лимит в 10 МБ.

maxRequestLength="10240"

5) Последний файл, который нас интересует:

%ExchangeInstallPath%ClientAccess\Sync\web.config

Здесь мы ищем строку следующего содержания также задающую лимит в 10 МБ:

<add key="MaxDocumentDataSize" value="10240000">

Настройки лимитов ActiveSync через скрипт

Гораздо удобнее внести такие же настройки через скрипт cmd.

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:30000000
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/Microsoft-Server-ActiveSync/" -section:system.web/httpRuntime /maxRequestLength:10240
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:30000000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:system.web/httpRuntime /maxRequestLength:10240
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/Microsoft-Server-ActiveSync/" -section:appSettings /[key='MaxDocumentDataSize'].value:10240000

Изменение размеров вложений OWA

Настройку проще всего делать через скрипт cmd.

:!: Меньшее число - это объём вложения в килобайтах, больщее - в байтах. Учитывая, что кодировка base64 добавляет актуальный вес в 33% - следует это учитывать при расчёте конечного размера вложения в данной конфигурации.

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:35000000
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/owa/" -section:system.web/httpRuntime /maxRequestLength:35000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:35000000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.web/httpRuntime /maxRequestLength:35000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpsBinding'].maxReceivedMessageSize:35000000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpBinding'].maxReceivedMessageSize:35000000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpsBinding'].readerQuotas.maxStringContentLength:35000000
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/owa/" -section:system.serviceModel/bindings /webHttpBinding.[name='httpBinding'].readerQuotas.maxStringContentLength:35000000

Изменение размеров вложений EWS

Скрипт cmd:

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site/ews/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.webServer/security/requestFiltering /requestLimits.maxAllowedContentLength:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSAnonymousHttpsBinding'].httpsTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSAnonymousHttpBinding'].httpTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSBasicHttpsBinding'].httpsTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSBasicHttpBinding'].httpTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSNegotiateHttpsBinding'].httpsTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSNegotiateHttpBinding'].httpTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityHttpsBinding'].httpsTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityHttpBinding'].httpTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecuritySymmetricKeyHttpsBinding'].httpsTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecuritySymmetricKeyHttpBinding'].httpTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityX509CertHttpsBinding'].httpsTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /customBinding.[name='EWSWSSecurityX509CertHttpBinding'].httpTransport.maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /webHttpBinding.[name='EWSStreamingNegotiateHttpsBinding'].maxReceivedMessageSize:67108864
%windir%\system32\inetsrv\appcmd.exe set config "Exchange Back End/ews/" -section:system.serviceModel/bindings /webHttpBinding.[name='EWSStreamingNegotiateHttpBinding'].maxReceivedMessageSize:67108864

:!: После изменения всех параметров - требуется перезагрузить службу IIS. Проще всего это сделать через консоль IIS (через команды меню: stop, start)

Статья Microsoft об изменении размера вложений:

https://learn.microsoft.com/en-us/exchange/architecture/client-access/client-message-size-limits


Проверить лимиты на отправку или получение в правилах

Ограничения по размеру писем могут быть заданы в транспортных правилах. Получить информацию об этом можно следующим образом:

Get-TransportRule | where {($_.MessageSizeOver -ne $null) -or ($_.AttachmentSizeOver -ne $null)} | Format-Table Name,MessageSizeOver,AttachmentSizeOver

Ограничения на количество адресатов

MS Outlook\OWA: 500 получателей в рамках одного письма.

На уровне организации:

Get-TransportConfig | Format-List MaxRecipientEnvelopeLimit

Для всех коннекторов:

Get-ReceiveConnector | Format-Table name,MaxRecipientsPerMessage

Для конкретных ящиков:

Get-Mailbox <MailboxIdentity> | Format-List RecipientLimits

Статья Microsoft о лимитах:

https://learn.microsoft.com/en-us/exchange/mail-flow/message-size-limits

лимиты_на_отправку_и_получение.txt · Last modified: by jp