Implementação completa de um servidor de e-mail usando Zimbra
Autor: Anderson Barbosa de Souza | Publicado: 2012-08-29T12:52:00-07:00







Software:Sistema Operacional: CentOS 5.3 32-bitsRepositórios Adicionais: Epel e RPM FusionObservações:Conhecimentos Necessários: redes, conceitos de serviços de redes (DNS e E-Mail) e manipulação de arquivos e pastas no Linux.Nível de experiência: IntermediárioNível de dificuldade: 6.0O Zimbra é uma suíte de colaboração e mensageria. Ele incorporta um poderoso e intuitivo webmail, calendário corporativo, mensageiro instantâneo, gerenciador de tarefas, porta-arquivos, agenda, anti-vírus, anti-spam entre outros recursos.O Zimbra tem como seu diferencial o recurso de permitir compatilhar itens entre contas. Desta forma os usuários podem compartilhar informações com outros usuários de forma fácil e eficiente.Iremos inciar uma instalação completa de todos os requisitos para que tenhamos um servidor de colaboração funcional e com todos os recursos.Seguiremos um passo-a-passo. Sugiro que o leitor atente a todos os detalhes para que nossa implementação ocorra de forma tranquila.Vamos lá!à&nbsp;Passo 1 – Instalação e configuração do DNSDNS é a sigla para Domain Name System. É um sistema de gerenciamento de nomes hierárquico e distribuído que opera seguindo duas definições:


Examinar e atualizar seu banco de dado;


Resolver nomes de domínios em endereços de redes (IP);



O servidor DNS traduz nomes para os endereços IP e endereços IP para nomes respectivos, e permitindo a localização de hosts em um domínio determinado.Para implementar nosso servidor DNS os seguintes pacotes:


bind;


bind-chroot;


caching-nameserver;




&gt; yum install bind bind-chroot caching-nameserver



Passo 1.1 – Configuração do named.confNas novas versões do CentOS 5, Fedora 6, 7, 8 e 9, RHEL 5 o arquivo não se chama maisnamed.conf&nbsp;e sim&nbsp;caching-nameserver.conf. Teremos que configurar o arquivo&nbsp;caching-nameserver.conf&nbsp;para que fique com o nome&nbsp;named.conf&nbsp;para que funcione.


&gt; rm -rf /etc/named.caching-nameserver.confà&nbsp;removemos o arquivo named.chaching-nameserver.conf que se localiza dentro de /etc&gt; cd /var/named/chroot//etc/à&nbsp;direcionamos para dentro do diretorio /var/named/chroot/etc&gt; mv /var/named/chroot//etc/named.caching-nameserver.conf named.confà&nbsp;renomeamos o arquivo named.caching-nameserver.conf para named.conf&gt; ln -s /var/named/chroot/etc/named.conf /etc/named.confà&nbsp;criamos um link simbólico dentro de /etc com o nome named.conf direcionando para /var/named/chroot/etc/named.conf&gt; ll /etc/named.conflrwxrwxrwx 1 root root 32 Jul 31 17:33&nbsp;/etc/named.conf&nbsp;-&gt; /var/named/chroot/etc/named.confà&nbsp;conferimos se o link simbólico foi criado corretamente



Abra o arquivo&nbsp;/etc/named.conf


&gt; vim /etc/named.conf



Substitua o conteúdo do arquivo pelo seguinte:


// generated by named-bootconf.ploptions&nbsp;{directory&nbsp;"/var/named";/** If there is a firewall between you and nameservers you want* to talk to, you might need to uncomment the query-source* directive below. Previous versions of BIND always asked* questions using port 53, but BIND 8.1 uses an unprivileged* port by default.*/query-source&nbsp;address&nbsp;*&nbsp;port&nbsp;53;listen-on&nbsp;{ 127.0.0.1/32;&nbsp;172.16.5.38/24;};allow-recursion&nbsp;{ 127.0.0.1/32;&nbsp;172.16.5.0/24; };};//// a caching only nameserver config//controls&nbsp;{inet&nbsp;127.0.0.1&nbsp;allow&nbsp;{ localhost; }&nbsp;keys&nbsp;{&nbsp;rndckey; };};zone&nbsp;"." IN {type&nbsp;hint;file&nbsp;"named.ca";};zone&nbsp;"localhost"IN {type&nbsp;master;file&nbsp;"localhost.zone";allow-update&nbsp;{ none; };};zone&nbsp;"0.0.127.in-addr.arpa" IN {type&nbsp;master;file&nbsp;"named.local";allow-update&nbsp;{ none; };};zone&nbsp;"teste.com.br" IN {type&nbsp;master;file&nbsp;"db.teste.com.br";};zone&nbsp;"5.16.172.in-addr.arpa" IN {type&nbsp;master;file&nbsp;"db.172.16.5.0";};include&nbsp;"/etc/rndc.key";



