Отправка через Client Frontend коннектор в Exchange 2013 для трастовых пользователей

Для отправки сообщений от почтовых клиентов по SMTP с авторизацией в Exchange используется отдельный коннектор, который называется Client Frontend. Он использует стандартный для Submission порт 587 и предоставляет возможность авторизоваться для отправки сообщений. Однако здесь есть небольшая проблема. В случае, когда отправку через этот коннектор пытается осуществить пользователь с Linked-ящиком, который авторизуется в другом лесу по доверию (типичная картина для ресурсного леса), используя SMTP-клиент (например Thunderbird), возникает ошибка вида:

550 5.7.1 Client does not have permissions to send as this sender

Самое интересное, что по IMAP или POP3, клиент при этом будет корректно авторизоваться.

Для того, чтобы устранить эту проблему, необходимо явно выдать права. Однако не на коннектор, что кажется вполне логичным (я сам долго и упорно смотрел в этом направлении), а на отключенный объект в ресурсном лесу. Оказывается на нем не хватает разрешения «Send as» для учетной записи из леса с учетными записями, а ведь именно от ее имени и должна осуществляться отправка с точки зрения коннектора. Так что для устранения данной проблемы достаточно просто предоставить право «Send as» для учетной записи из леса учетных записей на отключенную учетную запись в ресурсном лесу. Можно, например, сделать это через оснастку «Active directory Users and Computers» с помощью вкладки «Безопасность» 🙂

sendas

Реклама

Скрипт отключения неактивных сессий в 1С

Часто возникает задача автоматического отключения неактивных пользовательских сеансов в 1С.

Для того, чтобы выполнять эту процедуру по расписанию можно воспользоваться средствами, предоставляемыми COM-интерфейсом 1С. Такой подход позволяет использовать штатные механизмы 1С в сочетании с родными для ОС средствами автоматизации.

Пример скрипта на PowerShell, выполняющего отключение сеансов по расписанию:

# Переменные.
$server1C = «<Имя сервера>»
$bases = («<База1>»,»<База2>»)
$timeDelay = -10
$logFile = «<Путь к файлу лога>»
# Создается COM-объект подключения к 1С.
$connector = New-Object -Comobject «V83.COMConnector»
# Подключение к агенту на сервере.
$AgentConnection = $connector.ConnectAgent($server1C)
# Выбор кластера. Сейчас используется только один кластер, поэтому просто получаем единственный элемент.
$Cluster = $AgentConnection.GetClusters()[0]
# Авторизация.
$AgentConnection.Authenticate($Cluster,»»,»»)
# Для заданного списка баз в цикле получаем списки сессий и обрабатываем их.
foreach ($base in $bases)
{
$sessions1CtoTerminate = ($AgentConnection.GetSessions($Cluster) | Where-Object {$_.Infobase.Name -eq $base -and $_.AppId -ne «SrvrConsole» -and $_.AppId -ne «BackgroundJob» -and $_.LastActiveAt -lt ((Get-Date).AddHours($timeDelay))})
foreach ($session in $sessions1CtoTerminate)
{
$sessionToKillMsg = «Session ‘» + $session.infoBase.Name.ToString() + » — » + $session.userName.ToString() + » — » + $session.Host.ToString() + » — » + $session.AppID.ToString() + » — » + $session.StartedAt.ToString() + » — » + $session.LastActiveAt.ToString() + «‘ has been terminated at » + (Get-Date).ToString()
echo $sessionToKillMsg >> $logFile
$AgentConnection.TerminateSession($Cluster,$session)
}
}

Данный скрипт осуществляет отключение всех сессий, период неактивности для которых, составляет более 10 часов. При этом осуществляется дополнительная фильтрация и сессии административной консоли и фоновых заданий не отключаются. За это отвечают условия:

-and $_.AppId -ne «SrvrConsole» -and $_.AppId -ne «BackgroundJob»

 

Фильтрация по времени осуществляется с помощью условия:

