четверг, 2 апреля 2015 г.

Установка Zimbra 8.6 на CentOS 7 (виртуальная машина ESXi 5.5) за NAT-ом/ Install Zimbra 8.6 on CentOS 7 (hosted by ESXi 5.5) behind NAT

7.08.6
Развёртывание почтового сервера Zimbra на виртуальную машину с ОС CentOS 7.
Решение для случая, когда ваш сервер находится за маршрутизатором, то есть NAT-ом.

Установка и подготовка операционной системы:

1) Устанавливаем CentOS в редакции Minimal

2) Во время установки обязательно настроить сеть (IP, Gateway) 

(DNS строго 127.0.0.1 и 8.8.8.8 в нашем решении с сервером за NAT-ом)


3) Отключаем SElinux:

     $ setenforce 0
     $ vi /etc/sysconfig/selinux
        SELINUX=disabled

4) Установить Net-Tools:

     yum -y install net-tools
(чтобы можно было выполнить ifconfig и прочие команды по сети)

5) Установить VMware Tools (опционально, для виртуальной машины)

6) Настраиваем сеть (если вы при установке всё настроили):

    $ nmtui

или

$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:00:00:00:00:00
TYPE=Ethernet
UUID=62146aee-9a29-4826-9756-30ba7193529c
ONBOOT=yes  (ВАЖНО)
IPADDR=192.168.1.2
NETMASK=255.255.255.0
DNS=127.0.0.1 (ВАЖНО в нашем решении)
GATEWAY=192.168.1.1
NM_CONTROLLED=yes
BOOTPROTO=static
*DNS сервера в свойствах интерфейса не прописываем, достаточно того что в resolv.conf

    Добавляем строку в hosts
$ vi /etc/hosts
192.168.1.2 river.ru

$ vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=post.river.ru

7) Прописываем DNS сервера

(если вы при установке всё настроили, это может не пригодиться):
$ vi /etc/resolv.conf
nameserver 127.0.0.1
*Больше никаких DNS серверов. В DNSmasq будут указаны все Forwarder-ы.

8) Отключаем FirewallD:

     systemctl stop firewalld
     systemctl disable firewalld

9) Устанавливаем и настраиваем IPtables:

     yum install iptables-services

    Добавляем IPtables в автозагрузку и запускаем:
     systemctl enable iptables
     systemctl start iptables

    Прописываем нужные правила в IPtables:

    $ vi /etc/sysconfig/iptables

# SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# HTTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# SMTP - Postfix
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
# POP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
# IMAP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT

# HTTPs
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
# SMTPs - Postfix
-A INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT
# IMAPs
-A INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT
# POP3s
-A INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT
# LMTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7025 -j ACCEPT
# HTTPs - Admin Console
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7071 -j ACCEPT

    $ service iptables restart

10) На маршрутизаторе прописываем правила проброса:

     Правила для Cisco:
ip nat inside source static tcp 192.168.1.2 22 interface FastEthernet0/0 22
ip nat inside source static tcp 192.168.1.2 25 interface FastEthernet0/0 25
ip nat inside source static tcp 192.168.1.2 587 interface FastEthernet0/0 587
ip nat inside source static tcp 192.168.1.2 465 interface FastEthernet0/0 465
ip nat inside source static tcp 192.168.1.2 993 interface FastEthernet0/0 993
ip nat inside source static tcp 192.168.1.2 995 interface FastEthernet0/0 995

*в целях безопасности порты 110 и 143 не прописаны

11) Настраиваем DNS - Установка и настройка DNSmasq:

    Устанавливаем DNSmasq и Bind-Utils:
$ yum -y install dnsmasq
$ yum -y install bind-utils

$ systemctl start dnsmasq
$ systemctl enable dnsmasq


    Настройка DNSmasq:
$ mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig   (делаем резервную копию оригинального файла)

$  vi /etc/dnsmasq.conf
     server=192.168.1.3  (любой из DNS серверов в локальной сети)
     server=70.80.88.1      (любой из DNS серверов провайдера Интернет, можно только эту запись оставить без верхней)
     domain=river.ru
     mx-host=river.ru,post.river.ru,10
     listen-address=127.0.0.1

    Правим записи в hosts, чтобы mta (MailTransportAgent) знал, что почту нужно приземлять на этом же сервере:
$  vi /etc/hosts

127.0.0.1   post.river.ru, river.ru

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

    Проверяем:
