Exchange 2010 обновление адресной книги в Outlook или куда подевался сотрудник?

Доброго дня.
Бывает такая ситуация, когда пропадает запись о сотруднике (у меня пропала группа, но это не важно) из адресной книги. И вот как решить такую задачу, опишем в этом посте.
Для начала посмотрим аттрибуты объекта в AD. Аттрибут в AD должен называться showInAddressBook. Кто невкурсе — в mmc -> View -> Detail ADattr
Этот аттрибут говорит нам в какой адресной кнге должен присудствовать этот пользователь/группа. Последнего параметра у меня небыло, я его скопировал из другой группы, которая нормально отображатеся в адресной книге.
На этом проверка в AD Заканчивается. Приступаем к работе с Exchange.
В Exchange будем пользоваться EMS. И первая команда — это обновление глобального списка адресов (GAL). Все (ну почти все) что относится к почте в AD сначало попадает в GAL.

Get-GlobalAddressList | Update-GlobalAddressList

Далее вторым по списку идет обновление offline Adrress Book (OAB) — сюда данные попадают из GAL

Get-OfflineAddressbook | Update-OfflineAddressbook

Заключительный шаг — получение всех клиентов и рассылка им обновленной OAB, тип кстати можно не указывать

Get-ClientAccessServer | Update-FileDistributionService -Type "OAB"

Теперь на клиенте, следует обновить адресную книгу или загрузить ее по новой.

pfsense + squid + LDAP + AD

Попытаюсь рассказать как я решил проблему установки и настройки pfsense на Hyper-V 2012, а так же организовать аутентификацию через LDAP для разграничения прав доступа к сайтам по группам из AD. Используем pfsense 2.1.4-RELEASE (amd64) built on Fri Jun 20 12:59:50 EDT 2014. Из трудностей которые возникли это то что pfsense после установки не хотел видеть виртуальные интерфейсы, которые использует Hyper-V Core 2012 по умолчанию. Решение данного вопроса — поставить «устаревшие виртуальные интерфейсы», но они не поддерживают VLAN, зато pfsens их видит. На этом неприятности с интерфейсами не заканчиваются. ОС pfsense видит сетевые интерфейсы (de0 и de1), но трафик через них не ходит. Это какой то баг не совместимости. Для решения — просто выключаем/включаем интерфейсы из консоли pfsenseifconfig de0 down|up. После этого интерфейсы начинают работать. Далее из пакетов ставим squid 2. Нам надо настроить авторизацию пользователей через LDAP: в принципе как это сделать написано на каждом заборе, но тут тоже есть свои нюансы. 260920161109 Нюанс заключается вот в чем, для поиска пользователей в разных контейнерах требуется рекурсивный запрос. Для этого надо выставить ключ ‘-R’. Некоторые предлагают подправить конфиг pfsense. Я же придерживаюсь более консервативных взглядов «не лезть внутрь без надобности». По этому предлагаю вам выставить данный ключ после имени доменного пользователя как на скриншоте.
Немного о параметрах:
LDAP server user DN — тут нужен самый простой пользователь, он имеет право на чтение AD.
LDAP base domain — тут указывается домен «dc=domain,dc=local»
LDAP username DN attribute — этот параметр соответствует атрибуту в AD. Обычно там полностью ФИО пользователя. Смутно представляю для чего нужен этот параметр.
LDAP search filter — sAMAccountName тоже атрибут AD, в него передается параметр ‘%s’ в котором лежит логин пользователя.
Вконце концов чтобы отладить все свои параметры, потребуется отладка через shell. Должно получиться примерно вот что:

1
2
3
 /usr/pbi/squid-amd64/libexec/squid/squid_ldap_auth -v 3 -b "dc=terra,dc=local" -D test1@terra.local -R -w p@ssw0rd -f "sAMAccountName=%s" -u cn -P 192.168.100.201:389
test2 p@ssw0rd2
OK

