Autodiscover Site Scope

В архитектуре где есть несколько площадок с серверами Exchange объединенных каналом WAN можно оптимизировать подключения пользователей к серверам CAS так, чтобы пользователи подключались к ближайшим серверам CAS.

Клиент определяет в каком сайте AD он находится и пытается запросить серверы CAS локального сайта, если по какой то причине у него не получилось запросить ближайшие серверы CAS, он получит список любых доступных серверов CAS.

Если по какой-то причине клиент не может определить принадлежность к сайту, можно настроить Site Affinity атрибут для серверов CAS.

Просмотреть Site Afiinity можно с помощью команды

Get-ClientAccessServer | ft name,autodiscoversitescope

Для настройки необходимо воспользоваться командой.

В этом примере, для пользователей на компьютерах подключенных к сайту «MSK_Site» служба Autodisocver будет предоставлять сервер mailexch.

Set-ClientAccessServer mailexch -AutoDiscoverSiteScope ‘MSK_Site’

Атрибут AutoDiscoverSiteScope является multivalue, т.е. можно добавить несколько сайтов AD.

Set-ClientAccessServer mailexch -AutoDiscoverSiteScope ‘MSK_Site’,’MOBL_Site’

 

Рубрики:Exchange

Установка Skype For Business Standard 2019

Небольшая инструкция по установке Skype For Business Standard 2019 на Windows 2016.

Имя сервера Skype  — ucv-skype.ucviktorp.int

Имя для внешних подключений Web URL — ucv-skype.ucviktorp.ru

 

1. Add-WindowsFeature NET-Framework-Core, RSAT-ADDS, Windows-Identity-Foundation, Web-Server, Web-Static-Content, Web-Default-Doc, Web-Http-Errors, Web-Dir-Browsing, Web-Asp-Net, Web-Net-Ext, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Logging, Web-Log-Libraries, Web-Request-Monitor, Web-Http-Tracing, Web-Basic-Auth, Web-Windows-Auth, Web-Client-Auth, Web-Filtering, Web-Stat-Compression, Web-Dyn-Compression, NET-WCF-HTTP-Activation45, Web-Asp-Net45, Web-Mgmt-Tools, Web-Scripting-Tools, Web-Mgmt-Compat, Server-Media-Foundation, BITS, Telnet-Client
2.Инсталлировать .Net Framework 4.7 https://www.microsoft.com/en-US/download/details.aspx?id=55167
3. Запустить Windows Update
4. Инсталлировать средства администрирования Skype
5. Инсталлировать базу данных CMS
6. Сделать подготовку Active Directory
7. Подготовить учетную запись администратора Skype:
а. Создать учетную запись администратора, например adm-skype
б. Добавить пользователя adm-skype в группы csAdministrator и в группу RTCUniversalServerAdmins
в. Сделать локальным администратором всех серверов Skype
г. Сделать локальным администратором сервера на котором находится общая папка Skype.
д. Создать делегирование на выполнение Enable-csTopology для администратора Skype. (Открыть Skype Power Shell с правами администратора домена и выполнить командлет Grant-CsSetupPermission -ComputerOU «OU=servers,OU=UCViktorp,DC=ucviktorp,DC=int» -Domain ucviktorp.int)
8. Создать общую папку для Skype и добавить в нее Shared разрешения, группа локальных администраторов сервера, где размещена папка.
9. Настроить топологию Skype
10. Инсталлировать первый сервер Front End
11. Настроить DNS записи для Skype. Для примера: зона DNS для ресурсов AD ucviktorp.int, а зона для внешних сервисов ucviktorp.ru

ucv-skype.ucviktorp.int — внутренний Web Service
ucv-skype.ucviktorp.ru — внешний Web Service
dialin.ucviktorp.ru
meet.ucviktorp.ru
admin.ucviktorp.ru
lyncdiscoverinternal.ucviktorp.ru — автодисковер внутри организации
lyncdiscover.ucviktorp.ru — автодисковер снаружи организации
sip.ucviktorp.ru — поиск для устаревших клиентов

12. Настроить и установить сертификат с текущим именованием