Não irei explicar o que cada parâmetro faz. Deixarei isso para outro post. Atente para que as configurações desse arquivo estejam de acordo com as configurações da sua infra-estrutura.Salve o arquivo e saia.

Passo 1.2 – Configurando a ZonaO próximo passo é criar os arquivos de configuração das zonas diretas e reversas que configuramos no&nbsp;named.conf.Os arquivos de zona deverão se localizar em&nbsp;/var/named/chroot/var/named. O nome do nosso arquivo de zona será&nbsp;db.teste.com.br&nbsp;conforme configuramos no&nbsp;named.conf.


&gt; vim /var/named/chroot/var/named/db.teste.com.br



O conteúdo do arquivo ficará assim:


$TTL&nbsp;86400@ IN&nbsp;SOA&nbsp;mail.teste.com.br.hostmaster.teste.com.br.2009080101&nbsp;;Serial28800&nbsp;; Refresh14400&nbsp;; Retry360000&nbsp;; Expire86400&nbsp;)&nbsp;; MinimumIN&nbsp;NS&nbsp;mail.teste.com.br.IN&nbsp;MX&nbsp;0&nbsp;teste.com.br.mail.&nbsp;IN&nbsp;A&nbsp;172.16.5.38ns1.&nbsp;IN&nbsp;A&nbsp;172.16.5.38



Salve o arquivo.

Agora criaremos o arquivo de configuração da zona reversa.Da mesma forma, os arquivos de configuração de zona reversa deverão se localizar em/var/named/chroot/var/named. O nome do arquivo que iremos criar será&nbsp;dB.172.16.5.0conforme configuramos no&nbsp;named.conf.


&gt; vim /var/named/chroot/var/named/db.172.16.5.0



O conteúdo do arquivo ficará assim:


$TTL&nbsp;86400@ IN&nbsp;SOA&nbsp;mail.teste.com.br.hostmaster.teste.com.br.2009080101&nbsp;;Serial28800&nbsp;; Refresh14400&nbsp;; Retry360000&nbsp;; Expire86400&nbsp;)&nbsp;; MinimumIN&nbsp;NS&nbsp;mail.teste.com.br.38&nbsp;IN&nbsp;PTR&nbsp;mail.teste.com.br.



Não irei explicar o que cada termo desses dois arquivos fazem. Ficará pra próxima. ;)Passo 1.3 – Configurando nosso servidorIremos editar 3 arquivos para que nosso servidor utilize ele mesmo para resolver nomes. Os arquivos são o&nbsp;/etc/hosts,&nbsp;/etc/resolv.conf&nbsp;e o&nbsp;/etc/sysconfig/network. O conteúdo desses arquivos deve ser:Editando o arquivo&nbsp;/etc/hosts:


&gt; vim /etc/hosts



O conteúdo ficará:


172.16.5.38 mail.teste.com.br mail





Editando o&nbsp;/etc/resolv.conf:


&gt; vim /etc/resolv.conf



O conteúdo ficará:


searchteste.com.brnameserver172.16.5.38



Editando o&nbsp;/etc/ sysconfig/network:


&gt; vim /etc/sysconfig/network



O conteúdo ficará:


NETWORKING=YesNETWORKING_IPV6=noNETWORKING_IPV4=YesHOSTNAME=mail.teste.com.br



Para aplicar as configurações de rede reinicie o servidor. Caso não queira reinicar utilize o comando hostname  para que a configuração do nome do host seja aplicada imediatamente.


&gt; hostname mail.teste.com.br



Para conferir se o nome do host foi configurado corretamente utilize o comando hostname somente e verifique o output.Passo 1.4 – Iniciando o serviço de DNSDepois de configurar todos os arquivos necessários para que tenhamos um servidor de DNS funcional iremos iniciar o serviço:


&gt; service named startStarting named: [&nbsp;OK&nbsp;]



Se o output for igual o acima, parabéns, o primeiro passo do nosso tutorial foi feito corretamente!à&nbsp;Passo 2 – Baixando e descompactando o ZCS (Zimbra Colaboration Suite)O Zimbra tem builds específicas para algumas distros. São elas:


Red Hat Enterprise Linux (versões 4 e 5)


RedHat fedora 7;


Debian 4;


MacOS.4 (Tiger);


MacOS 10.5 (Leopard);


openSUSE Linux 10.2;


SUSE Linux Enterprise Server 10;


Ubuntu (Versões6.06 LTS e 8.04 LTS);



