Instalando e utilizando o Zimbra
4 de junho de 2009 | Autor: antonini
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: admin@debian2.exemplo.com.br
******* +Admin Password UNSET
+Enable automated spam training: yes
+Spam training user: spam.fhdl_h8t@debian2.exemplo.com.br
+Non-spam(Ham) training user: ham.rmg_86214@debian2.exemplo.com.br
+Global Documents Account: wiki@debian2.exemplo.com.br
+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
Por Josias Martins
<josiasmartins [at] gmail.com>
Josias Martins
04/06/2009