$ nslookup  -type=mx river.ru
    Результат должен быть:
Server:         127.0.0.1
Address:        127.0.0.1#53
kuchuk.net      mail exchanger = 10 post.river.ru.

$ nslookup  post.river.ru
    Результат должен быть:
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   post.river.ru
Address: 127.0.0.1


   Удаляем в resolv.conf все строки кроме nameserver 127.0.0.1 (нужно для нашего варианта с почтовым сервером за NAT-ом)
$ vi /etc/resolve.conf
nameserver 127.0.0.1

12) Установка и настройка NTP клиента:

$ yum -y install ntp
$ vi /etc/ntp.conf
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org

    Добавление службы NTP в автозагрузку
$ systemctl enable ntpd.service

    Обновляем систему, иначе пояс по Москве будет старый +4
$ yum update -y

    Корректировка временной зоны UTC +3:00
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
или
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

    Проверяем
date
Wed Apr  1 20:53:58 MSK 2015
    должна быть выведена текущие актуальная дата, время и пояс

13) Отключаем ненужные службы:

systemctl stop postfix
systemctl disable postfix
systemctl stop sendmail
systemctl disable sendmail


Установка Zimbra

     Установка необходимых пакетов для Zimbra
yum -y install wget perl perl-core ntpl nmap sudo libidn gmp libaio libstdc++ unzip sysstat sqlite

    Загрузка Zimbra исходников
$ wget https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.RHEL7_64.20141215151110.tgz

    Распаковка
tar xzf zcs-8.6.0_GA_1153.RHEL7_64.20141215151110.tgz

    Установка (Ставим все компоненты кроме Proxy и DNScache)

cd zcs*
./install.sh --platform-override

- В процессе вас спросят какие пакеты устанавливать - можно почитать тут
- Если в процессе установки будет ругаться:
     ERROR: Installation can not proceed.  Please fix your /etc/hosts file
  Запустите nmtui и пропишите соответствующий hostname

По окончании нужно указать DNS имя и установить пароль Администратора:
Installing LDAP configuration database...done.
Setting defaults...

DNS ERROR resolving MX for mx.domain.local
It is suggested that the domain name have an MX record configured in DNS
Change domain name? [Yes] yes
Create domain: [mx.domain.local] river.ru  (УКАЗЫВАЕМ ТОЛЬКО ДОМЕН)
        MX: mx.domain.local (126.18.180.3)

        Interface: 192.168.0.242
        Interface: 127.0.0.1
        Interface: ::1


DNS ERROR - none of the MX records for river.ru     <<<<< должно быть только имя домена
resolve to this host
It is suggested that the MX record resolve to this host
Re-Enter domain name? [Yes] no                        (Ругается, но более ничего не меняем)
done.
Checking for port conflicts

Main menu

   1) Common Configuration:
   2) zimbra-ldap:                             Enabled
   3) zimbra-logger:                           Enabled
   4) zimbra-mta:                              Enabled
   5) zimbra-dnscache:                         Disabled
   6) zimbra-snmp:                             Enabled
   7) zimbra-store:                            Enabled
        +Create Admin User:                    yes
        +Admin user to create:                 admin@kuchuk.net
******* +Admin Password                        UNSET
        +Anti-virus quarantine user:           virus-quarantine.lv2m_xm8h@kuchuk.net
        +Enable automated spam training:       yes
        +Spam training user:                   spam.igkiplbw@kuchuk.net
        +Non-spam(Ham) training user:          ham.lyxjdldvhw@kuchuk.net
        +SMTP host:                            mx.kuchuk.net
        +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://mx.kuchuk.net:7780/aspell.php
        +Enable version update checks:         TRUE
        +Enable version update notifications:  TRUE
        +Version update notification email:    admin@kuchuk.net
        +Version update source email:          admin@kuchuk.net
        +Install mailstore (service webapp):   yes
        +Install UI (zimbra,zimbraAdmin webapps): yes

   8) zimbra-spell:                            Enabled
   9) zimbra-proxy:                           Disabled
  10) Default Class of Service Configuration:
   s) Save config to file
   x) Expand menu
   q) Quit

Address unconfigured (**) items  (? - help) 7


Store configuration

   1) Status:                                  Enabled
   2) Create Admin User:                       yes
   3) Admin user to create:                    admin@kuchuk.net
