Одно из самых приятных отличий Exchange 2007 от Exchange 2003 – receive connector’ы (соединители приёма).
Расскажу вкратце о том, чем они хороши, а также о том, куда пропала вкладка Relay Restrictions.
В славные времена Exchange 2003 настройки приёма сообщений по SMTP делались для всего сервера сразу. Конечно, можно было на одном Exchange создать несколько виртуальных SMTP серверов c разными настройками и прикрепить каждый виртуальный сервер к одному из локальных IP адресов сервера Exchnage. Но такой вариант редко был полезен.
В итоге, если в сети был хотя бы один умный МФУ, который умел отсылать результаты сканирования документов на почту, но при этом совершенно не подозревал об аутентификации, то рано или поздно приходилось делать страшное – разрешать отсылку писем без аутентификации всем подряд.
Зато, если нужно было открыть релей неавторизованным пользователям, то это делалось просто и секьюрно.
Open relay, если кто подзабыл – это возможность отсылать сообщения адресатам, чьи почтовые ящики находятся вне почтовой организации отправителя. Открытый релей – опасная штука, если к нему получат доступ спамеры, то ваш сервер может стать пунктом пересылки рекламы всему миру. Ваш сервер мгновенно попадёт в блеклисты всех почтовых служб, и хождение почты будет парализовано.
С выходом Exchange 2007 для любителей разрешать пользователям минимально необходимый набор действий наступило раздолье. Теперь можно создавать receive connector’ы с уникальными настройками аутентификации хоть для каждого устройства в сети.
Receive connector – это, фактически, набор правил для почтовых серверов с ролями Hub Transport и Edge Transport, которые объясняют серверам, что делать с полученными по SMTP(S)-протоколу сообщениями.
Согласно этим правилам серверы:
- прослушивают подключения, поступающие через заданные локальный IP-адрес и порт сервера из заданного диапазона клиентских IP-адресов,
- решают, как аутентифицировать отправителя и что вообще делать с сообщением, отправлять получателю или прибить на месте.
Receive connector’ы нужны исключительно для того, чтобы правильно разрулить поступающий на Hub Transport Server/Edge Transport Server SMTP-трафик. Это могут быть сообщения от соседних почтовых серверов, от почтовых серверов вне организации, от почтовых клиентов не умеющих работать с MAPI, от МФУ, от серверных приложений и т.д. и т.п.
Стоит помнить, о существенном ограничении – для каждого клиентского IP адреса должен быть активен только один receive connector.
В настройках коннектора можно разрешить принимать сообщения как от прошедших проверку (Exchange users), так и от неизвестных (Anonymous users) пользователей.
Однако настроек релея в консоли управления больше нет. Более того, на поверку выясняется, что если прошедшие проверку пользователи (Exchange users) могут пользоваться коннектором, то им автоматически разрешён релей. А вот если галкой отмечена группа Anonymous users, то не прошедшие проверку пользователи хоть и могут отправлять почту, но только в пределах почтовой организаци.
Да и вообще всё это выглядит странно. Кто такие Exchange users и Partners, нет таких групп в AD. И если вкладка называется Permission Group, то какие «пермишены» получают эти группы если они отмечены галкой. И самый главный вопрос – как всё же разрешить анонимным пользователям отсылать сообщения наружу?
Давайте разбираться во всей этой путанице.
Начнём с того, что Exchange 2007, так же как и его предшественник, хранит большинство настроек в Active Directory (AD). Receive connector’ы – не что иное, как объекты в AD. Их можно найти в разделе «конфигурация» с помощью оснастки adsiedit.msc из пакета support tools примерно по такому пути:
CN=SMTP Receive Connectors,CN=Protocols,CN=ExcServer1,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=ExchangeOrganizationName,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Domain,DC=ru.
Так вот, когда вы расставляете галочки на вкладке Permission Groups свойств коннектора, эти самые «пермишен группы» получают заранее предопределённый разработчиками Exchange набор разрешений на объект AD, соответствующий этому коннектору.
Увидеть действующие на коннектор разрешения можно как из PowerShell командой Get-ReceiveConnector «Receive Connector Name» | Get-ADPermission, так и открыв вкладку Security объекта коннектора в AdsiEdit – кому как удобнее.
Само-собой, в AD нет групп Exchange users, Anonymous users и некоторых других с вкладки Permission Groups, но им сопоставлены реально существующие в AD группы.
В хелпе есть замечательная табличка под номером 6, в которой объясняется, какой Permission группе какая доменная группа безопасности соответствует, и какие разрешения она получает, если отмечена галкой на вкладке Permission Groups.
Вот наиболее интересный кусок этой таблицы:
| Permission group name | Security principals | Permissions granted on Edge Transport servers | Permissions granted on Hub Transport servers |
|---|---|---|---|
| Anonymous | Anonymous users |
|
|
| ExchangeUsers | Authenticated users (well-known accounts are excluded) | Not available |
|
Несмотря на некоторые неточности в написании названий групп, из таблицы становится ясно, что группе Exchange users сопоставлена группа Authenticated users (Прошедшие проверку), а группе Anonymous users – группа ANONYMOUS LOGON (Анонимный вход).
А теперь обратите внимания на отличия в разрешениях, которые получают по умолчанию Anonymous users и Exchange users.
- Accept any sender. Анонимы могут использовать в качестве адреса отправителя что угодно, а авторизованные пользователи – только свой собственный почтовый адрес. И это понятно, проверить адрес анонима невозможно, а позволять прошедшим проверку пользователям шутки ради отсылать письма гендиректору с адреса vvputin@cremlin.ru не стоит.
- Bypass anti-spam filters. Письма прошедших проверку пользователей минуют проверку спамфильтром.
- Accept any recipient. И самое важное, прошедшие проверку пользователи могут посылать письма адресатам вне организации, а анонимы не могут.
Вот почему даже если группа Anonymous users отмечена галкой на вкладке Permission Groups, всё равно отослать письмо наружу без авторизации не получается.
Дело за малым, добавить этой группе недостающие разрешения на коннектор. Сделать это можно как из оснастки AdsiEdit, так и из консоли PowerShell .
Причём тут есть различия. В свойствах коннектора в AdsiEdit вы увидите опцию «Submit Messages to Any Recipient» и вам надо будет просто отметить её галкой.
А вот с PowerShell всё сложнее. Сначала нужно выяснить, как обозначается разрешение, соответствующее видимому имени (display name) »Submit Messages to Any Recipient». Для этого придётся изучить таблицу 4 хелпа, из которой становится ясно, что нам нужно разрешение «ms-Exch-SMTP-Accept-Any-Recipient».
| Permission | Display name | Description |
|---|---|---|
| ms-Exch-SMTP-Accept-Any-Recipient | Submit Messages to any Recipient | This permission allows the session to relay messages through this connector. If this permission isn’t granted, only messages addressed to recipients in accepted domains are accepted by this connector. |
Потом придётся искать, какой командой можно поменять свойства безопасности receive connectora’а.
Хотя можно поступить проще, и подглядеть готовую командную строку на текнете. Вот она:
Get-ReceiveConnector «Receive Connector Name» | Add-ADPermission -User «NT AUTHORITYANONYMOUS LOGON» -ExtendedRights «Ms-Exch-SMTP-Accept-Any-Recipient»
Ну и напоследок напрашивается вопрос . Зачем всё так усложнять вместо того, чтобы сделать одну единственную галку в настройках receive connector’а – разрешить релей для неавторизованных пользователей?
Скорее всего, разработчики хотели спрятать опасную опцию от неопытных админов. Что ж, им это удалось.







