среда, 5 ноября 2014 г.

VMware vCenter Converter Standalone 5.0 низкая скорость копирования

Последние 2 месяца занимаюсь Physical to Virtual миграцией огромного количества серверов c физического железа и Hyper-V в виртуальную инфраструктуру VMware vSphere 5.
Все миграции проводятся с помощью VMware vCenter Converter Standalone 5.0 и в процессе работы с ним проявляются очень интересные штуки, которые приходится разгребать «не отходя от кассы» в очень оперативном режиме.
О некоторых артефактах, и о методах их устранения и попытаюсь рассказать.
Одной из проблем стала очень низкая скорость передачи данных (600КБ — 2МБ/сек) во время миграции некоторых серверов, при пропускной способности сети — 1Gb.
Для небольших объемов время копирования 1-2 часа еще было терпимым, когда для одного серверов конвертор выдал прогноз в 15 часов, мне это мягко говоря не понравилось :)
Протестировав скорость сети и поняв, что не в сети дело, я сразу стал грешить на дисковую подсистему, но как оказалось это и не в дисках дело…
Была замечена особенность, что данная проблема возникает только с Windows XP и 2003 Server (так и не удалось выяснить почему), из этого последовал вывод что проблема в софте.
В общем не буду долго тянуть кота за …. хвост, проблема маленькой скорости оказалась в самом конверторе, а решением этой проблемы стало отключение шифрования передаваемого трафика в настройках этого самого VMware vCenter Converter Standalone.
Как это сделать? Да очень просто!
Ищем файлик с чудесным названием converter-worker.xml и правим его с помощью вашего любимого редактора (по-умолчанию блокнотом).
Найти этот файлик можно в таких местах:
Windows 7, Windows Vista, Windows 2008 (R2) — C:\ProgramData\VMware\VMware vCenter Converter Standalone
Windows XP, Windows 2003, Windows 2000 — C:\Documents and Settings\All Users\Application Data\VMware\VMware vCenter Converter Standalone
Вот теперь в этом файлике ищем что-то такое:
<nfc>
   <readTimeoutMs>120000</readTimeoutMs>
   <useSsl>true</useSsl>
   <!-- Delay is specified in milliseconds, -1 denotes the default.
   <acceptTimeoutMs>-1</acceptTimeoutMs>
   <requestTimeoutMs>-1</requestTimeoutMs>
   <readTimeoutMs>-1</readTimeoutMs>
   <writeTimeoutMs>-1</writeTimeoutMs>
   <fssrvrReqTimeoutMs>-1</fssrvrReqTimeoutMs>
   <fssrvrWriteTimeoutMs>-1</fssrvrWriteTimeoutMs>
   -->
</nfc>
И делаем из него что-то такое:
<nfc>
   <readTimeoutMs>120000</readTimeoutMs>
   <useSsl>false</useSsl>
   <!-- Delay is specified in milliseconds, -1 denotes the default.
   <acceptTimeoutMs>-1</acceptTimeoutMs>
   <requestTimeoutMs>-1</requestTimeoutMs>
   <readTimeoutMs>-1</readTimeoutMs>
   <writeTimeoutMs>-1</writeTimeoutMs>
   <fssrvrReqTimeoutMs>-1</fssrvrReqTimeoutMs>
   <fssrvrWriteTimeoutMs>-1</fssrvrWriteTimeoutMs>
   -->
</nfc>
Файлик сохраняем и закрываем редактор. После чего перезапускаем службу VMware vCenter Converter Standalone Worker.
Для тех кто в танке:
Win + R -> services.msc
там ищем VMware vCenter Converter Standalone Worker -> правой кнопкой «Restart»
После таких манипуляций скорость копирования возросла в примерно в 30-40 раз :) И машинка мигрировалась вместо 15 часов — минут 40 (на скорости 30-35 МБ/сек).
Как уже и говорил, данная проблема была замечена только на Windows XP и 2003 Server, так и не удалось разобраться почему…
Но даже на более новых версиях винды (2008 R2 например), скорость передачи данных с использованием шифрования составляет всего 20-25 МБ/сек, что далеко не гигабит.
Поэтому, советую в любом случае отключать шифрование в VMware vCenter Converter Standalone, если оно вам не нужно, конечно же :)