** 4) Admin Password                           UNSET
   5) Anti-virus quarantine user:              virus-quarantine.lv2m_xm8h@kuchuk.net
   6) Enable automated spam training:          yes
   7) Spam training user:                      spam.igkiplbw@kuchuk.net
   8) Non-spam(Ham) training user:             ham.lyxjdldvhw@kuchuk.net
   9) SMTP host:                               mx.kuchuk.net
  10) Web server HTTP port:                    8080
  11) Web server HTTPS port:                   8443
  12) Web server mode:                         https
  13) IMAP server port:                        7143
  14) IMAP server SSL port:                    7993
  15) POP server port:                         7110
  16) POP server SSL port:                     7995
  17) Use spell check server:                  yes
  18) Spell server URL:                        http://mx.kuchuk.net:7780/aspell.php
  19) Enable version update checks:            TRUE
  20) Enable version update notifications:     TRUE
  21) Version update notification email:       admin@kuchuk.net
  22) Version update source email:             admin@kuchuk.net
  23) Install mailstore (service webapp):      yes
  24) Install UI (zimbra,zimbraAdmin webapps): yes

Select, or 'r' for previous menu [r] 4

Password for admin@kuchuk.net (min 6 characters): [3DT6r5] Passw0rd (ПАРОЛЬ УКАЗВАЕМ)

Store configuration

   1) Status:                                  Enabled
   2) Create Admin User:                       yes
   3) Admin user to create:                    admin@kuchuk.net
   4) Admin Password                           set
   5) Anti-virus quarantine user:              virus-quarantine.lv2m_xm8h@kuchuk.net
   6) Enable automated spam training:          yes
   7) Spam training user:                      spam.igkiplbw@kuchuk.net
   8) Non-spam(Ham) training user:             ham.lyxjdldvhw@kuchuk.net
   9) SMTP host:                               mx.kuchuk.net
  10) Web server HTTP port:                    8080
  11) Web server HTTPS port:                   8443
  12) Web server mode:                         https
  13) IMAP server port:                        7143
  14) IMAP server SSL port:                    7993
  15) POP server port:                         7110
  16) POP server SSL port:                     7995
  17) Use spell check server:                  yes
  18) Spell server URL:                        http://mx.kuchuk.net:7780/aspell.php
  19) Enable version update checks:            TRUE
  20) Enable version update notifications:     TRUE
  21) Version update notification email:       admin@kuchuk.net
  22) Version update source email:             admin@kuchuk.net
  23) Install mailstore (service webapp):      yes
  24) Install UI (zimbra,zimbraAdmin webapps): yes

Select, or 'r' for previous menu [r] r

Main menu

   1) Common Configuration:
   2) zimbra-ldap:                             Enabled
   3) zimbra-logger:                           Enabled
   4) zimbra-mta:                              Enabled
   5) zimbra-dnscache:                         Disabled
   6) zimbra-snmp:                             Enabled
   7) zimbra-store:                            Enabled
   8) zimbra-spell:                            Enabled
   9) zimbra-proxy:                            Disabled
  10) Default Class of Service Configuration:
   s) Save config to file
   x) Expand menu
   q) Quit

*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes] yes


   Включаем доступ с http и с https
$ su zimbra
$ zmtlsctl both

    Проверяем почту
https://192.168.1.2:7071    - Админская консоль
https://192.168.1.2             - Веб-интерфейс для пользователей


    Если установка завершилась, но вы не успели провести настройку в мастере, запускаем:
/opt/zimbra/libexec/zmsetup.pl

Последние штрихи: 

    15) Меняем ответ сервера при подключении к нему:

su zimbra
zmlocalconfig -e postfix_smtpd_banner="mail.mydomain.com NO UCE ESMTP"
postconf -e smtpd_banner="mail.mydomain.com NO UCE ESMTP"
zmmtactl reload

   Если не помогло:
su zimbra
zmprov mcf zimbraMtaMyHostname mail.mydomain.com
zmcontrol stop && zmcontrol start

telnet post.river.ru 25
220 river.ru ESMTP Postfix

telnet post.river.ru 993
220 river.ru ESMTP Postfix

    16) Оптимизация загрузки процессора и памяти системы под Zimbra:

$ vi /opt/zimbra/conf/my.cnf
   innodb_buffer_pool_size        = 384M
$ vi /opt/zimbra/conf/amavisd.conf.in
   max_servers =  2
