Instalando e utilizando o Zimbra

O Zimbra, é uma suite colaborativa de e-mail muito poderosa, cujo foco é ser uma alternativa livre ao Microsoft Exchange. Com suas duas versões disponíveis, a versão Network Edition (NE) e a Open Source, ele consegue, no mínimo equiparar-se a solução oferecida pela Microsoft, tendo a sua versão NE voltada a empresas que precisam de suporte e ferramentas de backup mais avançadas.

Neste artigo, iremos abordar a versão Open Source, a qual não possui o suporte da equipe de desenvolvimento, bem como algumas outras limitações. Limitações estas que não devem impedir o seu funcionamento e aplicação em pequenas e médias empresas.

Caso você prefira, pode efetuar o download da versão Trial do Zimbra Network Edition, para efetuar testes.

Um pouco mais sobre o Zimbra

O Zimbra nasceu para ser uma alternativa ao Exchange, como já mencionado anteriormente, no mundo Linux. Em meio a tantos webmails e e-mail’s servers, faltava ainda uma solução mais integrada, ao estilo Exchange, e que fosse simples de ser mantida e atualizada.

Atualmente, o Zimbra conta com muitas funções, dentre elas, podemos citar a integração com LDAP, clustering, entre outras, tudo isso disponível através de uma interface Web para administração, completa e funcional, onde você consegue efetuar todos os serviços do dia-a-dia, desde o cadastro de um novo e-mail, a aplicação de quotas e criação de aliases.

Também, não podemos esquecer-nos dos webmails. O Zimbra possui um webmail em Ajax, extremamente completo, que não deixa nada a dever frente ao Microsoft Outlook, tendo desde um calendário a catálogo de e-mail (dentre muitas outras opções), até um sistema de Instant Messenger (isso me lembra Google). Um detalhe acerca do Calendário e do Catalogo de endereços, é a sua integração com o Zimbra Desktop (cliente de e-mail do Zimbra), ele é para o Zimbra o mesmo que o Microsoft Outlook é para o Exchange. Ainda contamos, na versão NE, com a integração com o próprio Microsoft Outlook, onde este atua como se fosse um Exchange.

Ainda, com relação aos webmails, o Zimbra disponibiliza um em html, mais simples, voltado a conexões lentas, com praticamente todas as funcionalidades da versão full (em Ajax), particularmente, eu me dei por falta apenas do Instant Messenger nesta versão. E como se não bastasse, para quem deseja acessar seus e-mail a partir de um celular, existe um webmail para este fim disponível. 🙂

A instalação

A instalação do Zimbra é bem tranqüila e sem dificuldades na maioria das vezes. No meu caso, quando efetuei a instalação, encontrei alguns pequenos problemas, que irei relatar neste artigo, mostrando-lhes como resolve-los caso ocorram.

Particularmente, eu prefiro o CentOS nestes casos, por ele ser um “Red Hat bastardo”, ele traz consigo muitas características do mesmo (para não dizer uma cópia fiel :).

A instalação do sistema pode ser o mais limpa possível, utilizando uma distribuição com suporte a resolução de dependências (como todas as suportadas pelo Zimbra), fica mais fácil efetuar este tipo de instalação. Lembrando de deixar o básico para que tudo funcione, o resto você pode remover. Mantenha apenas um editor de texto, navegadores Web via linha de comando (caso precise) o man, o básico do sistema e suas bibliotecas, compiladores e etc.

Infelizmente não existe versão suportada nativamente para o CentOS 5, logo, vamos utilizar os pacotes do seu irmão “genuíno”, o RHEL 5.

Você pode obter os pacotes no link abaixo:

http://www.zimbra.com/community/downloads.html

Como nos efetuamos uma instalação bem limpa do sistema, precisamos resolver algumas dependências, vamos faze-lo utilizando o gerenciador de pacotes do CentOS. (aplica-se também à distros Debian Based)

OBS.:. Nesta dica, para facilitar o andamento, utilizaremos o “#” para ilustrar comandos efetuados como root, e o “$” para comandos efetuados como usuário comum.

Em um terminal, como root, digite:

# yum update

# yum install Pearl, fetchmail, OpenSSL, Libxml, gmp, compat-libstdc++-33, Sudo, audit-libs, Libtool, libtool-libs, GCC, Make, compat-libstdc++-33, openssl097a, compat-db