Добрый день! Как мне включить релей для ExchangeUsers?
Комментарий от Константин — Октябрь 19, 2009 @ 5:41 пп |
На вкладке «Permission Groups» выставить галку на этой группе.
Комментарий от mbugriy — Октябрь 19, 2009 @ 5:46 пп |
Да, но тогда почему не применяется true?
add-adpermission ‘client’ -User AU -ExtendedRights ms-Exch-SMTP-Accept-Any-Recipient
ПРЕДУПРЕЖДЕНИЕ: Соответствующий элемент управления доступом уже присутствует
для объекта «CN=client,CN=SMTP Receive
Connectors,CN=Protocols,CN=DC,CN=Servers,CN=Exchange Administrative Group
(FYDIBOHF23SPDLT),CN=Administrative Groups,CN=italico,CN=Microsoft
Exchange,CN=Services,CN=Configuration,DC=italico,DC=int» для учетной записи «NT
AUTHORITY\Прошедшие проверку».
Identity User Deny Inherited Rights
——– —- —- ——— ——
DC\client NT AUTHORITY\Прош… False False ms-Exch-SMTP-Accep…
А в AdsiEdit у меня нету объекта «CN=client,CN=SMTP Receive
Connectors…
Комментарий от Константин — Октябрь 20, 2009 @ 1:22 пп |
Константин, попробую помочь вашей беде.
1. На самом деле команда add-adpermission у вас применяется. Но с предупреждением о том, что соответствующие права уже были розданы до запуска команды. Перечитайте ещё раз мой пост, я в нём пишу о том, что для аутентифицированных юзеров по умолчанию уже включен релей. Если у вас юзеры не могут письма наружу отсылать, то дело точно не в релее.
2. Могу предположить, что вы в adsiedit’е открываете не тот раздел AD, который нужно. Коннекторы находятся в разделе Configuration. И они там точно есть, посмотрите на предупреждение, которое вы получаете, в нём точный путь к вашему коннектору.
Комментарий от mbugriy — Октябрь 20, 2009 @ 2:14 пп |
Добрый день Максим! У меня такая проблема как описано сдесь
http://www.exchangerus.ru/sf-forum/ms-exchange-2007-1/exchange-2007-17/ там мои коменты а второй странице.
юзеры на ружу могут слать через ову, а через смтп\поп3 нет (ошибка 550 5.7.1 unable to relay письмо не доходит до адресата). а на прием через поп3 в утлуке все работает на ура. Сервер мой находится у провайдера на колокейшене, возможно что у них на отправку закрыт порт?
Комментарий от Константин — Октябрь 20, 2009 @ 3:03 пп |
Судя по симптомам, при работе по SMTP ваши юзеры не могут аутентифицироваться на сервере, он принимает их за анонимусов и ресив-коннектор запрещает релей.
OWA и POP3 работают потому что там вообще другие механизмы задействованы, ресив-коннектор вообще не участвует.
Для начала убедитесь что у вас в почтовых клиентах включена аутентификация по SMTP.
Если включена, значит тот тип аутентификации, которым пытается пользоваться почтовый клиент, не разрёшён в настройках рисив-коннектора. Поиграйтесь со вкладкой Authentication вашего коннектора.
Комментарий от mbugriy — Октябрь 20, 2009 @ 3:22 пп |
у клиентах аутентиф включена. На коннекторе во вкладке проверка подлинности (Authentication) я оставил чебокс protocol TLS и внешняя защита (ipsec). Так заработало. И во вкладке пермишен отключил анонимных пользователей.
Вот а по поводу adsedit нашел я этот коннектор для Анонимного входа чебокса нету на allow submit messages to any recipient.
Комментарий от Константин — Октябрь 20, 2009 @ 5:23 пп |
Рад что всё заработало.
Если бы там стояла галка, значит релей был бы открыт, ваши клиенты и половина спамеров Земли успешно отсылали бы через ваш почтовик почту не авторизуясь.
Комментарий от mbugriy — Октябрь 20, 2009 @ 5:28 пп |
угумс! Максим спасибо за помощь! Приятно общаться с такими людьми!
Комментарий от Константин — Октябрь 20, 2009 @ 5:34 пп |
Не знаеш при отправке письма пришла ошибка от MDAEMONa что типа #554 Message does not conform to standards ##. Я почитал что возможно в днс не прописана запись SPF.
Комментарий от Константин — Октябрь 20, 2009 @ 6:54 пп |
Вот для домена wordpress.com spf запись такая http://old.openspf.org/wizard.html?mydomain=wordpress.com
Комментарий от Константин — Октябрь 20, 2009 @ 6:59 пп |
Сложно что-то определённое сказать, ошибка слишком общего типа. Возможно, у вас в обратной зоне ваш почтовик не прописан, а может, ваш айпи попал в блеклисты. В таких случаях стоит написать владельцу сервера, который ваши письма отшибает, и попросить его разобраться, в чём дело. У него по крайней мере лог есть, а у вас – невнятный номер ошибки.
Комментарий от mbugriy — Октябрь 21, 2009 @ 10:27 дп |
Прописал в днс spf запись ошибка с письмом не приходит (почта ходит нормально).
Комментарий от Константин — Октябрь 21, 2009 @ 1:49 пп |
Добрый день Максим! При отправке писем на один из адресов приходит ошибка что сообщение недоставлено и #550 4.4.7 QUEUE.Expired; message expired ##. По инету прошарился http://forum.sysfaq.ru/lofiversion/index.php/t21302.html С телнетом все гуд. Не отправляется на td7.ru
[PS] C:\Windows\System32>Get-Queue | where {$_.nexthopdomain -eq ‘td7.ru’} |fl
Identity : dc\2617
DeliveryType : DnsConnectorDelivery
NextHopDomain : td7.ru
NextHopConnector : 815abe82-4d80-4152-9a60-578dc56b62f9
Status : Retry
MessageCount : 2
LastError : 451 4.4.0 Primary target IP address responded with: «421 con
current connections limit in avast exceeded(pass:0, processe
s:EdgeTransport.exe[20]).» Attempted failover to alternate h
ost, but that did not succeed. Either there are no alternate
hosts, or delivery failed to all alternate hosts.
LastRetryTime : 22.10.2009 13:03:17
NextRetryTime : 22.10.2009 13:13:29
IsValid : True
ObjectState : Unchanged
Комментарий от Константин — Октябрь 22, 2009 @ 1:58 пп |
Привет, Константин.
Эта ошибка – 421 concurrent connections limit in avast exceeded – означает, что у вашего получателя на почтовом сервере стоит антивирус Avast, который отбросил ваше письмо, так как у него уже много писем в очереди было.
http://forum.avast.com/index.php?topic=13394.0
Вы решили проверить качество настроек всех почтовых серверов интернета?
Комментарий от mbugriy — Октябрь 22, 2009 @ 9:24 пп |
Доброе утро Максим! Можно ли с вами связаться? У меня icq 277207680.
Комментарий от Константин — Октябрь 23, 2009 @ 11:11 дп |
Привет, Константин. Я не пользуюсь icq и прочими чатилками, обычно просто так занят, что не в состоянии в рабочее время поддерживать диалог в реальном времени. Можете писать на е-мейл, тут в эбауте он указан.
Комментарий от mbugriy — Октябрь 23, 2009 @ 2:49 пп |