Como estou utliziando CentOS, que é uma distribuição derivada do Red Hat Enterprise Linux, vou utilizar o build do Zimbra para o RHEL 5. Faça o download do build referente à sua instalação. Caso seja necessário compilar.Passo 2.1 – Baixando e descompactando o ZimbraIrei baixar o build do Zimbra para o RHEL 5 e descompactar em&nbsp;/usr/src.


&gt; cd /usr/src&gt; wget http:/(…)090707164432.tgz100%[==========================&gt;] 493,408,798 1.08M/s in 8m 46s&gt; tar xfvz zcs-5.0.18_GA_3011.RHEL5.20090707164432.tgz



Antes de instalar o Zimbra iremos preparar o servidor com as dependências e retirar os pacotes que podem causar conflitos. Alguns pacotes são necessários e não vem instalados por padrão no CentOS. Os pacotes são:


compat-libstdc++-296;


compat-db;


libtool-ltdl;


gmp;


compat-libstdc++-33;


fetchmail;



Iremos também remover o sendmail e instalar o fetchmail. Para evitar conflitos iremos, nesta ordem, desinstalar o sendmail e instalar as dependências. Aproveite e deixe seu sistema operacional atualizado:


&gt; yum remove sendmail&gt; yum install compat-db gmp compat-libstdc++-296 compat-libstdc++-33 libtool-ltdl fetchmail&gt; yum update -y



Uma das dependências do fetchmail é o exim. Precisaremos desabilitá-lo para que não conflite com o MTA do Zimbra (Postfix). Para desabilitar a inicialização utilize o comando:


&gt; chkconfig exim off&gt; service exim stop