ou, se for Debian-based

# apt-get update

# apt-get install Pearl, fetchmail, OpenSSL, Libxml, gmp, compat-libstdc++-33, Sudo, audit-libs, Libtool, libtool-libs, GCC, Make, compat-libstdc++-33, openssl097a, compat-db

Você precisa remover qualquer aplicativo servidor de e-mail, como postfix, sendmail e exim, que possam estar instalados em seu servidor, pois o Zimbra irá tomar conta dos serviços de e-mail por nós. Ele traz consigo uma compilação específica do Postfix, customizada para ele. Também remova servidores Web (Apache), LDAP (OpenLDAP), IMAP/POP (Dovecot/Courrier) e etc, pois todos estes são disponibilizados pelo próprio Zimbra, e caso exista algum rodando em seu computador, a instalação poderá falhar, ou o Zimbra irá utilizar portas não padrão para rodar, o que não nos trará um resultado muito legal 🙂

Feito isso, atualize TODA a distribuição, com o comando abaixo:

# yum upgrade

ou, caso seja Debian:

# apt-get dist-upgrade

Agora, precisamos organizar o arquivo hosts, que fica em /etc.

Este arquivo é responsável pela resolução de DNS interna do seu computador, este é o primeiro arquivo a ser consultado (antes do servidor de DNS, inclusive) durante uma resolução DNS.

Neste arquivo, deve constar o domínio e o hostname do seu servidor. No caso, será o endereço no qual o Zimbra irá responder.

Edite o arquivo com seu editor de texto favorito, eu prefiro o mcedit.

# mcedit /etc/hosts

O arquivo /etc/hosts deve ficar organizado da forma abaixo:

Exemplo:

#IP hostname.dominio hostname

192.168.0.1 host.meudominio.com.br host
127.0.0.1 localhost.localdomain localhost

## IpV6

::1 localhost6.localdomain6 localhost6

Onde:

  • hostname ? Nome do seu computador
  • exemplo: zimbrasrv
  • meudominio.com.br ? Seu domínio (pode ser .com, .net e por aí vai). Exemplo: server.com.br

Com estes dois, nos montamos o endereço completo “host.meudominio.com.br”

  • Exemplo: zimbrasrv.server.com.br

Antes de prosseguir com a instalação, certifique-se de que o servidor de DNS que você utilizará, já possua os apontamentos corretos feitos para o seu servidor.

Agora, finalmente iremos iniciar a instalação.

Efetue o download da última versão do Zimbra, normalmente eu salvo estes arquivos em /opt:

# cd /opt/
# wget http://h.yimg.com/lo/downloads/5.0.14_GA/ zcs-5.0.XX_GA_XXX.RHEL5.XXXXXXXXXXXXXX.tgz

OBS.: Não coloquei o link completo acima pois dentro de poucos meses deve sair uma nova revisão do Zimbra.

Agora, tendo terminado o Download, acesse o diretório (caso ainda não esteja nele) e descompacte o arquivo.

# tar -zxvf zcs-5.0.XX_GA_XXX.RHEL5.XXXXXXXXXXXXXX.tgz

OBS.: substituí os números da versão por X, pois você pode estar utilizando outra versão do aplicativo

Agora, podemos acessar o diretório que foi criado, onde devem estar os scripts de instalação, bem como os pacotes pré-compilados.

# cd zcs-5.0.XX_GA_XXX.RHEL5.XXXXXXXXXXXXXX

Torne o install.sh executável, para que possamos iniciar a instalação:

# chmod +x install.sh

Finalmente, execute o script de instalação:

./install.sh –platform-override

OBS.–platform-override : Esta opção é utilizada para que o script não faça o check de distribuição. Como estamos instalando em um CentOS5, com pacotes do Red Hat, o script irá abortar a instalação pois a distribuição não confere.

Para maiores informações sobre outras opções, como pular a checagem de espaço em disco, execute o script install.sh com a opção “–help”:

# ./install.sh –help

Apêndice – A Gambiarra

Este passo pode ser necessário caso o sistema não consiga verificar de forma correta as dependências, isto ocorreu apenas na versão 5.0.14, talvez, neste momento, o instalador já tenha sido corrigido.

Edite o Arquivo “install.sh” e localize a função CheckDepend, comente-a e rode o script novamente.

Continuando a instalação

