Установка Zimbra на Ubuntu StartSSL, Блог веб-програміста

Установка Zimbra на Ubuntu 16.04 + StartSSL

Зразковий список must-have дій для успішного встановлення Zimbra на Ubuntu 16.04. Не для шаленого копіпаста.

Приведемо сервер до ладу

1. До /etc/apt/sources.list включаємо всі необхідні репозиторії.

2. Встановимо тимчасову зону, локаль, включимо оновлення безпеки та поставимо пакети першої необхідності (від рута): locale-gen en_US.UTF-8 uk_UA.UTF-8 apt-get install locales man dialog htop silversearcher-ag bzip2 pigz pbzip2 mc grc pydf bash-completion vim-nox zsh tmux ncdu unttended-upgrades dpkg-reconfigure unattended-upgrades
dpkg-reconfigure tzdata

Підготовчий етап

0. Починаючи з цього етапу всі дії краще виконувати у скрині (screen). 1. Встановлюємо потрібний hostname (/etc/hosts + /etc/hostname). Я ставлю домен другого рівня, який буде використовуватися в пошті (не mail.example.com, а просто example.com) 2. Прописуємо всі DNS записи домену на наш сервер (@ IN A, www IN A, mail IN A, @ IN MX mail) 3. Відразу можна прописати spf запис( @ IN TXT ). Я зазвичай використовую наступний формат: v=spf1 a mx ip4:АЙ.ПИ.СЕР.ВЕРА include:mail.example.com -all Наприклад: v =spf1 a mx ip4:91.218.229.167 include:mail.tochka-design.ru -all

Установка Zimbra

Завантажуємо зибру під нашу систему з офіційної сторінки https://zimbra.org/download/zimbra-collaboration

Незважаючи на те, що на даний момент підтримка Ubuntu 16.04 у беті – все працює без проблем.

При встановленні треба буде задати пароль адміністратора - задаємо, запам'ятовуємо.

Також, якщо часу з моменту прописування DNS записів пройшло небагато, інсталер лаятиметься на те, що A і MXзаписи не резолвуються до нашого IP. Ігноруємо це - нам це не завадить, адже ми додали все до /etc/hosts сервера. Без цього б не запустився ldap.

Сертифікат StartSSL

StartSSL пропонує безкоштовні сертифікати. Для наших цілей вони підходять чудово.

. UPDATE: Безкоштовні сертифікати StartSSL вже не валідні у багатьох браузерах. Рекомендую використовувати Let's Encrypt. Ресурси на тему:

Як десь ще ставитиму зимбру - оновлю цю інструкцію з урахуванням letsencrypt.

Підтвердження домену в StartSSL

Генеруємо CSR

У панелі Zimbra йдемо в Налаштування > Сертифікати > Правою кнопкою на сервері > Встановити сертифікат.

Вибираємо "Генерувати CSR". Заповнюємо все і ось – Zimbra дала нам CSR, зберігши його собі в нетрях.

ВАЖЛИВО! Самому CSR краще не генерувати, Zimbra це робить просто через веб-морду.

CSR підсовуємо в StartSSL і генеруємо сертифікат, вказуючи наші домени: example.com, www.example.com, mail.example.com

Після генерації не забуваємо завантажити сертифікати.

Встановлюємо сертифікат

Розпаковуємо у себе на робочому комп'ютері архів із сертифікатами, з нього дістаємо OtherServer.

Склеюємо root.crt і 1_Intermediate.crt в один файл (ланцюжок сертифікатів) і кладемо це на сервер /tmp/ca_bundle.crt .

Сертифікат (2_example.com.crt) кладемо в /tmp/ssl.crt

Незважаючи на інструкцію, запускаємо від користувача zimbra(!) :

/opt/zimbra/bin/zmcertmgr deploycrt comm /tmp/ssl.crt /tmp/ca_bundle.crt keytool -import -alias root -keystore /opt/zimbra/common/lib/jvm/java/jre /lib/security/cacerts -storepass changeit -file /opt/zimbra/ssl/zimbra/commercial/commercial.crt