$ zmlocalconfig -e mailboxd_java_heap_memory_percent=20

http://www.zoobey.com
Memory Allocation
Both the Java mailboxd and MariaDB/MySQL processes that are part of the mailbox service benefit from more memory, with a few caveats. Allocation of memory to these two processes is done through the local config variable mailboxd_java_heap_size (in ZCS7 and later) mailboxd_java_heap_memory_percent (in ZCS6 and earlier) and the my.cnf variable innodb_buffer_pool_size (details on both are in the following sections). In a new install, ZCS tries to allocate 30% of system memory to the Java heap, and 25% of system memory to innodb buffer pool. Please make sure that you do not configure these values too high for your system. If these values are too high, your system will swap and swapping is extremely detrimental to ZCS performance. Check the JVM Options section to see if you should reduce your heap memory percent. If you believe your system has unused RAM, you can allocate this memory to innodb buffer pool, only after you have monitored your system and made sure your system in not swapping.
On a <8GB system, set Java heap size percent to 20 and mysql innodb buffer pool to 20% of system memory.
On a 8GB system, set Java heap size percent to 30 and mysql innodb buffer pool to 25% of system memory.
On a 16GB system, set Java heap size percent to 25 and mysql innodb buffer pool to 30% of system memory, monitor and then increase innodb buffer pool size.
On a 32GB system, set Java heap size percent to 20 and mysql innodb buffer pool to 35% of system memory, monitor and then increase innodb buffer pool size.
Never run memory hungry processes like rsync or imapsync along side a mailbox server.
http://wiki.zimbra.com

    17) Настройка Глобальной адресной книги (GAL) в Zimbra:

http://wiki.zimbra.com/wiki/GAL_Sync_Account

    18) Экспорт и настройка сертификата Zimbra:

1) Выполнить с правами Root на сервере Zimbra:


    cd /opt/zimbra/ssl/zimbra/ca

    openssl x509 -in ca.pem -outform DER -out ~/zimbra.cer
2) Скачиваем себе сертификат с сервера Zibra:
     Я воспользовался программой WinSCP
3) Устанавливаем при помощи групповой политики данный сертификат на все пользовательские машины в домене (если у вас есть домен):  Руководство

Помогло это руководство: interface31.ru


    19) Backup Zimbra:

Структура директорий Zimbra для Backup
Backup&Restore скрипты

Полезно:

ZmSetServerName

Увеличение размера ящика:
su zimbra
zmprov mcf zimbraMtaMaxMessageSize 20971520
zmprov mcf zimbraFileUploadMaxSize 20971520
zmprov mcf zimbraMailContentMaxSize 52428800
zmprov modifyConfig zimbraMtaMaxMessageSize 52428800
postfix reload


postconf -e smtp_helo_name='emailserver.yourdomain.com'
zmlocalconfig -e postfix_smtp_helo_name = 'emailserver.yourdomain.com'

postconf -e smtpd_banner='$smtp_helo_name ESMTP $mail_name'
zmlocalconfig -e postfix_smtpd_banner = '$smtp_helo_name ESMTP $mail_name'

Вывод приложений работающих на порту 53:
lsof -Pn +M | grep ':53 (LISTEN)'

Вывод наиболее тяжёлых каталогов:
du / -hx | sort -nr | grep [0-9][G,M] | head -n50

Настройка Антиспам в Zimbra:

http://as.zabedu.ru

Управление Учётками и Доменами в Zimbra:


Домены:

    Удалить домен:
zmprov dd kuchuk.net

    Создать домен:
zmprov cd kuchuk.net

    Установить домен по-умолчанию:
zmprov mcf zimbraDefaultDomainName domain.com

Учётки:

    Создать админскую учётку:
zmprov ca admin@domain.com PASSW0RD zimbraIsAdminAccount TRUE

    Дать учётке права админа:
zmprov ma user@domain.com zimbraIsAdminAccount TRUE

    Создать учётную запись:
zmprov ca user@domain.com PASSW0RD

    Создать пользователя с указанием Имени, Фамилии и формы отображения:
zmprov ca name@example.com PASSW0RDcn "Firstname Lastname" displayName "Firstname Lastname" givenName "Firstname" zimbraPrefFromDisplay "Firstname Lastname"

    Удалить учётку:
zmprov da user@domain.com

    Вывести список пользователей:
zmprov gaa

    Вывести список пользователей и их конфигураций в данном домене:
zmprov gaa -v domain.com

    Изменить Пароль:
zmprov sp testadmin@domain.com NEW_PASSW0RD

    Вывести список админов:
zmprov gaaa

Другое:
    Пересылка писем с одного ящика на другой:
zmprov ca user@domain.com PASSW0RD zimbraMailForwardingAddress user@otherdomain.com

    Создать Псевдоним для учётки:
zmprov aaa accountname@domain.com aliasname@domain.com

    Создать группу рассылки:
zmprov cdl listname@domain.com

    Добавить учётку в группу рассылки:
zmprov adlm listname@domain.com member@domain.com

     Вывести пароли системных учёток:
$ zmlocalconfig -s |grep ldap |grep password
ldap_amavis_password = zmamavis
ldap_nginx_password = zmnginx
ldap_postfix_password = zmpostfix
ldap_replication_password = zmreplica
ldap_root_password = A1eRG0zP
zimbra_ldap_password = A1eRG0zP

    Вывести версию:
$ zmcontrol -v
Release 5.0.9_GA_2534.RHEL4_20080814054137 RHEL4 NETWORK edition 

Ошибки, которые вы можете встретить на своём пути:

  • При перезагрузке Zimbra, компонент zmconfigd скажет:
zmcontrol stop && zmcontrol start
Starting zmconfigd...Failed.

РЕШЕНИЕ:

1) Удалить запись IPv6 из /etc/hosts (Всю строку  "::   localhost localhost.localdomain")

2) Ещё возможен случай, когда dnsmasq не стартовал и как результат zmconfigd failed
    systemctl enable dnsmasq
    systemctl start dnsmasq
  • В /var/log/zimbra.log могут сыпаться такие сообщения
(Cannot run program "/opt/zimbra/bin/zmstatctl" (in directory "/root"): error=13, Permission :

РЕШЕНИЕ:

su - zimbra
zmcontrol stop
logout
/opt/zimbra/libexec/zmfixperms --verbose --extended
su - zimbra
zmcontrol start

  • connect to [IP ADDRESS]:7025: Connection refused
РЕШЕНИЕ
zmprov ms mtaserver.com zimbraMtaLmtpHostLookup native
zmprov mcf zimbraMtaLmtpHostLookup native
zmmtactl restart

Установка Zimbra 8.6 на CentOS 6.5

Настройка NGINX Proxy_Pass для Zimbra

 

11 комментариев:

  1. Возможен ли вариант вынести mysql на отдельный сервер ????

    ОтветитьУдалить
  2. Ответы
    1. Ошибка. Исправил. Исправил также другие, что были в тексте.

      Удалить
  3. Установка (Ставим все компоненты кроме Proxy и DNScache)
    а влистинге:
    5) zimbra-dnscache: Enabled
    9) zimbra-proxy: Enabled

    ОтветитьУдалить
    Ответы
    1. Исправил. Видать скопировал с поста, в котором ставил эти компоненты по началу изучения Zimbra.

      Удалить
  4. Create domain: [mx.domain.local] domain.local (УКАЗЫВАЕМ ТОЛЬКО ДОМЕН)
    Какой - river.ru ?

    ОтветитьУдалить
    Ответы
    1. Исправил. Да, river.ru (разумеется это пример и нужен ваш купленный домен).

      Удалить
  5. Добавляем строку в hosts
    $ vi /etc/hosts
    192.168.1.2 river.ru

    потом
    Правим записи в hosts, чтобы mta (MailTransportAgent) знал, что почту нужно приземлять на этом же сервере:
    $ vi /etc/hosts

    127.0.0.1 post.river.ru, river.ru
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

    ОтветитьУдалить
  6. Добрый день столкнулся с проблемой в том что почта после аварийного выключения питания не стартует web интерфейс, статус zmcontrol все запушено, если сделать sudo lsof -i :25 то видно что соединение есть почта приходит, пока не могу понять уходит ли так как скопилась большая очередь и ей нужно время чтоб пролезть. Скажите что нужно могу скинуть для того чтоб можно было понять причину моей проблемы. За ранее спасибо


    С уважением

    ОтветитьУдалить
  7. добрый день.
    спасибо за статью, очень полезная!
    я вот с такой проблемой столкнулся и не могу найти решение. есть работающий сервер и к нему хочу подключить резервный канал от другого провайдера , вы не сталкивались с такой проблемой

    ОтветитьУдалить