O script deverá listar-lhe algumas informações na tela, como o check de dependências e o famoso contrato de licença. Siga as instruções na tela que não deve haver erro, este ponto é “a la Windows”, apenas um “Yes” e “Accept” :).

No próximo ponto o instalador deverá perguntar quais pacotes você deseja instalar. Particularmente, eu não instalo os Proxy’s, pois eles gastam mais processamento. Caso você seja fanático por segurança, e tenha uma máquina bem robusta, os Proxy’s podem dar uma incrementada neste ponto. (ver tela abaixo)

Install zimbra-ldap [Y]
Install zimbra-logger [Y]
Install zimbra-mta [Y]
Install zimbra-snmp [Y]
Install zimbra-store [Y]
Install zimbra-apache [Y]
Install zimbra-spell [Y]
Install zimbra-proxy [N]

Pronto, agora nos selecionamos os pacotes que queremos instalar, o script de instalação é que irá se encarregar do trabalho pesado por nós, como conferir os pacotes e etc. Porém, neste pondo um aviso nos será dado (caso você esteja rodando o ContOS). Nada de pânico, lembre-se que estamos utilizando os pacotes do Red Hat, então ele irá nos avisar que o sistema será alterado. Responta sim (com Y) para todas as perguntas: (tela abaixo)

You appear to be installing packages on a platform different
than the platform for which they were built
This platform is CentOS5
Packages found: zimbra-core-5.0.XX_GA_XXX.RHEL5-XXXXXXXXXXXXXX.i386.rpm
This may or may not work
Install anyway? [N] Y
The system will be modified. Continue? [N] Y

Agora, você pode tomar um cafézinho (dependendo do servidor, é claro), e aguardar o termino da instalação dos pacotes, que deverá ser automática. Caso ocorra algum erro, verifique se os pacotes não estão com problemas (pacotes corrompidos devido a problemas no download e etc) ou defeito de hardware.

Concluída a instalação, você irá receber uma mensagem de erro. Não se assuste, esta mensagem é normal. O instalador apenas irá informar que não foi possível resolver o domínio, e lhe perguntará se você quer configura-lo manualmente: (tela abaixo)

DNS ERROR resolving zimbrasrv.server.com.br
It is suggested that the hostname be resolveable via DNS
Change hostname [Yes] Yes

Digite YES, para especificar o endereço completo do seu servidor (zimbrasrv.server.com.br, como no exemplo utilizado anteriormente)

Mais um aviso de erro na resolução DNS será exibido em seguido: (tela abaixo)

DNS ERROR resolving MX for zimbrasrv.server.com.br
It is suggested that the domain name have an MX record configured in DNS
Change domain name? [Yes] Yes

Novamente, digite YES, para neste momento especificar apenas o domínio (server.com.br – do exemplo anterior)

Este domínio cadastrado acima, será o domínio principal (Default Domain) do Zimbra, você pode cadastrar mais domínios pelo painel de administração posteriormente. Através dele, você irá fazer o primeiro acesso ao painel de controle e ao webmail. 🙂

Resolvidos os “problemas”, vamos para a configuração básica do Zimbra. Nela, será exibida a tela abaixo:

Main menu

1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled

+Create Admin User: yes
+Admin user to create: [email protected]
******* +Admin Password UNSET
+Enable automated spam training: yes
+Spam training user: [email protected]
+Non-spam(Ham) training user: [email protected]
+Global Documents Account: [email protected]
+SMTP host: debian2.exemplo.com.br
+Web server HTTP port: 80
+Web server HTTPS port: 443
+Web server mode: http
+IMAP server port: 143
+IMAP server SSL port: 993
+POP server port: 110
+POP server SSL port: 995
+Use spell check server: yes
+Spell server URL: http://debian2.exemplo.com.br:7780/aspell.php

4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit

Durante a configuração básica, você deve setar APENAS a senha do administrador. Para isto, selecione a opção 3 do menu, e depois no próximo menu, a opção 4, para efetuar a troca da senha do usuário “Admin”.

Efetuado o cadastro da senha, pressione “r” até voltar a tela inicial (menu listado anteriormente).

Pronto, precisávamos setar apenas esta senha para que tudo possa funcionar. Para aplicar a configuração, pressione “a”.

Em seguida, o instalador irá solicitar-lhe que salve a configuração, basta seguir a instrução na tela que não tem erro 🙂