Второй строчкой вводится логин и пароль пользователя, при правильных действиях должны получить значение ОК.
Ну вот вроде теперь пользователи могут авторизоваться на сервере squid и можно вести логирование трафика по доменному имени пользователя. Но есть следующая задача, ограничить некоторых пользователей в доступе к внешним ресурсам. Для этого нам понадобиться перейти на вкладку General. И в поле ввода Custom Options вводим параметры, первая строка:

external_acl_type myextgroup1 ttl=12 %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -d -b "dc=terra,dc=local" -f "(&(objectclass=user)(sAMAccountName=%v)(memberOf=cn=%a,OU=Users,OU=MyBusiness,DC=terra,DC=local))" -D squid@terra.local -K -w p@ssw0rd 192.168.100.201

external_acl_type — указывает squid’у что будет использоваться внешний acl
myextgroup1 — название расширенной acl
objectclass=user — мы же ищем пользователя? (атрибут AD)
sAMAccountName=%v — В параметр %v передается логин из %LOGIN (атрибут AD)
memberOf=cn=%a — В параметр %a передается название группы
ttl=12 — новый пользователь в группе, по умолчанию может начинать работать через 3600 секунд (1 час), делаем что через 12 секунд
-K — «обрезает» часть имени @domain и позволяет корректно сравнивать имя пользователя и группу.
Еще один момент, пользователь squid@terra.local должен обладать большими правами, чем обычный пользователь, для чтения групп, паролей.
Задаем acl который будет передавать название группы в переменную %a.Вторая строка:

acl mygroup1 external myextgroup1 AllowAllInet

AllowAllInet — название группы AD
myextgroup1 — название расширенной группы
mygroup1 — простая группа с которой будет работать squid
Создаем acl с социальынми сетями:

acl socialnet dstdomain vk.com odnoklassniki.ru facebook.com facebook.ru

Ну и теперь запрещаем нашей группе выход в соц. сети:

http_access deny mygroup1 socialnet

Ну вот и все. Как сделать еще две группы? … написать эти же правила еще ДВА раза.

Ссылки достойные внимания по этому вопросу:
http://www.k-max.name/linux/squid-auth-kerberos-ldap-grupp-active-directory/
http://www.thin.kiev.ua/router-os/50-pfsense/537-pfsense-20squid-ldap-ad-.html

Очистка корзины через командную строку (cmd, powershel)

В Hyper-V Core где нет GUI интерфейса, потребовалось очистить «корзину» с удаленными файлами.

Создадим bat файл и вводим туда код:

@ECHO OFF
start /b /wait powershell.exe -command "$Shell = New-Object -ComObject Shell.Application;$RecycleBin = $Shell.Namespace(0xA);$RecycleBin.Items() | foreach{Remove-Item $_.Path -Recurse -Confirm:$false}"

Как выставить в календарях у всех пользоватлей Exchange 2010 одинаковый шаблон?

Есть задача, выставить у всех пользователей Exchange 2010 в календарях одинаковые праздничные дни и может быть какие то заметки.
Сначала открываем EMC. И через нее даем права на импорт и экспорт *.pst файлов пользователю

ManagementRoleAssignment -Role "Mailbox Import Export" - User user@domen

Нужно создать нового тестового пользователя (test1) на почтовом сервере. Он нам нужен для того чтобы в его чистом календаре выставить нужные нам отметки и даты. Когда мы это сделали, то следует приступить к выгрузки календаря пользователя test1:

New-MailboxExportRequest -Mailbox test1 -FilePath C:\filename.pst -IncludeFolders "#Calendar#"

И так, шаблон календаря у нас есть, а вот списка пользователей которым нужен этот шаблон, у нас нету. Для этого выгрузим все Алиасы почтовых ящиков в CSV файл.

Get-Mailbox | select alias, whencreated | Export-CSV -Path "C:\AliasFile.csv" -NoTypeInformation -Delimiter ";"

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

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

Import-CSV -Path "C:\AliasFile.csv" -Delimiter ";" | foreach-object {New_MailboxImportRequest -Mailbox $_.Alias -FilePath C:\filename.pst -IncludeFolders "#Calendar#"}