понедельник, 26 января 2015 г.

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

6.58.6
Развёртывание почтового сервера Zimbra на виртуальную машину с ОС CentOS 6.5.
Данное решение бесплатно и не имеет лицензионных ограничений.
Не рекомендуется на сегодняшний день ставить на CentOS 7.
В процессе установки операционной системы, рекомендую на этапе указания имени хоста настроить сетевой интерфейс (для экономии время).
Кстати, Hostname при установке укажите по шаблону mail.domain.ru

1) Устанавливаем VM Tools:
https://www.vmware.com/support/ws55/doc/ws_newguest_tools_linux.html

Изменить настройки VM Tools можно через:
vmware-config-tools.pl

2) Настройка сетевой карты и поднятие интерфейса eth0

$ system-config-network-tui

или

$ 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.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=192.168.100.1
DNS2=192.168.100.2
NM_CONTROLLED=yes
BOOTPROTO=static

3) Прописываем DNS сервера
$ vi /etc/resolv.conf
search mail.ru
nameserver 8.8.8.8
nameserver 8.8.4.4

4) Прописывает наш Zimbra сервер в hosts:
$ vi /etc/hosts
  192.168.0.100 mail.domain.ru mx
  127.0.0.1 localhost.localdomain localhost
     (желательно, чтобы запись mail.domain.ru в локальной сети разрешалась в этот же IP)

5) Тоже имя указываем в качестве hostname:
$ vi /etc/sysconfig/network
   NETWORKING=yes
   HOSTNAME=mail.domain.com
   GATEWAY=192.168.0.1

6) Поднимаем интерфейс:
   ifup eth0

Чтобы происходило это автоматом в файле
  vi /etc/sysconfig/network-scripts/ifcfg-eth0 должна быть строка: ONBOOT=yes

7) Установка и настройка NTP клиента:
$ yum install ntp
$ vi /etc/ntp.conf
  server dc1.domain.local
  server dc2.domain.local
Добавление службы в автозагрузку
$ chkconfig ntpd on

Корректировка временной зоны 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

8) Установка необходимых пакетов для Zimbra:

$ yum -y install gcc nc libaio.x86_64 unzip.x86_64 perl perl-core wget bind-tools sysstat nc unzip

9) Отключаем Sendmail и Postfix:
$ chkconfig sendmail off
$ chkconfig postfix off
$ service postfix stop
$ service sendmail stop

      Если этого не сделать, то получите конфликт на 25м порту:
      Checking for port conflicts
      Port conflict detected: 25 (zimbra-mta)
      Port conflicts detected! - Any key to continue

10) Загрузка Zimbra исходников:

$ wget wget https://files.zimbra.com/downloads/8.6.0_GA/zcs-8.6.0_GA_1153.RHEL6_64.20141215151155.tgz

11) Распаковка:
$ tar zxpf /mnt/cdrom/VMwareTools-9.4.5-1598834.tar.gz

12) Установка (Ставим все компоненты кроме Proxy):
$ cd zcs*
$ ./install.sh
  (для деинсталяции ./install.sh -u)

По окончании нужно указать 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] domain.local  (УКАЗЫВАЕМ ТОЛЬКО ДОМЕН)
        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 kuchuk.net
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:                         Enabled
   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:                            Enabled
  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:                         Enabled
   6) zimbra-snmp:                             Enabled
   7) zimbra-store:                            Enabled
   8) zimbra-spell:                            Enabled
   9) zimbra-proxy:                            Enabled
  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

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

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

14) Меняем SSH порт (если нужно вам):
$ vi /etc/ssh/sshd_conf
Port 77722

$ su zimbra
$ zmprov mcf zimbraRemoteManagementPort 9242

15) Открываем порты в 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
# 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

  Они должны быть до строк:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

$ service iptables restart

16) Проверяем почту:
https://192.168.0.100

17) Проверяем Админку:
https://192.168.0.100:7071/

Полезным может быть видео: 


Развёртывание Zimbra за NAT-ом (DNSMASQ)

Как изменить приветствие helo в Zimbra:

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

Также можете заглянуть в файл /opt/zimbra/postfix/conf/main.conf или /opt/zimbra/postfix-**.*.*/conf/main.conf (с указанием версии). Нужно правки делать в обоих фалах, чтобы были идентичны. Либо пользоваться командами zmlocalconfig, postconf (представлены выше).

http://mtaalamu.ru
https://community.zimbra.com

Настройка авторизацию в Active Directory для Zimbra:

Оптимизация загрузки процессора и памяти системы под 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

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

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

Экспорт и настройка сертификата 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

Backup Zimbra:

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

Полезно:
ZmSetServerName

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

Примеры: wiki.zimbra.com
Основные команды: www.zimbra.com
 Средства Автоматизации http://as.zabedu.ru

Disk Layout

  • I generally create two partitions: /boot and the rest a LVM partition
  • Inside I create a volume group with the name vg00, and create inside of it:
    • lvRoot mounted on /
    • lvTmp mounted on /tmp
    • lvVar mounted on /var
    • lvOpt mounted on /opt
    • lvSwap
    • Unallocated space for expansion of any non-lvOpt partition that threatens to get full. I treat lvOpt differently because it’s the mail storage partition, and if it fills up I want to at least double the amount of space available. If /opt starts to get full, I will:
      • add a whole new disk,
      • add it as a physical volume,
      • expand the volume group with the physical volume,
      • expand lvOpt, and
      • expand the /opt filesystem.
http://jamesreubenknowles.com/installing-zimbra-7-on-centos-1327

Что делать если /opt переполнился:

http://dev.digi-corp.com/2009/09/moving-opt-data-to-new-partition-in-linux-due-to-low-disk-space/

Просмотр Логов:

 tail -f /var/log/zimbra.log

Как деинсталировать Zimbra Proxy:

1) Узнать какие компоненты Zimbra установлены:
         zmcontrol status

Host mx.kuchuk.net
        amavis                  Running
        antispam                Running
        antivirus               Running
        dnscache                Running
        ldap                    Running
        logger                  Running
        mailbox                 Running
        memcached               Running
        mta                     Running
        opendkim                Running
        proxy                   Running
        service webapp          Running
        snmp                    Running
        spell                   Running
        stats                   Running
        zimbra webapp           Running
        zimbraAdmin webapp      Running
        zimlet webapp           Running
        zmconfigd               Running

2) Выяснить какие порты используются:
        zmprov -l gs `zmhostname` | grep -i port
3) Выставляем значение портов под службы Proxy в 0:

        zmprov ms `zmhostname` zimbraImapProxyBindPort 0
        zmprov ms `zmhostname` zimbraImapSSLProxyBindPort 0
        zmprov ms `zmhostname` zimbraPop3ProxyBindPort 0
        zmprov ms `zmhostname` zimbraPop3SSLProxyBindPort 0

4) Выставляем стандартные значения не "Proxy2 портов:
        zmprov ms `zmhostname` zimbraImapBindPort 143
        zmprov ms `zmhostname` zimbraImapSSLBindPort 993
        zmprov ms `zmhostname` zimbraPop3BindPort 110
        zmprov ms `zmhostname` zimbraPop3SSLBindPort 995

5) Включаем 2 необходимые службы:
        zmprov ms `zmhostname` -zimbraServiceEnabled memcached
        zmprov ms `zmhostname` -zimbraServiceEnabled imapproxy

6) Останавливаем службы Proxy сервиса и перегружаем почтовую службу Zibra:
        zmproxyctl stop
        zmmemcachedctl stop
        zmmailboxdctl stop
        zmmailboxdctl start 


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

  1. Хорошая статья, но есть пара вопросов:
    # это мы меняем пароль для админки?
    zmprov mcf zimbraRemoteManagementPort 9242

    # устанавливая сервис zimbra-dnscache мы получаем локальный кеширующий dns?

    ОтветитьУдалить
  2. 1) Это смена стандартного порта. Если вы не будете менять стандартный порт SSH, то и это делать не нужно.
    2) Да. Но рекомендую вместо него поставить dns-masq

    ОтветитьУдалить
    Ответы
    1. Понял, спасибо, и последний вопрос, за что отвечает zimbra-spel?

      Удалить
    2. Про назначение пакетов Zimbra можно почитать тут:
      https://www.zimbra.com/docs/ne/6.0.6/multi_server_install/planning%20a%20multi-server%20instalaltion.3.1.html

      Удалить
  3. Здравствуйте!
    Подскажите, пожалуйста, куда копать:
    в заголовках писем, отправленных с моего сервера, присутствуют записи Received from localhost [127.0.0.1]), поэтому они пападают в спам у получателей.

    ОтветитьУдалить
    Ответы
    1. Быть может в настройках Helo стоит это значение.
      Напишите мне на почту ваш Skype. Думаю можно будет совместно посмотреть.

      Удалить