Перезапускаємо Zimbra (від цього користувача):zmcontrol restart

Перевіряємо у браузері – чи зелений у нас протокол. Можна перевірити на адмінці Zimbra.

NB: Чомусь через веб-інтерфейс встановити сертифікат мені жодного разу не вдалося.

Змінюємо порти

Оскільки Zimbra встановлює свій nginx – краще поміняти його порти та використовувати системний nginx.

Робиться це однією командою від користувача zimbra: /opt/zimbra/libexec/zmproxyconfig -a 8080:81:8443:444 -e -m -w -H example.com && zmcontrol restart

Тепер веб-інтерфейс пошти переїхав на https://example.com:444/, а на 80 та 443 ми можемо повісити наш системний nginx.

Тут все робимо за інструкцією. А саме прописуємо те, що видає команда /opt/zimbra/libexec/zmdkimkeyutil -a -d example.com як TXT запису.

zmdkimkeyutil видає нам наприклад ось таку ось річ: zimbra@p390733:

$ /opt/zimbra/libexec/zmdkimkeyutil -a -d tochkaremont.ru DKIM Data адресовано LDAP для домашнього tochkaremont.ru з selector 91F75664-6CF8-11E6-99AA-81B8C4CFEEED Public signature 91F75664-6CF8-11E6-99AA-81B8C4CFEEED._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA FSfoESOmkkTWeQnxhQYcfYqmA4ypsZ7PycmZ9Bv3+saoHFkUyfnQfLvtZPQDzdt8S7TCF9Jsm9tJEt1gknhjgJzLRoJiJaIOhDr3nOsKzs l31oFF4x/qxjD2Ie85xDEEi7FOeG91XejifcBM0z0" "0sqMSz4fxRIU/qweA+KPQD8qZjo/lOGodJIEElHmTH24brQ1WT6NjNUBq/csmY9p/CzoDhn3JD3SUYzTKX4DpvehDTXlV/Q+Z/OCnm8tndKUhRwvH4+ ); ----- DKIM key 91F75664-6CF8-11E6-99AA-81B8C4CFEEED for tochkaremont.ru

Як значення ми беремо те, що в лапках, прибираючи прогалини та перенесення рядка. Перевіряємо валідність того, що збираємося вставити у сервісіDkimCore.

На жаль, r01.ru та pdd.yandex.ru не впораються з таким довгим підписом (maxlen 255 там). Як цю проблему вирішувати – не відомо, оскільки утиліта не дозволяє зменшувати розмір ключа.

Після оновлення запису TXT dkim можна перевірити все тестовим листом через сервіс DkimValidator або надіслати лист на gmail і подивитися, що буде в розшифровці поля "від".

Антивірусна перевірка архівів

Zimbra використовує clamav для перевірки листів та вкладень на віруси.

Конфіг clamav /opt/zimbra/conf/clamd.conf

Оскільки зашифровані архіви не можна перевірити, за замовчуванням вони блокуються.

Перезавантажити сервіс антивірусу можна однією командою zmclamdctl restart

Розмір повідомлень

$ postconf message_size_limit message_size_limit = 10240000 zimbra@p390733:

$ zmprov modifyConfig zimbraMtaMaxMessageSize 102400000 zimbra@p390733:

$ postfix reload /postfix-script: refreshing Postfix mail system zimbra@p390733:

$ postconf message_size_limit message_size_limit = 102400000 zimbra@p390733:

$ zmprov getConfig zimbraFileUploadMaxSize zimbraFileUploadMaxSize: 10485760 zimbra@p390733:

$ zmprov modifyConfig zimbraFileUploadMaxSize 51445760

Bonus - MySQL

Zimbra ставить MariaDB і пароль можна отримати простою командою від користувача zimbra: zmlocalconfig -s grep ^mysql_root_password