-and $_.LastActiveAt -lt ((Get-Date).AddHours($timeDelay))

Get-Date возвращает текущее время, а его метод AddHours позволяет получить значение времени на 10 часов назад, просто добавив отрицательное смещение (-10 часов).

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

COM- интерфейс для 1С нельзя назвать очень богатым, однако практически все необходимые действия он позволяет выполнять. При работе из PowerShell можно использовать командлет Get-Member для просмотра свойств и методов COM-объектов. Единственный момент — некоторые свойства будут самостоятельными объектами, как, например свойство «Infobase» у сессии. Это самостоятельный объект, поэтому не стоит забывать, что для того, чтобы посмотреть, например, имя информационной базы из сессии не достаточно просто обратиться к свойству «Infobase», а необходимо обращаться к уже вложенному свойству «Infobase.Name»

Ну и еще одна тонкость — необходимо следить за разрядностью приложений. Так, например, если запустить PowerShell x64 и попытаться обратиться к x86 COM-объекту, то произойдет ошибка. В этом случае, можно запустить x86 PowerShell для корректной работы (он находится по следующему пути — %SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe).

Небольшая особенность GAL и RecipientFilter или не отображаются вложенные группы

Microsoft определяет GAL, как хранилище записей о группах, пользователях, контактах в организации Microsoft Exchange:

The global address list (GAL) is a directory that contains entries for every group, user, and contact within an organization’s implementation of Microsoft Exchange.

Механизм работы с GAL достаточно гибкий и позволяет гранулировано управлять попаданием объектов в глобальный список. А добавленная в Exchange 2010 технология Address Book Policy, позволяющая осуществлять разделение адресных книг, значительно расширила возможности работы с адресными книгами.

Это хорошо видно на примере командлета New-GlobalAddressList, который создает новый GAL Так, данный командлет позволяет задать фильтр, который будет определять, какие объекты попадут в созданный GAL. На странице документации приведен пример такого фильтра:

New-GlobalAddressList -Name GAL_AgencyB -RecipientFilter {((RecipientType -eq "UserMailbox") -and (CustomAttribute15 -eq "AgencyB"))}

В данном случае, в создаваемый GAL попадут все объекты класса UserMailbox (почтовые ящики) у которых в Active Directory атрибут «CustomAttribute15» имеет значение «AgencyB».

И вот тут кроется одна маленькая особенность. Если GAL будет создан подобным образом, то он не будет содержать другие объекты, например группы. Для того, чтобы можно было увидеть группы, обычно создается дополнительный список адресов с помощью командлета New-AddressList. Однако, если в этой ситуации попытаться просмотреть членство в группах через адресную книгу Outlook, представленных в созданном адресном списке для групп, то можно обнаружить, что вложенное членство групп не отображается. То есть, например, если в группе существуют вложенные подгруппы, то с их отображением возникнет проблема.

Корни этой проблемы растут из фильтра GAL, заданного ранее, который ограничивает участие только объектами класса UserMailbox. Таким образом, в данной ситуации более правильным вариантом является вот такой фильтр:

((CustomAttribute15 -eq ‘AgencyB’) -and ((RecipientType -eq ‘UserMailbox’) -or (ObjectClass -eq ‘Group’)))

Для изменения уже существующего GAL можно воспользоваться командой:

Get-GlobalAddressList GAL_AgencyB | Set-GlobalAddressList -RecipientFilter «((CustomAttribute15 -eq ‘AgencyB’) -and ((RecipientType -eq ‘UserMailbox’) -or (ObjectClass -eq ‘Group’)))»

Подобный фильтр можно расширять, так, чтобы включить еще и контакты с переговорными, можно воспользоваться таким фильтром:

((CustomAttribute15 -eq ‘AgencyB’) -and ((ObjectClass -eq ‘Contact’) -or (RecipientType -eq ‘UserMailbox’) -or (ObjectClass -eq ‘Group’) -or (RecipientDisplayType -eq ‘ConferenceRoomMailbox’)))