Após salvar a configuração, ele irá perguntar se você deseja iniciar o servidor Zimbra; bom, acredito que a esta altura você já esteja curioso para vê-lo funcionando, então selecione sim (“Y”)

Pronto, os serviços serão carregados em alguns minutos (dependendo da configuração do servidor, poderá demorar algum tempo), e após terem iniciado, você pode acessar o painel de administração da seguinte maneira, através de seu navegador favorito, em outro computador que esteja na mesma rede:

https://zimbrasrv.server.com.br:7071/

O acesso ao webmail fica na porta 80 do domínio/host cadastrado, sendo assim, não há necessidade de especificar porta:

http://zimbrasrv.server.com.br

Dicas básicas de administração

Para iniciar, parar ou reiniciar os serviços do Zimbra no CentOS ou RHEL, você pode utilizar o comando abaixo, em um terminal:

# service zimbra start/stop/restart

no debian:

# /etc/init.d/zimbra start/stop/restart

ou ainda, utilizamos o su (como root) e rodamos o zmcontrol a partir do usuário “zimbra”, criado automaticamente pelo instalador do zimbra:

# su zimbra -z zmcontrol stop/start

Caso queira utilizar mais comandos administrativos, acesse a conta zimbra (mencionada anteriormente):

# su zimbra

E basta dar um zm(tab) para ver as opções administrativas.

Ex.: zmcontrol status -> lista o estado dos servidores do Zimbra

OBS. 1: Os controles do zimbra ficam em /etc/zimbra/bin e /etc/zimbra/libexec, inclusive é possível reconfigurar todo o servidor através de /etc/zimbra/libexec.

OBS. 2: As funções/serviços do zimbra contidos em /etc/zimbra/bin somente funcionam com o usuário zimbra.

Para mante-lo atualizado, basta seguir os mesmos passos da instalação. O script irá detectar que você já possui o zimbra instalado e fará apenas a atualização dos pacotes, de forma transparente, e sem solicitar quaisquer configuração.

Algumas dicas, e resolvendo possíveis problemas

Renovação de certificados SSL

O Zimbra precisa que os certificados de segurança sejam atualizados a cada ano, para isso, basta seguir os passos abaixo:

Criar o certificado CA:

# /opt/zimbra/bin/zmcertmgr createca -new

Instalar o certificado CA:

# cp /opt/zimbra/ssl/ssl/ca/ca.key /opt/zimbra/conf/ca/ca.key

Criar o certificado do servidor:

Para isso, remova antes o certificado antigo:

# rm /opt/zimbra/ssl/zimbra/server/server.crt

Agora crie o novo

# /opt/zimbra/bin/zmcertmgr createcrt self -new dominio.com dominio2.com (e etc.)

Pronto, agora efetue a instalação do certificado:

# /opt/zimbra/bin/zmcertmgr deploycrt self

Agora basta reiniciar o zimbra:

No CentOS

# service zimbra restart

No Debian

# /etc/init.d/zimbra restart

ou, como usuário zimbra

# su zimbra
# zmcontrol stop
# zmcontrol start

Ativar HTTPS para o webmail

Hoje em dia, a segurança é um ponto muito solicitado pelos usuários, e a utilização de SSL para acesso ao webmail passou a ser uma exigência dos usuários. O Zimbra conta com este tipo de acesso, e este pode ser configurado.

Para ativar a conexão SSL no webmail do Zimbra:

Logue-se como usuário zimbra:

# su zimbra