Быстрый перенос контактов с Android на iOS



Первый iPhone появился на рынке еще 7 лет назад. Кто-то приобщился к числу владельцев первого смартфона от Apple сразу и остается верным платформе iOS вплоть до сегодняшнего дня. Для кого-то же магазин App Store, приложение iTunes и закрытая операционка по-прежнему являются «вещами отдаленными и непонятными».
Что самое ценное в вашем смартфоне? Фотографии? Музыка? С появлением облачных хранилищ, боязнь утери сотен «фоток» в прошлом, а восстановление скачанных/приобретенных композиций вряд ли станет большой проблемой. А вот с контактами и номерами телефонов, в случае вынужденной миграции с Android на iOS, все несколько сложнее. Или нет?
Вы стали обладателем iPhone и старенький Android-смартфон уже готов отправиться припадать пылью в дальний угол шкафа? Но перед этим нужно перенести контакты. В магазине приложений App Store и Google Play существует немало сопутствующего софта, позволяющего синхронизировать контакты. Но зачем усложнять себе жизнь. если все можно сделать штатными средствами.

Что делать на Android-смартфоне

    1. Открываем Контакты.
    2. Вызываем «контекстное меню».
    3. Выбирает пункт Экспортировать контакты.


    4. В качестве директории, в которую будет экспортироваться VCF-файл, содержащий все ваши контакты, можно выбрать как SD-карту, так и внутреннюю память телефона.


Если у вас установлен файловый-менеджер, поддерживающий отправку файлов по почте, отправьте экспортированную карточку VCF на свой электронный ящик. В случае отсутствия менеджера – копируем VCF на компьютер (по шнурку/Bluetooth) и отсылаем на свой почтовый ящик.

Что делать на iPhone

    1. Открываем родное приложение Почта.
    2. В полученном письме открываем файл VCF.
    3. Добавляем контакты.


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

четверг, 30 октября 2014 г.

Почтовый сервер Ubuntu 10.04+iRedMail (Включает в себя: Postfix, Dovecot, Amavisd, ClamAV, SpamAssassin, RoundCube)

Данное руководство, только для Ubuntu 10.04, его обновленный вариант, совместимый с Ubuntu 11.10 можно прочитатьперейдя по данной ссылке

Upd: Данная почтовая система отлично работает совместно с Active Directory, о том как ее настроить, можно прочитать в статье-Интеграция почтового сервера iRedMail с Active Directory (Windows Server 2003/2008/2008R2)

Вопросом, как настроить почтовый сервер, задавались многие-а еще чтобы сразу устанавливалось все из коробки, требовало минимальных настроек. Для решения этой проблемы существует платформа Zimbra, но ее перенос на Ubuntu 10.04 как-то затянулся и прибывает в состоянии beta версии для платформы AMDx64, а устанавливать Ubuntu 9.10 что-то не хочется. Тут мне встретилось, упоминание о iRedMail текущая версия доросла до 0.6.1. Кстати, эта платформа, доступна и на других дистрибутивах Linux.

С помощью этого руководства, вы сможете настроить почтовый сервер с web интерфейсом управления почтой, а также администрирования учетных записей пользователей, установки квот на размер почтовых ящиков, проверка антивирусом поступающей корреспонденции и антиспам фильтр + возможность подключатся из почтовых программ с как с использованием SSL, так и без него. Эта система может стать полноценной заменой, тех что продаются за вполне сумасшедшие деньги. С опытом работы, пришло понимание того, что большинству компаний необходим простой почтовый сервер, в котором есть список всех пользователей компании-чтобы не держать e-mail адреса коллег в голове или где-то еще. Можно, конечно, взгромоздить Exchange, предварительно купив лицензию на северную ОС, а большинство пользователей будут пользоваться только для отправки почты используя его возможности примерно на 30%.