subject = ucv-skype.ucviktorp.int
SAN
ucv-skype.ucviktorp.int
ucv-skype.ucviktorp.ru
dialin.ucviktorp.ru
meet.ucviktorp.ru
admin.ucviktorp.ru
lyncdiscoverinternal.ucviktorp.ru
lyncdiscover.ucviktorp.ru
sip.ucviktorp.ru

После этого рекомендую перезагрузить весь сервер для запуска служб Skype For Business.

Рубрики:Skype For Business Метки: ,

Предварительные компоненты для Exchange 2016

Предварительные компоненты для Exchange 2016 для ОС Windows Server 2016

1.Установка компонент Windows

Install-WindowsFeature NET-Framework-45-Features, Server-Media-Foundation, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS
2.Запустить обновление Windows Update
3.https://go.microsoft.com/fwlink/?linkid=2088631.NET Framework 4.8
4.https://www.microsoft.com/en-us/download/confirmation.aspx?id=34992Unified Communications Managed API 4.0 Runtime
5.https://support.microsoft.com/help/4032938/update-for-visual-c-2013-redistributable-packageVisual C++ Redistributable Package for Visual Studio 2013

Рубрики:Exchange Метки: ,

imapsync

IMAPSYNC  (https://imapsync.lamiral.info/) распространяется бесплатно в исходниках на Github

Для того, чтобы скомпилировать в exe файл необходимо:

  1. Скачать исходники с Github в архиве ZIP и распаковать их в C:\IMAPSYNC\ получиться C:\imapsync\imapsync-master
  2. Скопировать файл imapsync из C:\imapsync\imapsync-master в C:\temp\imapsync\imapsync-master\W
  3. Скачать Perl, можно отсюда http://strawberryperl.com/releases.html, у меня в итоге на Windows 10 Pro получилось с версией Portable 5.22.3.1 64 бит.
  4. Распаковываем дистрибутив в папку C:\IMAPSYNC\
  5. Запускаем portableshell.bat, далее набираем команду cpan и устанавливаем Unicode::String
    cpan> install Unicode::String
  6. Устанавливаем модули C:\imapsync\imapsync-master\W\install_modules.bat

У меня в процессе установки не устанавливался модуль IO::TEE. Для его установки я зашел на сайт http://code.activestate.com/ppm/?_ga=2.219749849.1713798100.1526937278-305676635.1526937278

где в строке поиска указал IO::TEE. Далее выбрал для своего релиза Perl версию модуля и скачал его

после этого распаковал архив в C:\imapsync\perl\site\lib\IO

и файл IO.pm скопировал в C:\imapsync\perl\site\lib

после этого необходимо повторно запустить C:\imapsync\imapsync-master\W\install_modules.bat, никаких ошибок с модулями быть не должно.

P.S. На том же сайте где и модули думаю можно скачать и сам дистрибутив Perl https://www.activestate.com/activeperl/downloads?_ga=2.258669642.1713798100.1526937278-305676635.1526937278#

После этого запускаем компиляцию C:\imapsync\imapsync-master\W\build_exe.bat

В итоге получается файл exe. Если все верно сделано, то при запуске команды отобразится Help.

Копируем получившийся файл в C:\imapsync\imapsync-master\examples там есть файл imapsync_example.bat — тестирование переноса для одного ящика и sync_loop_windows.bat и file.txt массовый перенос ящиков.

Исходная статья https://habr.com/post/282916/

Рубрики:Exchange Метки:

About Sharing SMTP Domain

Попробую разобраться в объединении SMTP доменов между несколькими системами.

Когда это необходимо?

Основаных сценариев, которые были на моей практике несколько:

  1. Миграция с одной почтовой системы в другую.
  2. Объединение пространства имен при слиянии/присоединении компаний.
  3. Пересылка всех сообщений с одного сервера на другой для конкретных доменов.

Предположим, что оба сервера Exchange.

Сервер в организации Exchange1 принимает сообщения для определенного домена, например domain.com. Если почтовый ящик находится на Exchange1 сообщение доставляется в п/я. В случае если в почтовой организации получатель не найден сообщение направялется на Exchange2. Алгоритм действия сервера Exchange2 идентичен и в случае, если адресат в domain.com не найден в локальной организации сообщение будет направлено на Exchange1.

Настройки на Exchange1:

  • Internal Relay: domain.com
  • Send Connector. — в качестве smart host указан Edge сервер организации Exchange2, авторизация для SMART HOST отключена, параметр Address Space — domain.com.

Настройки на Exchange2 идентичны:

  • Internal Relay: domain.com
  • Send Connector. — в качестве smart host указан Edge сервер организации Exchange1, авторизация для SMART HOST отключена, параметр Address Space — domain.com.

Если сообщение направлено получателю, которого нет в организациях сообщение будет пересылаться между организациями большое количество раз (на сколько я знаю около 30 раз).

Предлагается каждое входящее сообщение на сервере Exchange1 тегировать (вставлять в заголовок метку) и если это сообщение вернется серверу повторно, но уже с тэгом — удалять данное сообщение или отправлять NDR.

Для настройки необходимо создать по два транспортных правила на Exchange1 и два транспортных правила на Exchange2. Разница в настройках только в значении тэга.

На сервере Exchange1 транспортное правило вставляет в заголовки всех входящих сообщений строку X-LoopDetect со значением 1 кроме случаев когда в сообщении уже существует X-LoopDetect со значением 2(это сообщения тэгируемые сервером Exchange2).

1Другое транспортное правило отправляет NDR или удаляет все сообщения в заголовке которых находится строка X-LoopDetect со значением 1.

2

!!! В ходе экспериментов мне пришлось изменить приоритет правил. Правило, которое удаляет тегированные сообщения должно быть с меньшим приоритетом.

Если оставить приоритет, как указано на картинках в правиле с тегом необходимо добавить исключение  X-LoopDetect со значением 1 и включить настройку Stop Processing more ruleДва данных правила должны быть в самом конце общего списка правил, иначе сообщения не будут проходить другие правила из-за настройки «Stop Processing more rule». В этой конфигурации, сообщения поступившние на сервер вначале будут тегироваться и благодаря «Stop Processing more rule» будут отправляться на Exchange2, но когда сообщения будут поступать с тэгом X-LoopDetect  = 1, они не будут обрабатываться данным правилом а будут обработаны правилом, которое удаляет или генерирует NDR. 

P.S. Получилось сумбурно, но я хотел описать, что существуют варианты настройки правил.

На сервере Exchange2 так же можно создать идентичные правила, разница будет лишь в том, что значение X-LoopDetect необходимо поставить 2, а в исключении указать значение X-LoopDetect=1.

 

Зачастую антиспам системы, ключая встроенный в Exchange фильтр Recipient Filter, выполняют запросы в AD на предмет существования в организации адреса назначения и если его не существует, то сервер не принимает сообщение.

Если получатель находится в организации Exchange2, а в Exchange1 его нет — то агенты фильтрации получателей вполне могут удалить данное сообщение.

Существуе несколько вариантов решения данного вопроса:

  1. Настройка системы фильтрации, так чтобы сообщения, отправляемые на не существующие в организации адреса не фильтровались.
  2. Создание контактов или mail enable user (MEU — объекты имеющие почтовый адрес, но не имеющие почтовый ящик), которые фактически будут отображать получателей в другой организации.

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

В крайнем случае можно отключить проверку на наличие объектов в AD. Настройка проверки адресатов в AD регулируется с помощью команды Set-RecipientFilterConfig  и параметра RecipientValidationEnabled.

Проверка получателей напрямую зависит от типа домена в Exchange организации:

  • Для доменов Internal relay по-умолчанию проверка не производится. И вправду это не очень логично, так как Internal relay подразумевает, что получателя в организации может и не быть. Но мы можем регулировать это поведение.
  • Для авторитативных доменов проверка происходит всегда и если адресат не найден в AD, сообщение блокируется.

В случае если есть желание включить проверку адресатов для Internal Relay необходимо с помощью командлета Set-AcceptedDomain  включить  $True параметра AddressBookEnabled. По умолчанию для Internal relay доменов значение параметра AddressBookEnabled — $false.

В итоге мы получаем следующую схему с вариантами:

Вариант1. Фильтр проверки получателей не работает для общего домена + созданы правила предотвращающие зацикливание почтовых сообщений между серверами.

Вариант2. Фильтр проверки получателей работает для общего домена, транспортные правила не созданы, в организациях созданы контакты или MEU объекты, отображающие получателей в перекрестных организациях.

Как я говорил в самом начале основными сценариями объединения пространства SMTP является миграция или слияние. В этом случае необходимо синхронизировать списки пользователей в адресных книгах. На самом деле для этого и создаются контакты в одной организации, которые представляют почтовые ящики в другой организации и наборот.

 

Рубрики:Exchange

Простые операции в Exchange

Иногда бывает проще где-то записать для себя операции, которые выполняешь не так часто.

Операции с базами данных

  • Перемещение всех п/я базы md01 в базу md02

Get-Mailbox -Database «md01» -ResultSize Unlimited | New-MoveRequest -TargetDatabase «md02»

  • Перемещение одного п/я Mailbox01 в базу md02

New-MoveRequest -Identity «Mailbox01» -TargetDatabase «md02»

  • Перемещение служебных и архивных почтовых ящиков из базы md01 в базу md02

Get-Mailbox -Database md01  -Arbitration | New-MoveRequest -TargetDatabase md02

Get-Mailbox -Database md01 -Archive | New-MoveRequest -TargetDatabase md02

  • Перемещение п/я из текстового файла

GetContent C\Adminusers.txt | NewMoveRequest TargetDatabase «md02»

  • Просмотр статистики перемещения почтовых ящиков в базу данных «md02»

Get-MoveRequestStatistics -MoveRequestQueue «md02»

  • Отображение статистики завершенных перемещений п/я

Get-MoveRequest | where {$_.status -eq “Completed”}

  • Удаление завершенных запросов перемещений

Get-MoveRequest | where {$_.status -eq “Completed”} | Remove-MoveRequest

  • Операция сидинга базы данных с указанием сервера источника

Например, DAG группа из трех серверов mailexch1,mailexch2,mailexch3. Необходимо добавить пассивную БД maildb на сервер mailexch3 с указанием сервера источника mailexch2.

Создаем копию, без операции сидинга (заполнения БД)

Add-MailboxDatabaseCopy -Identity maildb -MailboxServer mailexch3 -ActivationPreference 3 -SeedingPostponed

  • Выполняем операцию сидинга

Update-MailboxDatabaseCopy -Identity maildb\mailexch3 -SourceServer mailexch2 -DeleteExistingFiles

  • Просмотр статуса репликации баз данных на локальном сервере

Get-MailboxDatabaseCopyStatus

Name Status CopyQueueLength ReplayQueueLength LastInspectedLogTime ContentIndexState
—- —— ————— —————— ——————— ——————
archive\EXCH-03 Healthy 0 0 27.05.2020 0:28:10 Healthy
standard\EXCH-03 Healthy 0 0 27.05.2020 0:30:27 Healthy
extended\EXCH-03 Healthy 0 0 27.05.2020 0:27:51 Healthy
shared\EXCH-03 Healthy 0 0 27.05.2020 0:28:10 Healthy

Данный вывод говорит о том, что на сервере EXCH-03 на данный момент, нет ни одной активной базы данных, пассивные базы данных находятся в рабочем состоянии и все журналы транзакции были скопированы и записаны в базу данных.

Статусы баз данных можно просмотреть https://docs.microsoft.com/ru-ru/exchange/high-availability/manage-ha/monitor-dags?view=exchserver-2019

Иногда удобнее просмотреть статусы всех баз данных

[PS] C:\Windows\system32>Get-MailboxDatabaseCopyStatus * | ft -AutoSize

Name Status CopyQueueLength ReplayQueueLength LastInspectedLogTime ContentIndexState
—- —— ————— —————— ——————— ——————
standard\EXCH-01 Healthy 0 0 27.05.2020 0:41:41 Healthy
extended\EXCH-01 Mounted 0 0 Healthy
archive\EXCH-01 Healthy 0 0 27.05.2020 0:35:44 Healthy
shared\EXCH-01 Mounted 0 0 Healthy
standard\EXCH-02 Mounted 0 0 Healthy
extended\EXCH-02 Healthy 0 0 27.05.2020 0:41:02 Healthy
archive\EXCH-02 Mounted 0 0 Healthy
shared\EXCH-02 Healthy 0 0 27.05.2020 0:28:10 Healthy
archive\EXCH-03 Healthy 0 0 27.05.2020 0:35:44 Healthy
standard\EXCH-03 Healthy 0 0 27.05.2020 0:41:41 Healthy
extended\EXCH-03 Healthy 0 0 27.05.2020 0:41:02 Healthy
shared\EXCH-03 Healthy 0 0 27.05.2020 0:28:10 Healthy

В выводе выше, можно увидеть статус Mounted — это активная база данных, к которой подключены почтовые клиенты.

Так же просмотреть все активные базы данных и их некоторые свойства.

Get-MailboxDatabaseCopyStatus * -Active | Select Name,Status,MailboxServer,ActivationPreference
,ContentIndexState

Name : extended\EXCH-01
Status : Mounted
MailboxServer : EXCH-01
ActivationPreference : 2
ContentIndexState : Healthy

Name : shared\EXCH-01
Status : Mounted
MailboxServer : EXCH-01
ActivationPreference : 1
ContentIndexState : Healthy

Name : standard\EXCH-02
Status : Mounted
MailboxServer : EXCH-02
ActivationPreference : 2
ContentIndexState : Healthy

Name : archive\EXCH-02
Status : Mounted
MailboxServer : EXCH-02
ActivationPreference : 1
ContentIndexState : Healthy

Edge Синхронизация

  • Просмотр состояние Edge подписки

Test-EdgeSynchronization

  • Запуск синхронизации

Start-EdgeSynchronization

Рубрики:Exchange

OWA Error: Your request can’t be completed right now. Please try again later.

При попытке открытия любого сообщения в OWA появялется следующая ошибка:

Error: Your request can’t be completed right now. Please try again later.

Все статьи указывают на то, что в IIS разделе OWA сайта Back End не установлена анонимная аутентификация.

В моем случае все настройки были корректные, а проблема проявлялась только в одном почтовом ящике.

Я попытался переключить ящик на другие серверы Mailbox — ситуация не изменилась. В итоге я вспомнил, что данный почтовый ящик я отключал от одного пользователя и переключал к другому. Решил проверить атрибуты у старого и нового пользователей. Выяснилось что у двух пользователей в AD атрибут LegacyExchangeDN одинаковый. После изменения атрибута LegacyExchangeDN у старого пользователя от которого был откреплен ящик — проблема решилась.

Exchange Edge Relay

Настраивал конфигурацию, где Mailbox серверы пересылают сообщения через Edge, с помощью создания коннекторов вручную. На Technet по этому поводу есть статья https://technet.microsoft.com/en-us/library/bb232082(v=exchg.160).aspx

В ней не описан один нюанс:

Когда на сервере Edge создается локальный пользователь, который добавлен в качестве аутентификатора на Send коннекторе в Mailbox, необходимо добавить дополнительные разрешения. Иначе в Receive коннекторе на Edge можно наблюдать следующие логи:

<,AUTH LOGIN,

,Inbound authentication failed because the client ED03\smtp2 doesn’t have submit permission.

User Name: smtp

535 5.7.3 Authentication unsuccessful

Для того, чтобы релей отработал на сервере Edge необходимо добавить разрешение ms-Exch-SMTP-Submit для пользователя.

Get-ReceiveConnector «From Internal Org» | Add-ADPermission -User «smtp» -ExtendedRights ms-Exch-SMTP-Submit

Рубрики:Uncategorized

Exchange 2016 | IMAP 4

Баян конечно, но возможно кому-то понадобиться сократить время настройки.

В данном примере для подключения к почтовому серверу по протоколам IMAP и SMTP используется одно и то же DNS имя — mail.contoso.com.

Для защиты подключений к протоколам IMAP и SMTP используется сертификат, который содержит DNS имя почтового сервера mail.contoso.com.

Настройка подключений IMAP не используются коннекторы.

Настройка подключений SMTP используется принимающий коннектор «Client Frontend..», который использует 587 порт.

Для настройки подключений клиентов по 25 порту необходимо добавить новый внешний IP-адрес на оборудовании NAT, новый IP-адрес на сервере Exchange, создать новую запись A во внешней зоне DNS и далее создать новый принимающий коннектор с использованием 25 порта.

 

Для настройки подключений IMAP/SMTP необходимо:

  • Включить сервис IMAP на сервере Exchange:

Start-Service MSExchangeIMAP4; Start-Service MSExchangeIMAP4BE

Перевести сервис в режим автоматического запуска:

Set-Service MSExchangeIMAP4 -StartupType Automatic; Set-Service MSExchangeIMAP4BE -StartupType Automatic

  • Настроить подключение с использованием протокола SSL:

Set-ImapSettings -ExternalConnectionSettings «mail.contoso.com:993:SSL» -X509CertificateName mail.contoso.com -EnableGSSAPIAndNTLMAuth $false

Где:

mail.contoso.com — DNS имя во внешней зоне DNS к которому пользователи будут подключаться к IMAP

X509CertificateName — имя сертификата для возможности установки SSL соединения. Имена в сертификате должны совпадать с DNS именем сервера к которому выполняется подключение.

EnableGSSAPIAndNTLMAuth — без отключения данного параметра Outlook 2016 не выполнял аутентификацию на сервере Exchange.

  • После настройки параметров, обязательно необходимо перезапустить сервис IMAP:

Restart-Service MSExchangeIMAP4; Restart-Service MSExchangeIMAP4BE

После настройки параметров IMAP необходимо настроить параметры подключения пользователей к сервису SMTP.

  • Настроить свойства прнимающего коннектора  SMTP (Принимающий коннектор «Client Frontend..»).

$TLSCert = Get-ExchangeCertificate -Thumbprint 434AC224C8459924B26521298CE8834C514856AB

$TLSCertName = «<I>$($TLSCert.Issuer)<S>$($TLSCert.Subject)»

Get-ReceiveConnector -Identity «Client Frontend*» | Set-ReceiveConnector -TlsCertificateName $TLSCertName

Изначально в коннекторе FQDN сервера совпадает с именем компьютера, оно отображается в приветсвии диалога SMTP. Необходимо, чтобы оно соответствовало имени сервера во внешней DNS зоне ( mail.contoso.com):

Get-ReceiveConnector -Identity «Client Frontend*» | Set-ReceiveConnector -Fqdn mail.contoso.com

Рубрики:Exchange Метки: , ,

Слияние объектов между Office 365 и Active Directory | Merge from Office 365 to AD

Одним из важных этапов интеграции локальной инфраструктуры Active Directory и Office 365 является синхронизация пользователей, контактов и групп из Службы Каталогов Active Directory в Office 365.

Зачастую при внедрении Office 365 в ИТ инфраструктуре уже развернут каталог Active Directory. На последнем небольшом проекте я столкнулся с ситуацией, когда компания изначально использовала Office 365, но чтобы деятельность компании соответствовала Российскому законодательству (закон о персональных данных) пришлось использовать локальный каталог Active Directory.

Комментарии к Закону:

Федеральный закон № 242-ФЗ от 21 июля 2014г. (далее «Закон»), вносящий поправки в законодательство о персональных данных, вступившие в силу с 1 сентября 2015 года, накладывает на операторов персональных данных граждан Российской Федерации, осуществляющих сбор таких персональных данных, определенное требование о локализации указанной информации на территории России. При сборе персональных данных операторы обязаны обеспечить запись, систематизацию, накопление, хранение, уточнение (обновление, изменение) и извлечение персональных данных граждан Российской Федерации с использованием баз данных, находящихся на территории Российской Федерации.

Для того, чтобы связать пользователей из Office 365 с пользователями в Active Directory, необходимо создать в локальном каталоге AD идентичных пользователей и настроить синхронизацию через ADConnect. В этой схеме есть один существенный нюанс:

Исходя из следующией статьи: How to use SMTP matching to match on-premises user accounts to Office 365 user accounts for directory synchronization

Для того чтобы учетная запись пользователя в Office 365 была синхронизирована с локальной учетной записью, необходимо, чтобы атрибут E-mail в локальной учетной записи соответствовал атрибуту Primary E-mail Address для облачной.

Слияние возможно только когда у облачного пользователя включен почтовый ящик. Со всеми ограничениями можно ознакомиться из статьи выше.

В некоторых источниках в качестве атрибута на основе которого происходит слияние добавляют Primary E-mail Address в атрибут proxyAddress локального пользователя, но я в своем решении так же заполнял и атрибут E-mail.

В случае когда Active Directory не имеет ни одного пользователя, мы создаем их на основе пользователей из Office 365.

Кратко обозначим пункты, которые необходимо выполнить для решения задачи:

  1. В случае если планируется сменить политики именования или политики заполнения атрибутов я считаю, что проще это сделать первоначальным этапом в Office 365.
  2. Экспортируем всех пользователей у которых подключен Exchange Online.
  3. Импортируем пользователей в локальный каталог Active Directory.
  4. Выпполняем синхронизацию акаунтов.
  5. Проверяем результат.

Остановлюсь более подробно на 2 и 3 пункте

К сожалению у меня нет навыков в написании скриптов, тоесть совсем нет 🙂 поэтому простите меня за мою рукож..ть..

Задача скрипта — экспортировать пользователей со всеми их описательными параметрами, а так же для каждого пользователя из параметра Proxyaddress выделить основной адрес SMTP. Основной адрес отображается заглавными буквами «SMTP».

Экспорт пользователей Office 365

Get-MsolUser -all | Select-Object userprincipalname, displayName, FirstName, City, Country, Department, LastName, MobilePhone, Office, PhoneNumber, PostalCode, StreetAddress, State, Title, Fax, @{L = «ProxyAddresses»; E = { $_.ProxyAddresses -join «;»}}, @{e={$_.ProxyAddresses -cmatch ‘^SMTP\:.*’};name=’Primaryaddress’}|Export-Csv -Path c:\temp\users.csv -NoTypeInformation -Delimiter «;»

Скрипт создает пользователей в организационном подразделении «Not_sync_users» с одним и тем же паролем и добавляет Proxy адреса.

Import-Csv «C:\temp\script\users_test.csv» -Delimiter «;» | foreach-object {

New-ADUser -Name $_.DisplayName -SamAccountName $_.UserPrincipalName.Split(«@»)[0] -DisplayName $_.Displayname -UserPrincipalName $_.UserPrincipalName -GivenName $_.FirstName -SurName $_.LastName -City $_.City -Fax $_.Fax -Department $_.Department -MobilePhone $_.MobilePhone -Office $_.Office -OfficePhone $_.PhoneNumber -PostalCode $_.PostalCode -StreetAddress $_.StreetAddress -State $_.State -EmailAddress $_.Primaryaddress.Split(«:»)[1] -Title $_.Title -Path «OU=Not_sync_users,OU=CORP,DC=domain,DC=com» -AccountPassword (ConvertTo-SecureString «ВашПароль» -AsPlainText -force) -Enabled $False -PassThru
$proxy = $_.ProxyAddresses -split ‘;’
Set-ADUser -Identity $_.UserPrincipalName.Split(«@»)[0] -Add @{proxyAddresses= $proxy}
}

Так как у облачных пользователей нет SAM атрибута, но в On-prem AD это обязательный атрибут, в качестве SAM берется атрибут UserPrincipalname из таблицы и выбирается массив с названием пользователей

$_.UserPrincipalName.Split(«@»)[0]

Далее осталось включить пользователей, перенести их в OU, где происходит синхронизация с облаком и дождаться обновления пользователя на портале, его статус изменится на «Sync…».

 

 

Рубрики:Office 365