Вводные данные на начало установки:
- Сервер контроллера домена (он же сервер DNS и сервер времени:
Имя сервера: dc.rpn.loc
IP адрес: 192.168.20.105
REALM: RPN.LOC - Почтовый сервер:
Имя сервера: mail-ipa.rpn.loc
IP адрес: 192.168.20.107
Требуется: организовать почтовую систему для обмена почты внутри (в общем случае и внешнюю) организации.
У нас уже развернут домен на основе FreeIPA (от Microsoft мы отказываемся максимально возможно). Поэтому будем производить связку Zimbra и FreeIPA (в принципе Zimbra можно связать без особых проблем и с MS Active Directory).
- Будем считать, что ОС на будущий почтовый сервер мы уже установили в минимальном варианте. Делаем первоначальные настройки.
Запрещаем работу Selinux. Для этого вносим в файл /etc/selinux/config параметр:SELINUX=disabled
Вносим изменения в файл /etc/hosts:127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.20.107 mail-ipa.rpn.loc mail-ipa
Останавливаем и запрещаем любые почтовики (Postfix, sendmail и т.д.)systemctl stop postfix systemctl disable postfix
Сразу настраиваем локальный фаервол для доступа на сервер почтовых клиентов и администраторов и перезагружаем сервер:# firewall-cmd --permanent --add-port={25,80,110,143,389,443,465,993,995,7025,7071,7780,8443}/tcp # firewall-cmd --reload # reboot
-
Установка необходимого ПО.
В репозитариях для ОС Rosa Cobalt нужного пакета нет. Он присутствуют только на установочном диске. Поэтому нам нужно сначало смонтировать этот диск в директорию /mnt и начать установку необходимого ПО# mount /dev/cdrom /mnt # yum install bind-utils ipa-client zcs
- Регистрируемся в домене в качестве рядового сервера:
# ipa-client-install --realm=RPN.LOC --mkhomedir --enable-dns-updates
- После того, как сервер зарегистрировался в домене FreeIPA на сервере DNS должны появится записи типа A и PTR, соответствующие этому серверу. Для функционирования почтового сервера нам необходимо в DNS добавить так же запись типа MX для зоны rpn.loc. Для этого переходим в консоль контроллера домена и выполняем команды:
# kinit admin # ipa dnsrecord-add rpn.loc @ --mx-preference=10 --mx-exchanger=mail-ipa.rpn.loc.
Не забываем поставить точку в конце полного имени сервера. Возвращаемся в консоль почтового сервера. - Установщик копирует архив дистрибутива и разворачивает его в каталоге c именем, зависящем от вресии. У меня это /opt/zcs-8.7.11_GA1854.RHEL7_64.201705331151956. Переходим в этот каталог и запускаем процесс инсталяции:
# cd /opt/zcs-8.7.11_GA1854.RHEL7_64.201705331151956 # ./install.sh
Процесс установки проверяет, запущены ли программы Sendmail, Postfix и MySQL. Если какое-либо из этих приложений запущено, вас попросят отключить их. Отключение MySQL является необязательным, но настоятельно рекомендуется. Sendmail и Postfix должны быть отключены для правильной работы Zimbra Collaboration.# ./install.sh Operations logged to /tmp/install.log.FRNg7wVu Checking for existing installation... zimbra-ldap...NOT FOUND zimbra-logger...NOT FOUND zimbra-mta...NOT FOUND zimbra-dnscache...NOT FOUND zimbra-snmp...NOT FOUND zimbra-store...NOT FOUND zimbra-apache...NOT FOUND zimbra-spell...NOT FOUND zimbra-convertd...NOT FOUND zimbra-memcached...NOT FOUND zimbra-proxy...NOT FOUND zimbra-archiving...NOT FOUND zimbra-core...NOT FOUND
Затем появится запрос на согласие с лицензионным соглашением:Do you agree with the terms of the software license agreement? [N]
Отвечаем "Y" и продолжаем.
Важно: лицензионное соглашение отображается в нескольких разделах, и вы должны принять каждый раздел лицензионного соглашения.
Далее идет список компанентов Zimbra и предложения установить их. Отвечаем "Y" на каждый из них и соглашаемся на изменение системы:Checking for installable packages Found zimbra-core Found zimbra-ldap Found zimbra-logger Found zimbra-mta Found zimbra-dnscache Found zimbra-snmp Found zimbra-store Found zimbra-apache Found zimbra-spell Found zimbra-convertd Found zimbra-memcached Found zimbra-proxy Found zimbra-archiving Use Zimbra's package repository [Y] y Use internal development repo [N] y Configuring package repository Select the packages to install Install zimbra-ldap [Y] y Install zimbra-logger [Y] y Install zimbra-mta [Y] y Install zimbra-dnscache [Y] y Install zimbra-snmp [Y] y Install zimbra-store [Y] y . . Checking required space for zimbra-core Checking space for zimbra-store Checking required packages for zimbra-store MISSING: libreoffice MISSING: libreoffice-headless ###WARNING### One or more suggested packages for zimbra-store are missing. Some features may be disabled due to the missing package(s). Installing: zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store . . The system will be modified. Continue? [N] y
Далее идет проверка, настроена ли запись MX в DNS. Установщик проверяет, разрешено ли имя хоста через DNS. Если произошла ошибка, установщик спрашивает, хотите ли вы изменить имя хоста. Как правило он ищет запись MX в домене, определенным именем сервера. В данном случае mail-ipa.rpn.loc он считает за домен. Отвечаем, что хотим изменить домен и вводим правильное имя домена: rpn.loc
Затем следует проверка конфликта портов.Installing packages Local packages zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-convertd zimbra-proxy selected for installation Monitor /tmp/install.log.ykeq0Bw8 for package installation progress Remote package installation started Installing zimbra-core-components zimbra-ldap-components zimbra-mta-components zimbra-dnscache-components zimbra-snmp-components zimbra-store-components zimbra-apache-components zimbra-spell-components zimbra-memcached zimbra-proxy-components....done Local package installation started Installing zimbra-core zimbra-ldap zimbra-logger zimbra-mta zimbra-dnscache zimbra-snmp zimbra-store zimbra-apache zimbra-spell zimbra-convertd zimbra-proxy...done Operations logged to /tmp/zmsetup.20160711-234517.log Installing LDAP configuration database...done. Setting defaults... DNS ERROR resolving MX for mail-ipa.rpn.loc It is suggested that the domain name have an MX record configured in DNS Change domain name? [Yes] Yes . . . . done. Checking for port conflicts
На этом этапе в главном меню отображаются записи по умолчанию для компонента Zimbra, который вы устанавливаете. Чтобы развернуть меню и увидеть значения конфигурации, введите X и нажмите Enter. Главное меню равернется, чтобы отобразить детали конфигурации для устанавливаемого пакета. Значения, требующие дополнительной настройки, отмечены звездочками (****) слева. Чтобы перейти в главное меню, выберите пункт меню для изменения. Вы можете изменить любое из значений по умолчанию.
В нашем случае отобразилась такая конфигурация:Main menu 1) Common Configuration: 2) zimbra-ldap: Enabled 3) zimbra-logger: Enabled 4) zimbra-mta: Enabled 5) zimbra-dnscache: Enabled 6) zimbra-snmp: Enabled 7) zimbra-store: Enabled +Create Admin User: yes +Admin user to create: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. ******* +Admin Password UNSET +Anti-virus quarantine user: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. +Enable automated spam training: yes +Spam training user: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. +Non-spam(Ham) training user: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. +SMTP host: mail-ipa.rpn.loc +Web server HTTP port: 8080 +Web server HTTPS port: 8443 +Web server mode: https +IMAP server port: 7143 +IMAP server SSL port: 7993 +POP server port: 7110 +POP server SSL port: 7995 +Use spell check server: yes +Spell server URL: http://mail-ipa.rpn.loc:7780/aspell.php +Enable version update checks: TRUE +Enable version update notifications: TRUE +Version update notification email: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. +Version update source email: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. +Install mailstore (service webapp): yes +Install UI (zimbra,zimbraAdmin webapps): yes 8) zimbra-spell: Enabled 9) zimbra-convertd: Enabled 10) zimbra-proxy: Enabled 11) Default Class of Service Configuration: 12) Enable default backup schedule: yes s) Save config to file x) Expand menu и q) Quit Address unconfigured (**) items (? - help)
Т.е. не настроенным оказался только один пункт: не задан пароль администратора.
Вводим цифру 7 и далее следуем инструкциям на экране.
После того, как все параметры заданы верно нажимаем "а", соглашаемся с тем что требуется сохранить файл конфигурации и начинаем наблюдать процесс установки.
По окончании, если все прошло без ошибок, для выхода нажимаем "Enter". - После окончания работы инсталятора необходимо будет настроить еще несколько параметров.
Обновляем ssh ключи для пользователя zimbra.
# /opt/zimbra/bin/zmupdateauthkeys
Ключи запишутся в каталог /opt/zimbra/.ssh/authorized_keys
Разрешаем отображение статистики сервера:
# /opt/zimbra/libexec/zmsyslogsetup
Разрешаем антивирусу сканирование вложений исходящей почты:# su zimbra # zmprov mcf zimbraAttachmentsScanURL clam://localhost:3310/ zmprov mcf zimbraAttachmentsScanEnabled TRUE
- Т.к. наш сервер зарегистрирован в домене IPA, то может возникнуть конфликт с пользователем "admin". Этот пользователь являетсяадминистратором домена IPA. Пользователь с таким же именем является администратором почтового сервера и является локальным. Для того, что бы избежать конфликта делаем следующий шаг:
# su -l zimbra $ zmprov modifydomain rpn.loc zimbraAuthFallbackToLocal TRUE
После этого, если аутентификация LDAP не сработала по какой-либо причине, то на сервер администрирования всегда можно будет зайти под локальным пользователе "admin". - Настройка аутентификации пользователей IPA на сервере Zimbra.
Для этого нам как минимум понадобится один пользователь с ограниченными правами, способный прочитать каталог LDAP. Для этого переходим на сервер IPA и создаем файл zimbra.ldif со следующим содержимом:dn: uid=zimbra,cn=sysaccounts,cn=etc,dc=rpn,dc=loc changetype: add objectclass: account objectclass: simplesecurityobject uid: zimbra userPassword: KakoytoParoll123 passwordExpirationTime: 20380119031407Z nsIdleTimeout: 0
Затем добавляем пользователя "zimbra" в домен IPA:# ldapmodify -h dc.rpn.loc -p 389 -x -D "cn=Directory Manager" -w ParolLDAPadmin -f zimbra.ldif adding new entry "uid=zimbra,cn=sysaccounts,cn=etc,dc=example,dc=com"
Далее заходим в консоль администрирования Zimbra по адресу https://mail-ipa.rpn.loc:7071/zimbraAdmin/ под пользователем "admin" и настраиваем аутентификацию на сервер IPA.
На главной странице находим раздел "Настроить домен" и нажимаем пункт 3 "Настроить проверку подлинности..."
Откроется мастер аутентификации сервера. Выбираем пункт "Внешний LDAP" и нгажимаем "Далее":
В следующем окне имя сервера LDAP, порт к которому обращаемся. В поле "Фильтр LDAP" записываем запрос к базе данных. В поле "Поисковая база LDAP" задаем путь, от которого будет начинаться поиск учетных записей пользователей:
В следующем окне задаем параметры пользователя "zimbra", созданного на предыдущем этапе. От имени этого пользователя будет происходить обращение к базе LDAP:
В следующем окне отображаются заданные нами параметры и присутствует форма для проверки связи с LDAP сервером и корректности работы запросов. Вносим в поле "Имя пользователя" логин пользователя IPA, в поле "пароль" - его пароль и нажимаем "Тест". Если все нормально, то жмем "Далее".
Нас поздравляют с успешным окончанием настройки. Жмем "Готово" для внесение изменений в конфигурацию.
Теперь пользователь из домена IPA может получить доступ к почтовому серверу. Но для этого ему нужно иметь свой почтовый ящик. Создаем его. Для этого на главной странице (см. выше) в пункте 3 "Добавить учетные записи" нажимаем ссылку "Добавить учетную запись" и создаем почтовый ящик пользователя.
Пролистовыем чуть ниже и в поле "Внешняя проверка подлинности" вносим DN этого пользователя: uid=test,cn=users,cn=accounts,dc=rpn,dc=loc
Остальные поля мастера заполняем по желанию и необходимости. По завершении жмем "Готово".
Теперь пользователь из домена IPA может получить доступ к своему почтовому ящику как и из почтового клиента, так и из web-клиента, открывающемуся по адресу почтового сервера https://mail-ipa.rpn.loc/, используя свой пароль для авторизации в домене. - А что делать, если в домене уже есть достаточное количество пользователей? Не создавать же для каждого пользователя свой почтовый ящик руками? Все гораздо проще: zimbra умеет импортировать пользователей из домена (LDAP, IPA, MS AD) и автоматически создавать для них почтовые ящики. Внесем изменения в настройки почтового сервера. Причем ящики будут автоматически создаваться не только для существующих пользователей, но и для всех вновь создаваемых.
Перходим на консоль почтового сервера и создаем файл /tmp/autoprov.txt следующего содержания:md rpn.loc zimbraAutoProvAccountNameMap "uid" md rpn.loc +zimbraAutoProvAttrMap displayName=displayName md rpn.loc +zimbraAutoProvAttrMap givenName=givenName md rpn.loc +zimbraAutoProvAttrMap cn=cn md rpn.loc +zimbraAutoProvAttrMap sn=sn md rpn.loc zimbraAutoProvAuthMech LDAP md rpn.loc zimbraAutoProvBatchSize 40 md rpn.loc zimbraAutoProvLdapAdminBindDn "uid=zimbra,cn=sysaccounts,cn=etc,dc=rpn,dc=loc" md rpn.loc zimbraAutoProvLdapAdminBindPassword "secret" md rpn.loc zimbraAutoProvLdapBindDn ""uid=zimbra,cn=sysaccounts,cn=etc,dc=rpn,dc=loc" md rpn.loc zimbraAutoProvLdapSearchBase "cn=accounts,dc=rpn,dc=loc" md rpn.loc zimbraAutoProvLdapSearchFilter "(&(ObjectClass=person))" md rpn.loc zimbraAutoProvLdapURL "ldap://dc.rpn.loc:389" md rpn.loc zimbraAutoProvMode EAGER md rpn.loc zimbraAutoProvNotificationBody "Your account has been auto provisioned. Your email address is ${ACCOUNT_ADDRESS}." md rpn.loc zimbraAutoProvNotificationFromAddress Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. md rpn.loc zimbraAutoProvNotificationSubject "New account auto provisioned" ms mail-ipa.rpn.loc zimbraAutoProvPollingInterval "10m" ms mail-ipa.rpn.loc +zimbraAutoProvScheduledDomains "rpn.loc"
Это содержимое для сервера каталогов FreeIPA. Для MS Active Directory он будет выглядеть несколько по иному (показано просто для примера и не имеет ничего общего к конфигурации, рассматриваемой в этой статье):md example.com zimbraAutoProvAccountNameMap "samAccountName" md example.com +zimbraAutoProvAttrMap description=description md example.com +zimbraAutoProvAttrMap displayName=displayName md example.com +zimbraAutoProvAttrMap givenName=givenName md example.com +zimbraAutoProvAttrMap cn=cn md example.com +zimbraAutoProvAttrMap sn=sn md example.com zimbraAutoProvAuthMech LDAP md example.com zimbraAutoProvBatchSize 40 md example.com zimbraAutoProvLdapAdminBindDn "CN=Administrator,CN=Users,DC=example,DC=com" md example.com zimbraAutoProvLdapAdminBindPassword secret md example.com zimbraAutoProvLdapBindDn "Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript." md example.com zimbraAutoProvLdapSearchBase "OU=zimbrausers,dc=example,dc=com" md example.com zimbraAutoProvLdapSearchFilter "(cn=%u)" md example.com zimbraAutoProvLdapURL "ldap://192.168.0.1:389" md example.com zimbraAutoProvMode EAGER md example.com zimbraAutoProvNotificationBody "Your account has been auto provisioned. Your email address is ${ACCOUNT_ADDRESS}." md example.com zimbraAutoProvNotificationFromAddress Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. md example.com zimbraAutoProvNotificationSubject "New account auto provisioned" ms server.example.com zimbraAutoProvPollingInterval "1m" ms server.example.com +zimbraAutoProvScheduledDomains "example.com"
Параметр zimbraAutoProvAttrMap определяет карту атрибутов для отображения значений параметров из внешней записи в атрибуты учетной записи Zimbra. Значения находятся в формате {external attribute} = {zimbra attribute}.
Далее необходимо запустить выполнение этого файла:# su -l zimbra $ zmprov < /tmp/autoprov.txt prov> md rpn.loc +zimbraAutoProvAttrMap displayName=displayName prov> md rpn.loc +zimbraAutoProvAttrMap givenName=givenName prov> md rpn.loc +zimbraAutoProvAttrMap cn=cn prov> md rpn.loc +zimbraAutoProvAttrMap sn=sn prov> md rpn.loc zimbraAutoProvAuthMech LDAP prov> md rpn.loc zimbraAutoProvBatchSize 40 prov> md rpn.loc zimbraAutoProvLdapAdminBindDn "uid=zimbra,cn=sysaccounts,cn=etc,dc=rpn,dc=loc" prov> md rpn.loc zimbraAutoProvLdapAdminBindPassword "secret" prov> md rpn.loc zimbraAutoProvLdapBindDn ""uid=zimbra,cn=sysaccounts,cn=etc,dc=rpn,dc=loc" prov> md rpn.loc zimbraAutoProvLdapSearchBase "cn=accounts,dc=rpn,dc=loc" prov> md rpn.loc zimbraAutoProvLdapSearchFilter "(&(ObjectClass=person))" prov> md rpn.loc zimbraAutoProvLdapURL "ldap://dc.rpn.loc:389" prov> md rpn.loc zimbraAutoProvMode EAGER prov> md rpn.loc zimbraAutoProvNotificationBody "Your account has been auto provisioned. Your email address is ${ACCOUNT_ADDRESS}." prov> md rpn.loc zimbraAutoProvNotificationFromAddress Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. prov> md rpn.loc zimbraAutoProvNotificationSubject "New account auto provisioned" prov> ms mail-ipa.rpn.loc zimbraAutoProvPollingInterval "10m" prov> ms mail-ipa.rpn.loc +zimbraAutoProvScheduledDomains "rpn.loc"
Данная конфигурация применится без требования перезагрузки сервера. В итоге почтовый сервер будет раз в 10 минут обращаться к серверу LDAP и сравнивать свои учетные записи и учетные записи в каталоге. При обнаружении недостающей записи он автоматически создаст новый почтовый ящик и поместит в него письмо с оповещением, что этот ящик создан в автоматическом режиме. - Ротация логов.
В установке по умолчанию в принципе ротация логов уже настроена. Присутствует соответствующий скрипт в/etc/logrotate.d
. Но в версии 8.7 есть небольшой косяк. Если через некоторое время после начала эксплуатации просмотреть папку/opt/zimbra/log/
, то мы увидим кучу файлов, которые честно отрабатывают ротацию. Но там же присутствует еще один файл:gc.log
, который имеет свойство накапливаться до бесконечности. В версии 8.7 ротация этого файла отключена. в этом можно убедиться набрав команду (от пользователя zimbra):$ zmlocalconfig mailboxd_java_options
За ротацию логов отвечает опция UseGCLogFileRotation. Если мы увидим, что она отображается в виде -XX:-UseGCLogFileRotation, то это значит, что ротация отключена. Для того, что бы включить ротацию, ее надо привести к виду -XX:+UseGCLogFileRotation. Сделать это можно командой:$ zmlocalconfig -e "mailboxd_java_options=$(zmlocalconfig -m nokey mailboxd_java_options | sed -e 's/-UseGCLogFileRotation/+UseGCLogFileRotation/')"
- И последнее, что хотелось бы отметить: глобальная адресная книга, доступная всем пользователем на этом сервере. По умолчанию Zimbra использует локальную адресную книгу. Т.е. в нее помещаются адреса всех пользователей, имеющих почтовый ящик на этом сервере. Но в адресную книгу возможно так же добавлять адреса из внешнего сервера каталогов. Нам пока этот вариант не нужен, но рассмотрим как его получить.
На главной странице администрирования сервера во втором пункте "Настроить домен" выбираем ссылку 2 "Настроить GAL"
В открывшемся мастере устанавливаем "Режим GAL" - "Внешняя" и настраиваем фильтры запроса к LDAP:
Заполняем поля: имя сервера LDAP, порт сервера LDAP, фильтр LDAP, фильтр автозаполнения, поисковая база LDAP и жмем далее.
Настраиваем данные пользователя, который будет обращаться к LDAP и жмем далее:
Проверяем наличие галочки в поле "Использовать настройки поиска по GAL для синхронизации GAL" и жмем "Далее":
В следующем окне показаны настроенные нами параметры и предлогается их протестировать. Жмем "Тест":
Если все в порядке, то результат выполнения теста:
Жмем далее и попадаем на страницу тестирования синхронизации. Жмем "Тест"
Если все нормально, то нам сообщат, что тест синхронизации успешно пройден.
Жмем "Далее" и завершаем мастер.
В итоге мы получили глобальную адресную книгу, основанную на записях в сервере каталогов.
На этом в принципе основные настройки почтового сервера Zimbra завершены. Далее необходимо его настраивать в соответствии с требуемыми задачами.