Чтобы все это развернуть, понадобится, примерно, 20 мин времени-при условии, что у вас шустрый интернет!

Пред началом настройки необходимо выполнить ряд несложных настроек:
Доменное имя почтового сервера mail.example.org-исключительно в целях ознакомления!
IP адрес: 172.16.0.100 (Либо реальный IP выданный провайдером)
LDAP suffix: dc=example,dc=org-также, исключительно тестовый вариант!

Перед началом установки обновим систему:
sudo apt-get update
sudo apt-get upgrade

Настраиваем имя хоста:
Заходим как root
sudo su
nano /etc/hostname

назовем его в mail, сохраняем изменения выходим

Добавим имя нашего сервера в файл hosts
nano /etc/hosts

Необходимо добавить наш IP и доменное имя, сразу под строку
127.0.0.1       localhost172.16.0.100  mail.example.org    mail


Проверяем настройки:
cat /etc/hosts


Получаем:
127.0.0.1       localhost172.16.0.100   mail.example.org    mail


cat /etc/hostname

должно выдать:
mail


Необходимо перезагрузить систему:
reboot


После перезагрузки, снова заходим в качестве суперпользователя:
sudo su
hostname -f


Должно выдать:
mail.example.org


Переходим, непосредственно, к установке платформы.

Скачиваем свежую версию, которую можно посмотреть на сайте разработчика

На момент написания была доступна следующая версия:
wget http://iredmail.googlecode.com/files/iRedMail-0.6.1.tar.bz2


распаковываем архив
tar jxvf iRedMail-0.6.1.tar.bz2


Переходим в директорию созданную после распаковки
cd iRedMail-0.6.1/pkgs/ 


Выкачиваем пакеты необходимые для уставноки
bash get_all.sh


Приступаем к установке
cd ..
bash iRedMail.sh


После этого начнется закачка необходимых пакетов.
В открывшимся меню установки выбираем Yes



Выбираем директорию в которой будут храниться почтовые ящики пользователей:



Для хранения данных о пользователях iRedMail может использовать OpenLDAP или MySQL, в нашем случае OpenLDAP является более предпочтительным



Задаем LDAP суфикс в нашем случае: dc=example,dc=org



Задаем пароль, для администрирования каталога LDAP:



Указываем название первого виртуального домена у нас это -example.org



Будет автоматически создан пользователь postmaster@example.org которому нужно будет придумать пароль.
(Внимание: Этот пользователь будет обладать правами на управление почтовым сервером-добавление новых доменов, а также добавление и удаление пользователей)


также, автоматически, создается первый пользователь системы с именем www@example.org которому также необходимо придумать пароль.



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



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



У нас спросят, действительно мы хотим продолжать, смело пишем Y



Начнется закачка дополнительных пакетов, по окончанию установки продолжаем.
(Необходимо будет выкачать, примерно, 80Mb.)

После этого, нас попросят ответить на 3 вопроса, везде отвечаем Yes:

File: /etc/default/iptables, with SSHD port:22 [Y|n] <-Y

Restart firewall now (with SSHD port: 22) [y|N] <-Y

Would you like to start postfix now? [y|N]<-Y


Обновляем ClamAV, возможно, потребуется перезагрузка!
Freshclam


Пробуем зайти на наш свеже-установленный почтовый сервер.
Переходим по адресу: mail.example.org/mail –здесь находится интерфейс входа в почтовый ящик. Имя пользователя www@example.org пароль, тот который мы указали при установке IRedMail.



Интерфейс почтового ящика будет выглядеть так:



Для добавления пользователей и доменов заходим по адресу httрs://mail.example.org/iredadmin
Интерфейс очень понятен, хоть и сделан на английском (кстати его можно расширить, за 99$ можно получить еще кучу различных функций, но для нормальной работы хватит и бесплатной версии)
Имя пользователя postmaster@example.org