Passo 2.2 – Instalando o ZimbraO Zimbra possui sua instalação bem automatizada. Através de seu script ele faz uma série de verificações. Se seguiu o tutorial e preparou o SO conforme as especificações então a verificação deve ocorrer sem problemas, se o script lhe notificar algum problema, aborte a instalação e inicie o processo novamente.Essa instalação iremos fazer de um servidor StandAlone. Em outro momento mostrarei como fazer uma instalação multi-server.Para iniciar a instalação execute o script que está dentro da pasta do Zimbra (/usr/src/zcs-X.X.XX.RHEL5.YYYYYY. Como estou utilizando o CentOS precisarei de um parâmetro para que o script ignore a flag do sistema operacional.


&gt; ./install.sh –platform-overrideOperations logged to /tmp/install.log.16755Checking for existing installation...zimbra-ldap...NOT FOUNDzimbra-logger...NOT FOUNDzimbra-mta...NOT FOUNDzimbra-snmp...NOT FOUNDzimbra-store...NOT FOUNDzimbra-apache...NOT FOUNDzimbra-spell...NOT FOUNDzimbra-proxy...NOT FOUNDzimbra-archiving...NOT FOUNDzimbra-convertd...NOT FOUNDzimbra-cluster...NOT FOUNDzimbra-core...NOT FOUNDPLEASE READ THIS AGREEMENT CAREFULLY BEFORE USING THE SOFTWARE.ZIMBRA, INC. ("ZIMBRA") WILL ONLY LICENSE THIS SOFTWARE TO YOU IF YOUFIRST ACCEPT THE TERMS OF THIS AGREEMENT. BY DOWNLOADING OR INSTALLINGTHE SOFTWARE, OR USING THE PRODUCT, YOU ARE CONSENTING TO BE BOUND BYTHIS AGREEMENT. IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THISAGREEMENT, THEN DO NOT DOWNLOAD, INSTALL OR USE THE PRODUCT.License Terms for the Zimbra Collaboration Suite:http://www.zimbra.com/license/zimbra_public_eula_2.1.htmlPress Return to continue



O script irá verificar se existe alguma instalação anterior do Zimbra e irá imprimir os termos de uso. Aperte [ENTER] para continuar com a instalação onde irá verificar os se os pré-requisitos foram atendidos e verificar os pacotes de instalação. Após a verificação ele nos perguntará quais pacotes desejamos instalar.


Checking for prerequisites...FOUND: NPTLFOUND: sudo-1.6.9p17-3FOUND: libidn-0.6.5-1.1FOUND: fetchmail-6.3.6-1.1FOUND: gmp-4.1.4-10FOUND: compat-libstdc++-296-2.96-138FOUND: compat-libstdc++-33-3.2.3-61FOUND: libtool-ltdl-1.5.22-6.1FOUND: /usr/lib/libstdc++.so.6Checking for suggested prerequisites...FOUND: perl-5.8.8Prerequisite check complete.Checking for installable packagesFound zimbra-coreFound zimbra-ldapFound zimbra-loggerFound zimbra-mtaFound zimbra-snmpFound zimbra-storeFound zimbra-apacheFound zimbra-spellFound zimbra-proxySelect the packages to installInstall zimbra-ldap [Y] YInstall zimbra-logger [Y] YInstall zimbra-mta [Y] YInstall zimbra-snmp [Y] YInstall zimbra-store [Y] YInstall zimbra-apache [Y] YInstall zimbra-spell [Y] YInstall zimbra-proxy [N] NChecking required space for zimbra-corechecking space for zimbra-storeInstalling:zimbra-corezimbra-ldapzimbra-loggerzimbra-mtazimbra-snmpzimbra-storezimbra-apachezimbra-spellYou appear to be installing packages on a platform differentthan the platform for which they were built.This platform is CentOS5Packages found: RHEL5This may or may not work.Using packages for a platform in which they were not designed formay result in an installation that is NOT usable. Your supportoptions may be limited if you choose to continue.Install anyway? [N]YThe system will be modified. Continue? [N] Y



Atente que o script reconheceu que a nossa plataforma é o CentOS 5 e o build do Zimbra é para RHEL 5. Como sabemos que as plataformas são compatíveis iremos continuar a instalação. Ao aceitar continuar a instalação, o script irá instalar os pacotes dos módulos que selecionamos. Em seguida nos será solicitada as configurações de DNS.


Removing existing packageszimbra-ldap...donezimbra-logger...donezimbra-mta...donezimbra-snmp...donezimbra-store...donezimbra-core...doneInstalling packageszimbra-core......zimbra-core-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...donezimbra-ldap......zimbra-ldap-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...donezimbra-logger......zimbra-logger-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...donezimbra-mta......zimbra-mta-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...donezimbra-snmp......zimbra-snmp-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...donezimbra-store......zimbra-store-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...donezimbra-apache......zimbra-apache-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...donezimbra-spell......zimbra-spell-5.0.18_GA_3011.RHEL5-20090707164432.i386.rpm...doneOperations logged to /tmp/zmsetup.08012009-225502.logSetting defaults...DNS ERROR resolving MX for mail.teste.com.brIt is suggested that the domain name have an MX record configured in DNSChange domain name? [Yes] yesCreate Domain: [mail.teste.com.br] teste.com.brMX: teste.com.br (172.16.5.38)Interface: 172.16.5.38Interface: 127.0.0.1Interface: 192.168.122.1done.Checking for port conflicts



Após a instalação dos pacotes ele irá procurar pelo registro MX no DNS. Como o hostname do nosso servidor é mail.teste.com.br. Quando pedir se deseja mudar o nome do domínio, confirme e configure o novo nome para teste.com.br.


&gt; Change domain name? [Yes] yes&gt; Create Domain: [mail.teste.com.br] teste.com.br



Se a configuração de DNS estiver correta, ele irá encontrar o registro MX e continuará a instalação mostrando um menu de configuração.Neste menu poderemos configurar a maior parte do Zimbra, entretanto iremos somente configurar o básico para funcionar nosso servidor de e-mail. Neste primeiro momento iremos configurar a senha do usuário a dministrador e o timezone.





Main menu1) Common Configuration:2) zimbra-ldap: Enabled3) zimbra-store: Enabled+Create Admin User: yes+Admin user to create: admin@teste.com.br******* +Admin Password UNSET+Enable automated spam training: yes+Spam training user: spam.kt4e8v1gm@teste.com.br+Non-spam(Ham) training user: ham.jzibqitm@teste.com.br+Global Documents Account: wiki@teste.com.br
+SMTP host: mail.teste.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://mail.teste.com.br:7780/aspell.php+Configure store for use with reverse mail proxy: FALSE+Configure store for use with reverse web proxy: FALSE4) zimbra-mta: Enabled5) zimbra-snmp: Enabled6) zimbra-logger: Enabled7) zimbra-spell: Enabled8) Default Class of Service Configuration:r) Start servers after configuration yess) Save config to filex) Expand menuq) Quit



Para configurarmos a senha do administrador siga o menu [3] e em seguida [4], digite a nova senha e pronto.Para voltar ao menu principal use [R].Para configurarmos o timezone siga o menu [1], em seguida menu [6]. Para (GMT-3.00)Brasilia usamos [26].[R] para retornar ao menu principal, [A] para aplicar as configurações. Siga as instruções na tela.

Se todas as configurações foram seguidas, a instalação terminará com sucesso sem problemas. Se houver algum problema, volte e revise as configurações.Além do serviço de e-mail é necessário domínio sobre outros serviços básicos como DNS, Anti-Spam, etc. Em posts futuros mostrarei como configurar esses serviços.