Виртуальная машина с Exchange 2013 и обновление компонентов интеграции

В связке Windows Server 2012 R2 с Hyper-V в качестве хоста и виртуальной машины с Windows Server 2012 с установленным Exchange есть одна неприятная проблема. Обновление компонентов интеграции может привести к проблемам при старте машины. Типичная ситуация — после обновления гипервизора с 2012 до 2012 R2 или миграции виртуальной машины на хост с 2012 R2, в виртуальной машине присутсвует оригинальная версия компонентов интеграции, идущая в штатной поставке Windows Server 2012 (версия 6.2.9600.ххххх). В этом случае желательно выполнить обновление компонентов инеграции до актуальной версии (версия 6.3.9600.ххххх), чтобы были полностью доступны все возможности системы (например поддержка новой версии VSS). Однако при установке обновления компонентов интеграции, после перезагрузки сервер сервер надолго зависает, выдавая сообщение «Please wait». Данная проблема связана с конфликтом из-за попытки раннего старта служб Exchange в момент завершения обновления служб компонентов интеграции.

Простым решением для предотвращения подобной проблемы является временное отключение служб Exchange на момент обновления компонентов интеграции. Достаточно поставить всем службам режим «Disable» перед установкой, а после успешной перезагрузки вернуть их снова в автоматический режим.

ThinkPad и проблемы с сетью.

На ThinkPad T60 (судя по гуглу и на других синкпадах) можно получить интересную проблему, а именно не работающий сетевой адаптер. Сразу стоит отметить, что проблема актуально для Linux. Под Windows с этой проблемой я не сталкивался.

На T60 стоит обычный интеловский 82573L. В момент установки (проверено на Debian Jessie) сетевой адаптер не обнаруживается. После перезагрузки сетевой адаптер не доступен, хотя в списке оборудования присутсвует и в выоде lspci отображается:

02:00.0 Ethernet controller [0200]: Intel Corporation 82573L Gigabit Ethernet Controller [8086:109a]

За работу с данным адаптером отвечает модуль e1000e. Если его выгрузить и попытаться загрузить заново («rmmod e1000e» и «modprobe e1000e»), то появится ошибка:

NVM checksum is not valid

Судя по ошибке, проблема вызвана некорректными данными в EEPROM сетевой карты.

В качестве решения в данной ситуации выступает сброс параметров с помощью интеловской утилиты BootUtil. Утилита входит в этот пакет — https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=19186&lang=eng

Команда для сброса — bootutil32 -DEFCFG -all (или bootutil64e для 64-х битной системы).

Перед сбросом также не лишним будет обновить BIOS. Последнюю версию можно загрузить здесь — http://support.lenovo.com/en_US/downloads/detail.page?&LegacyDocID=MIGR-63027

P.S. Отличное wiki по синкпадам — http://www.thinkwiki.org

 

Статический IP для iLo

В случае, если есть необходимость выставить статический IP-адрес для iLo, а доступ есть только к OnBoard Administrator’у, можно сделать так:

1. Подключение по ssh к OnBoard Administrator.

2. Подключение к консоли:

connect server <Bay_no> (здесь <Bay_no> — номер отделения, в котором находится нужный сервер)

3. Отключение DHCP:

set /map1/dhcpendpt1 EnabledState=no

4. Настройка статического адреса:

set /map1/enetport1/lanendpt1/ipendpt1 ipv4address=<IP_Address> subnetmask=<Netmask>

5. Настройка шлюза по умолчанию:

set /map1/gateway1 AccessInfo=<GateWay_IP>

 

c3000 в картинках

За коммутацию блейд серверов отвечают модули интерконнекта, установленные в шасси. Шасси c3000 позволяет установить до четырех модулей интерконнекта. Установка осуществляется в специальные отделения, расположенные на задней стороне шасси.

c300rear

Читать далее