Почтовые домены добавляются в разделе Domains


Пользователи в разделе Users, можно указать отображаемое имя в системе e-mail адрес, он также будет являться именем пользователя для входа в почтовый ящик, пароль и квоту на размер почтового ящика


Если потребуется создать нового администратора почтовой системы, то это можно сделать в разделе Admins, по умолчанию он один.


Чтобы не забыть, где находятся входы в WEB интерфейсы управления сервером, в почтовом ящике пользователя www@example.org лежит письмо с темой: iRedMail tips for mail server administrator, в нем содержатся все явки и пароли, по этому, после ознакомления его необходимо удалить или сохранить в безопасном месте.
(на скриншоте помечено красным!)



На этом можно было бы и закончить настройку, но большинство пользователей, по личному опыту знаю, не запомнят, что нужно заходить mail.example.org/mail чтобы попасть в свой почтовый ящик. По этому, мы сделаем, чтобы форма входа открывалась при входе mail.example.org

Все статические файлы наших web интерфейсов лежат в /usr/share/apache2
Нам достаточно скопировать содержимое директории roundcubemail-0.3.1 в корневую директорию web сервера Apache, предварительно удалив все ее содержимое.
Удаляем все содержимое директории /var/www/-там всего 2 файла index.html и robots.txt они ни на что не влияют.