E agora, vamos utilizar o zmylsctl, com um dos parâmetros listados abaixo:

  • http – Apenas modo http (http://webmail.dominio.com)
  • https – Apenas modo https (https://webmail.dominio.com) – Você NÃO será redirecionado do http para o https.
  • mixed – Ambos os modos, ao conectar no modo http, você é direcionado automaticamente para o modo https.
  • both – O usuário pode utilziar tanto http quanto https.

Por exemplo:

# zmtlsctl mixed

Após ter efetuado estas alterações, o Zimbra deve ser reiniciado.

Digite os comandos em no terminal:

No CentOS

# service zimbra restart

No Debian

# sh /etc/init.d/zimbra restart

ou, como usuário zimbra

# su zimbra
# zmcontrol stop
# zmcontrol start

OBS.: Como os certificados não são autenticados por uma certificadora válida, sempre irá ocorrer o famoso erro de certificado nos navegadores, sendo assim, é interessante trabalhar com o “modo both”

Possíveis Problemas

Resolvendo o problema: “Não é possível exibir o status do servidor” – No painel de controle do Zimbra

Caso o Zimbra não consiga exibir o status do sistema no Painel de Administração, deve-se adicionar as tarefas agendadas do mesmo no crontab:

Acesse o crontab do usuário Zimbra:

# crontab -u zimbra -e

Agora, adicione as tarefas abaixo:

#ZIMBRA START — DO NOT EDIT ANYTHING BETWEEN THIS LINE AND ZIMBRAEND
#
# Log pruning
#
30 2 * * * find /opt/zimbra/log/ -type f -name *.log* -mtime +8 -exec rm {} ; > /dev/null 2>&1
#
# Status logging
#
*/2 * * * * /opt/zimbra/libexec/zmstatuslog
*/10 * * * * /opt/zimbra/libexec/zmdisklog
#
#
# crontab.ldap
#
#
# crontab.store
#
# Log pruning
#
30 2 * * * find /opt/zimbra/mailboxd/logs/ -type f -name *log* -mtime +8 -exec rm {} ; > /dev/null 2>&1
0 2 * * * /opt/zimbra/libexec/zmroll_catalina > /dev/null 2>&1
#
# Purge messages
#
0 3 * * * /opt/zimbra/libexec/zmpurgemessages > /dev/null 2>&1
#
# Clean up the quarantine dir
#
0 1 * * * find /opt/zimbra/amavisd/quarantine -type f -mtime +7 -exec rm -f {} ; > /dev/null 2>&1
#
# Table maintenance
#
30 1 * * 7 /opt/zimbra/libexec/zmmaintaintables >> /dev/null 2>&1
# Report on any database inconsistencies
#
0 23 * * 7 /opt/zimbra/libexec/zmdbintegrityreport -m
#
# Monitor for multiple mysqld to prevent corruption
#
*/5 * * * * /opt/zimbra/libexec/zmcheckduplicatemysqld -e > /dev/null 2>&1
#
# crontab.logger
#
# process logs
#
00,10,20,30,40,50 * * * * /opt/zimbra/libexec/zmlogprocess > /tmp/logprocess.out 2>&1
#
# Graph generation
#
10 * * * * /opt/zimbra/libexec/zmgengraphs >> /tmp/gengraphs.out 2>&1
#
# Daily reports
#
10 1 * * * /opt/zimbra/libexec/zmdailyreport -m
#
#
# crontab.mta
#
#
# Queue logging
#
0,10,20,30,40,50 * * * * /opt/zimbra/libexec/zmqueuelog
#
# Spam training
#
0 23 * * * /opt/zimbra/bin/zmtrainsa >> /opt/zimbra/log/spamtrain.log 2>&1
#
# Spam training cleanup
#
45 23 * * * /opt/zimbra/bin/zmtrainsa –cleanup >> /opt/zimbra/log/spamtrain.log 2>&1
#
# Dspam cleanup
#
#
#0 1 * * * find /opt/zimbra/dspam/var/dspam/data/z/i/zimbra/zimbra.sig/ -type f -name *sig -mtime +7 -exec rm {} ; > /dev/null 2>&1
#8 4 * * * /opt/zimbra/dspam/bin/dspam_logrotate -a 60 /opt/zimbra/dspam/var/dspam/system.log
#8 8 * * * /opt/zimbra/dspam/bin/dspam_logrotate -a 60 /opt/zimbra/dspam/var/dspam/data/z/ou
#
# Spam Bayes auto-expiry
#
20 23 * * * /opt/zimbra/libexec/sa-learn -p /opt/zimbra/conf/salocal.cf –dbpath /opt/zimbra/amavisd/.spamassassin –siteconf
igpath /opt/zimbra/conf/spamassassin –force-expire –sync > /dev/null 2>&1
#
# Clean up amavisd/tmp
#
15 5,20 * * * find /opt/zimbra/amavisd/tmp -maxdepth 1 -type d -name ‘amavis-*’ -mtime +1 -exec rm -rf {} ; > /dev/null 2>&1
# ZIMBRAEND — DO NOT EDIT ANYTHING BETWEEN THIS LINE AND IMBRASTART
Rolar para cima