rm /var/www/*


Копируем содержимое roundcubemail-0.3.1

cp -a /usr/share/apache2/roundcubemail-0.3.1/ /var/www/


Теперь перейдя по адресу mail.example.org нам сразу будет открывается web интерфейс входа в почту.
У нас получился шикарный почтовик с адресной книгой и глобальным списком адресов пользователей каждого домена, этому серверу можно прикрутить еще кучу доменов.
Чтобы все заработало как нужно, необходимо создать MX записи DNS и после этого наш сервер сможет принимать и отправлять почту другим пользователям сети, а также анализировать всю входящую корреспонденцию на наличие спама и проверять почтовые вложения антивирусом.
Кстати к нему можно будет подключаться и почтовыми программами типа Outlook, The Bat и др. Чтобы нормально работала отправка в свойствах учетной записи необходимо указать -Проверка подлинности отправителя.
И на последок, если появится необходимость отключить антивирус и антиспам, то необходимо отредактировать /etc/amavisd.conf раскоментирвать строки -1 означает Отключено

# @bypass_virus_checks_maps = (1);  # controls running of anti-virus code
# @bypass_spam_checks_maps  = (1);  # controls running of anti-spam code
# $bypass_decode_parts = 1;         # controls running of decoders&dearchivers


Если появится необходимость создать собственный SSL сертификат, то можно использовать готовый скрипт
который необходимо скачать

wget http://iredmail.googlecode.com/hg/iRedMail/tools/generate_ssl_keys.sh


редактируем его, вписав свои значения (необходимо отредактировать только секцию SSL)

# SSL key.
export SSL_CERT_FILE="${ROOTDIR}/certs/iRedMail_CA.pem"
export SSL_KEY_FILE="${ROOTDIR}/private/iRedMail.key"
export TLS_COUNTRY='CN'
export TLS_STATE='GuangDong'
export TLS_CITY='ShenZhen'
export TLS_COMPANY="${HOSTNAME}"
export TLS_DEPARTMENT='IT'
export TLS_HOSTNAME="${HOSTNAME}"
export TLS_ADMIN="root@${HOSTNAME}"


запускаем его:
bash generate_ssl_keys.sh


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

/etc/ssl/private/iRedMail.key /etc/ssl/certs/iRedMail_CA.pem


Включение GREYLISTING, необходимо отредактировать

nano /etc/postfix-policyd.conf


#   1=on  0=off 
GREYLISTING=1  


Вот теперь точно все.

Интеграция почтового сервера iRedMail (Ubuntu/Debian) с Active Directory (Windows Server 2003/2008/2008R2 ) ( в одном пространстве имен!)

     Что-то я дано ничего путного не писал, на этот раз, я расскажу как интегрировать iRedMail и MS Windows Server с Active Directory на борту. Допустим, у вас есть небольшого или среднего размера компания, в ней уже есть контроллер домена (AD DC) и все функционирует как надо, но через некоторое время, появляется необходимость в настройке корпоративного почтового сервера.Необходимо подобрать будущую платформу для почтовой инфраструктуры, если руководствоваться соображениями разумного минимализма, то замену MS Exchange, можно найти в лице iRedMail, еще и бесплатной. Правда тут появляется один момент, что придется настраивать руками учетные записи пользователей в службе каталогов (Active Directory), а затем, создавать почтовые ящики на почтовом сервере и все это руками, в этой ситуации, обязательно возникнут сложности с пользователями и паролями (на вход в систему один пароль, на вход в почту другой), железобетонным, решением данной проблемы, будет интеграция этих систем между собой.


Для чего это нужно?!
Служба каталогов (Active Directory) представляет из себя централизованную базу хранения пользовательских данных и иных объектов, которая может обеспечить проверку подлинности пользователей. По сути, у нас уже есть база данных, с заполненной информацией о пользователях с сохраненными, в виде хешей, паролями и другими данными. Так почему ее не использовать?! Но переносить данные руками-совершенно не правильно, нам необходимо, этот процесс автоматизировать. Идея довольно проста, при попытке входа в почту, введенные данные пользователя будут пересылаться, для проверки подлинности, на контроллер домена, он, в свою очередь, проверив введенный пользователем пароль, разрешает вход или не разрешает- если пароль не верен, предположим, что введенный пароль верен, то пользователь получит доступ к своей почте.
У данной системы есть несомненный плюс, пользователю достаточно знать пароль, от собственной учетной записи, в Active Directory, в случае если он его забудет, то от вас, как от системного администратора, требуется его сбросить и пользователь снова может работать.
Как все это будет работать, я изобразил на схеме ниже:

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



Теперь, более подробно, о том, что я там изобразил.
У нас есть 2 сервера:
Сервер №1-Windows Server 2003/2008/2008R2 (с поднятыми ролями AD DC, DNS, NTP)
(данные службы присутствуют на любом контроллере домена!) с IP адресом 172.16.0.20 и ДНС именем DC1.example.org

Сервер №2-Linux (Ubuntu/Debian) сервер с установленной системой iRedMail (Postfix,OpenLDAP,RoundCube и прочее), который имеет IP адрес 172.16.0.100 и ДНС имя MAIL.example.org.
О том, как его поднять, я писал ранее в статье: Настройка почтового сервера iRedMail. Его необходимо только установить, никаких настроек делать, пока, не требуется.

Предполагается что оба сервера установлены и готовы к работе. Вся дальнейшая конфигурация представлена ИСКЛЮЧИТЕЛЬНО в тестовых целях, имена серверов, логины пользователей, IP адреса, пароли-необходимо заменить на свои, а пароли желательно вообще генерировать с помощью ПО, добавив им сложности!

Единственное ограничение — Dovecot воспринимает символ # как перенос, данный символ НЕЛЬЗЯ использовать в паролях!

Подготавливаем инфраструктуру к взаимодействию.

Поднимаем права до root:
В Ubuntu
sudo su

В Debian
su


нам необходимо добавить имя сервера в hosts
nano /etc/hosts


Добавляем туда:
172.16.0.20 dc1.example.org

Сохраняем изменения и выходим
Пробуем пинговать dc1.example.org
Если пинги, проходят все отлично! Если нет, то проверяем правильность написания и IP адрес контроллера домена.

Маленький, полезный, но не обязательный момент
Настроим синхронизацию времени почтового сервера с контроллером домена, это нужно для корректного отображения даты и времени получения писем, с другой стороны ничего не мешает использовать поставщиков времени в интернете, но если мы хотим получить полноценную систему, то лучше сделать это.
nano /etc/default/ntpdate

Находим строку и вписываемым туда DNS адрес контроллера домена:
NTPSERVERS="dc1.example.org"

Перезагружаем почтовый сервер, вуаля, все работает, время синхронизировалось.

Переходим на наш Windows Server 2003/2008/2008R2
Нам необходимо создать пользователя с именем iredmail, логином iredmail и паролем: password^1 Никаких админских прав, мы ему не даем-это важно! Его мы создаем в самом корне контроллера домена.

Чтобы путь к учетной записи в LDAP каталоге был cn=iredmail,dc=example,dc=org
Также, нам необходимо создать подразделение (Organization Unit), в нашей индустрии, его еще называют ОУшка-с ударением на У. Назовем подразделение personal путь в LDAP каталоге, будет иметь вид: ou=personal,dc=example,dc=org
Внутри подразделения personal, создадим 3 учетные записи, пользователей домена с паролем password@1 с именами:
Федя Мегатронов с логином megatronov и адресом электронной почты megatronov@example.org
Кеша Фуфлометов с логином fuflometov и адресом электронной почты fuflometov@example.org
Светлана Кукуева с логином kukueva и адресом электронной почты kukueva@example.org

Пути в каталоге LDAP, будут иметь вид:
cn=Федя Мегатронов,ou=personal,dc=example,dc=org
cn=Кеша Фуфлометов,ou=personal,dc=example,dc=org
cn=Светлана Кукуева,ou=personal,dc=example,dc=org

В этом подразделении, создадим группу распространения, allusers и электронной почтой allusers@example.org.
Вопрос на засыпку-какой путь в LDAP будет иметь данная группа?
В эту группу добавим трех наших пользователей.

Настраиваем сервер Linux

Протестуем соединение с LDAP:
ldapsearch -x -h dc1.example.org -p 389 -D 'CN=iredmail,DC=example,DC=org' -W

Enter password: Вводим пароль password^1

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

Меняем настройки транспорта для сообщений:
postconf -e transport_maps='hash:/etc/postfix/transport'


Изменим настройки транспорта:
nano /etc/postfix/transport


Добавим в него следующее:
mail.example.org dovecot


Экспортируем все это, в базу данных Postfix:
postmap hash:/etc/postfix/transport


Внесу ясность в происходящее! Нам необходимо разрешить поиск пользователей, групп и отправителей в Active Directory.
Теперь, нам необходимо настроить Postfix, чтобы он опрашивал Active Directory (В пойске учетных данных пользователей)

Указываем пользователя, от имени которого, будет выполняться опрос Active Directory ( по умолчанию, анонимные запросы к AD запрещены, их можно разрешить через политики безопасности, но это, очень хреновая идея, в плане безопасности!)
Подключаться к AD мы будем от имени пользователя iredmail (cn=iredmail,dc=example,dc=org) с паролем password^1, мы будем искать пользователей, которые находятся в аУшке personal (ou=presonal,dc=example,dc=org)
Нам необходимо отредактировать содержимое следующих файлов (то что там находится удаляем и заменяем на приложенное снизу)
nano /etc/postfix/ldap/virtual_mailbox_maps.cf


server_host     = dc1.example.org
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = cn=iredmail,dc=example,dc=org
bind_pw         = password^1
search_base     = ou=personal,dc=example,dc=org
scope           = sub
query_filter    = (&(objectclass=person)(userPrincipalName=%s))
result_attribute        = userPrincipalName
debuglevel      = 0


Разрешаем подключение к AD с целью поиска групп и их членов. (содержимое данного файла думаю понятно)
nano /etc/postfix/ldap/virtual_group_maps.cf


server_host     = dc1.example.org
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = cn=iredmail,dc=example,dc=org
bind_pw         = password^1
search_base     = ou=personal,dc=example,dc=org
scope           = sub
query_filter    = (&(objectClass=group)(mail=%s))
special_result_attribute = member
leaf_result_attribute = mail#result_attribute= userPrincipalName
debuglevel      = 0


Активируем поиск логинов отправителей в AD:
nano /etc/postfix/ldap/sender_login_maps.cf


server_host     = dc1.example.org
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = cn=iredmail,dc=example,dc=org
bind_pw         = password^1
search_base     = ou=personal,dc=example,dc=org
scope           = sub
query_filter    = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
result_attribute= userPrincipalName
debuglevel      = 0


Отредактируем main.cf
nano /etc/postfix/main.cf

Там нам необходимо найти и удалить строку:
check_policy_service inet:127.0.0.1:7777

Тестируем подключение к Active Directory


Проверка логина отправителя:
postmap -q megatronov@example.org ldap:/etc/postfix/ldap/sender_login_maps.cf

Должно выдать:
megatronov@example.org


Проверим разрешение членства в группе:
postmap -q allusers@example.org ldap:/etc/postfix/ldap/virtual_group_maps.cf

Должно выдать:
kukueva@example.org,fuflometov@example.org,megatronov@example.org

Если нет вывода то возможно 2 причины:
1) Не правильные данные для подключения к AD
2) В указанную группу не добавлены пользователи.

Нам также необходимо перенастроить Dovecot для запросов в Active Directory, все что там написано сотрем и записываем свое:
nano /etc/dovecot/dovecot-ldap.conf

Вставляем
hosts           = dc1.example.org:389
ldap_version    = 3
auth_bind       = yes
dn              = iredmail
dnpass          = password^1
base            = ou=personal,dc=example,dc=org
scope           = subtree
deref           = never
user_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs      = userPassword=password
default_pass_scheme = CRYPT
user_attrs      = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/


Квота на размер почтового ящика.
По умолчанию, iRedMail позволяет задавать квоты на размер почтового ящика, но перейдя с OpenLDAP на работу с AD эта возможность теряется, но мы можем указать дисковую квоту для всех пользователей, одним махом.
nano /etc/dovecot/dovecot.conf

Находим строку:
quota_rule = *:storage=1G

Это и есть размер почтового ящика для каждого пользователя- 1Гб.

Перезапускаем службы:
/etc/init.d/postfix restart/etc/init.d/dovecot restart

Создание пользователей на почтовом сервере:

Создавать пользователей, на почтовом сервере больше не требуется, достаточно на контроллере домена создать учетную запись с заполненным полем электронной почты, при первом подключении пользователя, его папка будет создана автоматически!
Алгоритм работы очень простой-создали учетку, лезем в почту. Все остальное, сделает сервер самостоятельно.

Почтовые ящики пользователей находятся в:
/var/vmail/vmail1/example.org/$userlogin

Эта информация вам пригодится, когда понадобится настроить резервное копирование почтовых ящиков пользователей!

Пробуем подключиться через telnet
telnet localhost 110

Получаем:
Trying 127.0.0.1…
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
Пишем туда:
user megatronov@example.org

Получаем:
+OK
Вводим пароль:
pass password@1

Получаем:
+OK Logged in.
Проверим количество писем( у меня там лежит 2 письма):
list

Получаем:
+OK 2 messages:
1 1554
2 1554
.
Отключимся от сервера:
quit

нам выдаст:
+OK Logging out.
Connection closed by foreign host.

Отлично, все работает.
Заходим через WEB интерфейс.
Пользователь: megatronov@example.org
Пароль:password@1
Пробуем подключиться под другими пользователям, с паролем, который мы указывали на сервере Windows- при создании учетных записей.
Нас должно пускать под всеми тремя!
Пробуем написать письмо, но тут нас ждет маленький сюрприз, авто заполнение получателя письма не работает, но мы напишем email ручками полностью и жмем отправить, заходи под пользователем которому мы отправили письмо, у него появилось новое письмо.
Приятным бонусом будет возможность входа по логину т.е. достаточно указать login пользователя, для примера:
login: megatronov
pass: password@1

Пользователь также получит доступ к почтовому ящику.
Но заполнять получателей руками это не есть гуд, прикрутим адресную книгу из Active Directory

Прикрутим адресную книгу:

nano /usr/share/apache2/roundcubemail/config/main.inc.php


Находим строку:
$rcmail_config['autocomplete_addressbooks']

Приводим ее к виду:
$rcmail_config['autocomplete_addressbooks'] = array("sql", "mail.example.org");


Далее, нам необходимо найти раздел:
// Global LDAP address book.


И привести его к виду, указанному ниже:
(Я специально ничего не удалал, а просто за комментировал строки, которые там были изначально и добавил свои, также слегка переделал порядок сортировки, теперь он идет по алфавиту)
Вставляем туда:
$rcmail_config['ldap_public']["mail.example.org"] = array(
    'name'          => 'Global AD Address Book',
    'hosts'         => array('dc1.example.org'),
    'port'          => 389,
    'use_tls'       => false,
// Search accounts in the same domain.
    'user_specific' => false, // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
    'base_dn'       => 'ou=personal,dc=example,dc=org',
    'bind_dn'       => 'cn=iredmail,dc=example,dc=org',
    'bind_pass'     => 'password^1',
    'writable'      => false, //запретим запись в AD
    'ldap_version'  => '3',
//    'search_fields' => array('mail', 'cn', 'givenName', 'sn'),
    'search_fields' => array('mail', 'cn', 'sAMAccountName', 'displayname', 'sn', 'givenName'),
//    'name_field'    => 'cn',

    'email_field'   => 'mail',
    'surname_field' => 'displayName',
    'firstname_field' => 'givenName',
//    'sort'          => 'cn',
    'scope'         => 'sub',
//    'filter'        => '(&(enabledService=mail)(enabledService=deliver)(enabledService=displayedInGlobalAddressBook)(|(objectClass=mailList)(objectClass=mailAlias)(objectClass=mailUser)))',
    'filter'        => "(mail=*@*)",
    'fuzzy_search'  => true);

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

Ну а теперь легкий тюнинг вида ящика. Слегка изменим порядок отображения колонок в почтовом ящике, лично мне нравится дефонтный порядок отображения колонок писем в Outlook, на мой взгляд, он удобный, по этому я решил привести отображение писем немного похожим на него.
Открываем файл:
nano /usr/share/apache2/roundcubemail/config/main.inc.php

находим строку:
$rcmail_config['list_cols'] = array

Закоментриуем ее и сразу под ней добавим, готовую строку:
$rcmail_config['list_cols'] = array('flag','attachment', 'from', 'subject', 'status', 'date', 'size' );

Важный и тонкий момент!

Поиск пользователей и скорость работы системы!
В данной статье, я указывал базу для поиска пользователей ou=personal,dc=example,dc=org, но ничего не запрещает вам опрашивать весь контроллер домена целиком расширив зону поиска до dc=example,dc=org, но есть одно НО! Время опроса получается очень большим, так Dovecot, при опросе всего LDAP каталога, пускает пользователя в почтовый ящик почти 1 минуту, это очень много, по этому я и сузил параметры поиска, так поиск учетных данных пользователя, происходит практически мгновенно. Обязательно попробуете это, в настройках указав адресной книге искать по всему LDAP dc=example,dc=org вы сразу увидите как долго идет поиск пользователей.

На этом все.
Обо всех найденных недостатках, ошибках и возможных улучшениях, а также, если просто возникли вопросы, прошу в комментарии.
Данная схема была протестирована на Windows Server 2008/2008R2 на Windows 2k3 все должно работать т.к. атрибуты учетных записей не изменились.
Статья была написана с использованием материалов:
iRedMail-WiKi Но видимо, она написана для совсем старой версии iRedMail.
А также форума, на сайте разработчиков. На котором написано как у них все здорово работает, но не написано как это сделать.