email

Atualização do Zimbra para a versão 6

A alguns dias atrás, foi lançada a versão 6 do Zimbra, para atualizar da versão 5 para a 6, o processo é relativamente simples.
Dando continuidade ao howto que escrevi anteriormente, vou descrever os passos necessários para atualizar o zimbra.

Dependências:
O “Zimbra 6″ requer a instalação um pacote novo: sysstat
# yum install sysstat

Download:
Entre em http://www.zimbra.com/community/downloads.html e baixe versão mais atual do zimbra.

Atualização:
# tar xvfz zcs-6
# cd zcs-6
(No CentOS 5.x ou outra distro não listada)
# ./install --plataform-override
(Outra distro suportada oficialmente)
# ./install

Responda as perguntas que aparecem na tela, caso encontre algum erro, corrija-o antes de prosseguir.

HOWTO: ISPConfig 3.x no CentOS 5.x

O ISPConfig é uma ótima ferramenta Open Source para gerenciamento completo de um servidor de Web Hosting. Ele possui ferramentas que abrangem todos os itens indispensáveis para este tipo de serviço, como emails, web, ftp, dns, mysql, revendedores (reseller), painel administrativo para o usuário gerenciar o seu domínio, etc.. é sem dúvidas, uma ótima alternativa ao cPanel WHM.

Instale o repositório rpmforge de acordo com este guia: Adicionando o repositório rpmforge no CentOS 5.X

Pré ajustes

  • Desabilite o Selinux
  • Desabilite o firewall do CentOS
  • Ambos podem ser desabilitados através do menu “setup” – no item “firewall”.

    Preparando o servidor e instalando as dependências:
    # yum remove sendmail
    # yum update
    # yum install amavisd-new bzip2 clamav clamav-data clamav-server clamav-update clamd curl curl-devel cyrus-sasl-devel expect gamin-devel gcc gcc-c++ gdbm-devel getmail httpd imagemagick libtool libtool-ltdl-devel libxml2 libxml2-devel mysql-devel mysql-server ntp openldap-devel openldap-servers openssl-devel pam-devel pcre-devel perl-datetime-format-builder perl-datetime-format-http perl-dbd-mysql perl-libwww-perl php php-bcmath php-common php-devel php-eaccelerator php-gd php-imap php-ldap php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql phpmyadmin php-mysql php-odbc php-pear php-shout php-snmp php-soap php-tidy php-xml php-xmlrpc pkgconfig postfix postgresql-devel pure-ftpd quota redhat-rpm-config rpm-build spamassassin squirrelmail subversion unrar unzip webalizer zlib-devel -y

    Para facilitar a sua vida, reuni a instalação de todos os pacotes necessários em apenas um “yum install”, assim você pode ir tomar um café e fumar um cigarro tranquilamente enquanto o yum trabalha ;)

    Instalando serviços que não estão disponíveis nos repositórios:
    # cd /usr/src
    mydns:
    # wget http://mydns.bboy.net/download/mydns-mysql-1.1.0-1.i386.rpm
    # rpm -ivh mydns-mysql-1.1.0-1.i386.rpm

    vlogger:
    # wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
    # tar xvfz vlogger-1.3.tar.gz
    # mv vlogger-1.3/vlogger /usr/sbin/

    Courier
    Por uma exigência do courier-imap, este não pode ser compilado utilizando o usuário root, portanto, iremos criar um usuário apenas para criar os pacotes rpm, não esqueça de remove-lo no final.

    # useradd -m -s /bin/bash rpmbuilduser
    # passwd rpmbuilduser

    Edite o arquivo /etc/sudoers e adicione na última linha:
    rpmbuilduser ALL=(ALL) ALL

    Faça o download dos pacotes do courier:
    # wget http://sourceforge.net/projects/courier/files/courier-authlib/courier-authlib-0.62.4.tar.bz2
    # wget http://sourceforge.net/projects/courier/files/courier-imap/courier-imap-4.5.1.tar.bz2
    # wget http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2

    Alterne para o usuário “rpmbuilder” e prepare o ambiente para gerar os arquivos rpm
    # su rpmbuilduser

    # mkdir $HOME/rpm
    # mkdir $HOME/rpm/SOURCES
    # mkdir $HOME/rpm/SPECS
    # mkdir $HOME/rpm/BUILD
    # mkdir $HOME/rpm/SRPMS
    # mkdir $HOME/rpm/RPMS
    # mkdir $HOME/rpm/RPMS/i386
    # mkdir $HOME/rpm/RPMS/x86_64

    # echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

    Crie os rpms do courier-authlib e instale os pacotes requeridos pelo ISPConfig
    # rpmbuild -ta courier-authlib-0.62.4.tar.bz2
    # sudo rpm -ivh /home/rpmbuilduser/rpm/RPMS/i386/courier-authlib-0.62.4-1.i386.rpm
    # sudo rpm -ivh /home/rpmbuilduser/rpm/RPMS/i386/courier-authlib-mysql-0.62.4-1.i386.rpm
    # sudo rpm -ivh /home/rpmbuilduser/rpm/RPMS/i386/courier-authlib-devel-0.62.4-1.i386.rpm

    Mesmo procedimento com o courier-imap
    # rpmbuild -ta courier-imap-4.5.1.tar.bz2
    # sudo rpm -ivh /home/rpmbuilduser/rpm/RPMS/i386/courier-imap-4.5.1-1.i386.rpm

    E finalmente o maildrop…
    # rpmbuild -ta maildrop-2.0.4.tar.bz2
    # sudo rpm -ivh /home/rpmbuilduser/rpm/RPMS/i386/maildrop-2.0.4-1.i386.rpm

    Opcionalmente, volte para o usuário root, copie os rpms para /usr/src e delete o usuário rpmbuilder
    # exit
    # mv /home/rpmbuilduser/rpm/ /usr/src/
    # userdel -r rpmbuilduser

    Edite novamente o arquivo /etc/sudoers e remova a linha adicionada anteriormente.

    Atualize o clam
    /usr/bin/freshclam

    Ative o sistema de quotas
    Edite o arquivo /etc/fstab e na linha referente a partição em que as quotas devem ser acionadas, adicione as opções “,usrquota,grpquota“:
    Exemplo:
    /dev/sda3 / ext3 defaults,usrquota,grpquota 1 1
    Para ativar o sistema de quota (assumindo que você está utilizando quota na /)
    # touch /aquota.user /aquota.group
    # chmod 600 /aquota*
    # mount -o remount /
    # quotacheck -avugm
    # quotaon -avug

    Agora que todos os serviços estão instalados, inicialize eles e verifique se todos subiram corretamente.
    # service amavisd start
    # service clamd start
    # service courier-authlib start
    # service courier-imap restart
    # service httpd start
    # service mydns start
    # service mysqld start
    # service postfix start
    # service pure-ftpd start
    # service saslauthd start

    Altere o runlevel dos serviços utilizados para que estes inicializem durante o boot:
    # chkconfig --level 345 amavisd on
    # chkconfig --level 345 clamd on
    # chkconfig --level 345 courier-authlib on
    # chkconfig --level 345 courier-imap on
    # chkconfig --level 345 httpd on
    # chkconfig --level 345 mydns on
    # chkconfig --level 345 mysqld on
    # chkconfig --level 345 postfix on
    # chkconfig --level 345 pure-ftpd on
    # chkconfig --level 345 saslauthd on

    Defina uma senha de root para o banco mysql:
    # mysqladmin -u root password senhacomplexa (mas é complexa mesmo viu?)

    Nesta altura, todas as dependências e serviços que o ISPConfig estão instalados e rodando corretamente, então podemos inicializar a instalação.

    Download do ISPConfig
    # cd /usr/src
    # wget http://www.ispconfig.org/downloads/ISPConfig-3.0.1.x.tar.gz

    Descompacte e rode o script de instalação
    # tar xvfz ISPConfig-3.0.1.x.tar.gz
    # cd ispconfig3_install/install/
    # php -q install.php

    Quando você executar o install.php, você precisará responder algumas perguntas específicas do seu servidor, para a maioria delas, uma resposta satisfatória já vem definida.
    Durante a execução deste script, todos os serviços serão configurados automagicamente de acordo com as especificações do ISPConfig. Não será necessário editar nenhum arquivo manualmente.

    Após rodar o script de instalação, acesse o painel do ISPConfig em http://ipdoservidor:8080 e entre com o usuário admin senha admin (mude imediatamente esta senha)

    Observação: Durante o yum inicial, você realizou a instalação do squirrel e este encontra-se disponível em http://ipdoservidor/webmail ;)

    Pronto, seu ISPConfig deve estar completamente instalado, agora basta dedicar um pouco de tempo para configurar de acordo com as suas necessidades.

    Se você chegou neste post procurando uma alternativa para o cPanel e por algum motivo não gostou do ISPConfig, cito algumas outras opções que podem agradar:

    Domain Technologie Control
    ispCPOmega – (Fork do VHCS) – Demo – admin / admin123
    RavenCoreDemo – Login: admin / ravencore
    GNUPanel
    Virtualmin GPL

    Howto: Filtro de emails usando Spamassassin + Postfix + ClamAV + MailScanner + MailWatch

    O MailWatch é uma interface Web para o gerenciamento do MailScanner + ClamAV + SpamAssassin + Postfix, existem diversas formas de implementar uma solução para filtragem de emails, mas a minha preferência é configurar um servidor (virtual ou não) separado para esta função, principalmente devido ao fato do processo de filtragem consumir uma boa parte de recursos do hardware em servidores mais movimentados. Outra grande vantagem deste método, é que ele é compatível com qualquer serviço de email (zimbra, exchange, groupwise, etc….).

    Neste post vou explicar como montar um servidor para filtrar todo o seu tráfego de emails, realizando a remoção do “lixo eletrônico” antes de entregar as mensagens para o seu servidor principal de emails.

    Partindo de uma instalação mínima do CentOS 5.3, remova o “sendmail”
    # yum remove sendmail
    Instale o postfix + serviços necessários
    # yum install postfix mysql-server php-mysql php-gd  httpd gcc spamassassin patch rpm-build

    Instalando o clamAV:
    Baixe os pacotes RPM do clamav em: http://packages.sw.be/clamav/ e instale com o comando:
    # rpm -ivh clam*
    Preparing...       ############ [100%]
    1:clamav-db        ############ [100%]
    2:clamav           ############ [100%]
    3:clamav-devel     ############ [100%]
    4:clamd            ############ [100%]

    Instalando o Mailscanner:
    Faça o download do tar.gz contendo os pacotes RPM
    # wget http://www.mailscanner.info/files/4/rpm/MailScanner-4.XX.XX-X.rpm.tar.gz
    # tar xvfz MailScanner-4.XX.XX-X.rpm.tar.gz
    # cd MailScanner-4.XX.XX-X
    # ./install.sh

    Agora edite o arquivo /etc/MailScanner/MailScanner.conf
    %org-name% = Nome da Empresa
    %org-long-name% = Nome completo da empresa
    Run As User = postfix
    Run As Group = postfix
    Incoming Queue Dir = /var/spool/postfix/hold
    Outgoing Queue Dir = /var/spool/postfix/incoming
    MTA = postfix
    Virus Scanners = clamd
    Clamd Socket = /tmp/clamd.socket
    Use SpamAssassin = yes
    SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin

    Instalando o Mailwatch:
    Faça o download da última versão “stable” do mailwatch em http://mailwatch.sourceforge.net
    Descompacte o pacote de instalação e entre no diretório mailwatch-1.0.X
    # mysql -u root < create.sql

    Crie o usuário mailwatch no mysql com permissões completas na base mailscanner
    # mysql -u root
    > GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'minhasupersenha';
    > GRANT FILE ON *.* TO mailwatch@localhost IDENTIFIED BY 'minhasupersenha';

    Edite o arquivo MailWatch.pm e ajuste os parâmetros db_user e db_pass de acordo com o usuário e senha criados.
    my($db_user) = 'mailwatch';
    my($db_pass) = 'minhasupersenha';

    Agora copie o arquivo MailWatch.pm para o CustomFunctions do MailScanner
    # cp MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions

    Criando um usuário para o MailWatch (este é o usuário com permissões de administrador, após criar este usuário, os outros podem ser geridos através da interface Web):
    # mysql mailscanner -u mailwatch -p
    Enter password: ******
    > INSERT INTO users (username, password, fullname, type) VALUES ('admin',md5('senhasegura'),'Administrator','A');

    Movendo a interface web do Mailwatch para o root dir do apache:
    # mv mailscanner/ /var/www/html/

    Ajustando permissões:
    # cd /var/www/html/mailscanner/
    # chown root:apache images
    # chmod ug+rwx images
    # chown root:apache images/cache
    # chmod ug+rwx images/cache

    Crie o arquivo conf.php com base no conf.php.example
    # cp conf.php.example conf.php
    Agora edite o conf.php e ajuste os campos: DB_USER e DB_PASS.

    Integrando o MailScanner e o Mailwatch
    Pare o MailScanner
    # service MailScanner stop

    Edite o arquivo /etc/MailScanner/MailScanner.conf e verifique se estas opções estão ajustadas

    Always Looked Up Last = &MailWatchLogging
    Detailed Spam Report = yes
    Quarantine Whole Message = yes
    Quarantine Whole Message As Queue Files = no
    Include Scores In SpamAssassin Report = yes
    Quarantine User = root
    Quarantine Group = apache (this should be the same group as your web server)
    Quarantine Permissions = 0660

    Opcionalmente (para facilitar o debug)
    Always Include SpamAssassin Report = yes

    Para integrar Whitelist/Blacklist ao mailwatch:
    Edite o arquivo SQLBlackWhiteList.pm
    Procure pela função “CreateList” e nela defina as informações da sua base de dados.
    my($db_name) = 'mailscanner';
    my($db_host) = 'localhost';
    my($db_user) = 'mailwatch';
    my($db_pass) = 'minhasupersenha';

    # cp SQLBlackWhiteList.pm /usr/lib/MailScanner/MailScanner/CustomFunctions

    Agora vamos configurar o postfix para fazer relay das mensagens do domínio:

    Edite o arquivo /etc/postfix/main.cf
    relay_domains = exemplo.com.br

    Agora edite /etc/postfix/transport e insira
    exemplo.com.br       smtp:172.22.10.93
    Execute:
    # postmap /etc/postfix/transport

    Estas duas últimas configurações farão com que o postfix permita o relay de mensagens do domínio exemplo.com.br
    Já o Transport, irá informar para o postfix que as entregas para o domínio exemplo.com.br devem ser no ip 172.22.10.93

    Após realizar testes (muito importante para um ambiente de produção), edite a zona de DNS do seu domínio, e altere a sua entrada MX de forma que aponte para o filtro de emails (e não para o seu mailserver). Desta forma todas as mensagens enviadas para exemplo.com.br cairão no sistema de filtragem e se estiverem limpas serão encaminhadas para o seu servidor de emails.

    Para acessar o Mailwatch: http://ip_do_mailwatch/mailscanner

    Howto: Instalação e configuração do Zimbra no CentOS 5.X

    Documento atualizado em 22/10/2009 para refletir a instalação do Zimbra 6.
    Os passos de instalação do Zimbra 5 e do Zimbra 6 são praticamente iguais

    O que é o Zimbra?

    O Zimbra é uma ferramenta muito completa de emails e colaboração. Ele tem incorporado um rico webmail, calendário corporativo, instant messenger, gerenciador de tarefas(todo list), porta-arquivos, editor de documentos e planilhas em um sistema parecido com Wiki, permitindo contole de versões, entre outros recursos.

    Um dos pontos altos desta ferramenta, é que ela permite que os usuários compartilhem itens de sua conta entre si. Desta forma um utilizador, pode compartilhar com um gerente, um documento, a sua lista de tarefas ou até mesmo seu calendário e caixa de emails.

    Caso você não conheça o Zimbra, recomendo que assista o seu video-tour de 2 ou 3 minutos que faz um overview completo de todos os seus recursos. Este tour pode ser encontrado aqui.

    Sobre este tutorial
    O objetivo deste artigo, é orientar o leitor durante o processo de instalação do Zimbra 6 em um CentOS 5, mas sempre lembrando, que para outras distribuições, a maioria das dicas contidas aqui, podem ser reaproveitadas mediante pequenos ajustes.

    Passo 1: Preparando o sistema operacional

    O Zimbra tem builds específicas para algumas distribuições de Linux, são elas:
    * Red Hat Enterprise Linux 4 e 5
    * Fedora 7
    * Debian 4
    * MacOS 10.4 Tiger
    * MacOS 10.5 Leopard
    * openSUSE Linux 10.2
    * SUSE Linux Enterprise Server 10
    * Ubuntu 6.06 LTS
    * Ubuntu 8.04 LTS
    Download do Zimbra Community Edition

    Como o CentOS é derivado do Red Hat Enterprise Linux, apenas com o nome e os logotipos trocados, significa que podemos utilizar o Build do Zimbra para Red Hat 5 no CentOS 5. Caso o estejas utilizando outro sistema operacional, pode sempre compilar o Zimbra a partir do código fonte que também está disponível no site. As informações para compilar o zimbra, encontram-se aqui.

    Realize a instalação do CentOS 5 normalmente, prestando atenção em dois detalhes:
    * O Servidor que está sendo configurado, deve ter um FQDN (Full qualified domain name) configurado, quando o instalador solicitar um hostname, informe algo como zimbra.exemplo.com.br
    Observar que na sua zona DNS, zimbra.exemplo.com.br deve apontar para o endereço IP de seu servidor.
    * Durante a seleção de pacotes, desmarque o Gnome – Desktop, é totalmente desnecessário para o seu servidor, usando espaço em disco e desperdiçando recursos valiosos.

    Após a instalação do Sistema Operacional, edite o arquivo /etc/hosts da seguinte forma:
    127.0.0.1 localhost.localdomain localhost
    xx.xx.xx.x zimbra.exemplo.com.br zimbra

    Onde xx.xx.xx.x é o ip da interface de rede do servidor.
    Observar que o formato IP FQDN host deve ser mantido.

    Faça as atualizações do CentOS e instale os requisitos do zimbra.
    # yum update -y
    # yum install compat-db gmp compat-libstdc++-296 compat-libstdc++-33 libtool-ltdl sysstat

    Agora remova o sendmail e para evitar conflitos com o MTA do zimbra e instale o fetchmail.
    # yum remove sendmail
    # yum install fetchmail

    Ao instalar o fetchmail, uma de suas dependências será o Exim (que irá conflitar com o MTA do zimbra(postfix)), desabilite a inicialização deste com o comando:
    # chkconfig --level 0123456 exim off

    Edite o arquivo /etc/sudoers e comente a linha “defaults requiretty”
    Edite o arquivo /etc/sysconfig/i18n e deletar a linha LANG=”en_US.UTF-8”.

    Passo 2: Instalação do Zimbra 6.x.x
    Vá para /usr/src e descompacte o pacote do Zimbra
    # tar xvfz zcs-6.0.1_GA_1816.RHEL5.20090911181524.tgz
    # cd zcs-6.0.1_GA_1816.RHEL5.20090911181524

    Execute o script de instalação:
    # ./install.sh --platform-override
    O parâmetro –platform-override serve para dizer ao Zimbra que ele deve ignorar o fato de estar sendo instalado em um CentOS ao invés de RedHat.

    Uma outra alternativa (que eu não recomendo, apenas cito) é modificar o conteúdo do arquivo /etc/redhat-release
    de
    CentOS release 5 (Final)
    para
    Red Hat Enterprise Linux ES release 5
    Desta forma não é necessário utilizar o parâmetro –platform-override, entretanto, eu não tenho certeza de quais impactos esta alteração pode trazer para o sistema operacional e/ou para pacotes instalados no futuro.

    Durante a execução do script de instalação, ele fará uma série de verificações, se você instalou um CentOS5 e preparou o sistema operacional conforme eu sugeri, a princípio todas as verificações deverão ocorrer sem problemas, caso apareça algum problema, aborte a instalação, resolva e comece novamente o processo.

    Para uma instalação “StandAlone” do Zimbra, as configurações indicadas por default já servem para a maioria dos casos.

    Ao final da instalação, se você fez tudo correto, o zimbra apresentará uma mensagem de erro informando que zimbra.exemplo.com.br não possuí uma entrada MX válida. Neste momento você irá criar o domínio exemplo.com.br
    DNS ERROR resolving MX for zimbra.exemplo.com.br
    It is suggested that the domain name have an MX record configured in DNS
    Change domain name? [Yes]
    Create domain: [zimbra.exemplo.com.br] exemplo.com.br
    MX: mail.exemplo.com.br (xx.xx.xx.x)

    Interface: xx.xx.xx.x
    Interface: 127.0.0.1

    DNS ERROR - none of the MX records for exemplo.com.br
    resolve to this host
    It is suggested that the MX record resolve to this host
    Re-Enter domain name? [Yes] no
    done.

    Após ajustar o o domain, será apresentado um menu com várias configurações do zimbra, sugiro em um primeiro momento alterar algumas delas:
    No menu 3) Zimbra Store Recomendo alterar:
    4) Admin Password
    12) Web server mode – De http para redirect, assim todo o acesso http é automagicamente redirecionado para https, adicionando um pouco mais de segurança para o usuário final.

    No menu 1) Common configuration, ajustar o 6) TimeZone

    Recomendo passar nos outros menus para verificar se as outras configurações refletem o seu ambiente. Observar também se os endereços mostrados correspondem ao seu hostname e domínio.
    Após o término da configuração, use a opção “a” para salvar e aplicar as novas configurações. O instalador passará por mais alguns pontos e com sorte, o processo estará finalizado em alguns minutos.

    Passo 3: Configurando o Zimbra
    Agora que o Zimbra está instalado e rodando corretamente, acesse o painel administrativo do seu servidor de emails em https://zimbra.exemplo.com.br:7071 com o usuário admin e a senha que você criou durante a instalação.
    Antes de começar a criar as contas de email, sugiro criar, duplicar ou editar um “class of service” para os seus usuários.
    O “Class Of Service” é como um template de configurações, ao criar um novo usuário e associar ele a um COS, todas as configurações da nova conta, serão realizadas mediante os itens pré-definidos aqui. Se alterar um item no Class Of Service, este também será replicado para todas as contas associadas a ele. Em resumo, uma maneira simples de gerenciar as configurações dos usuários.

    De imediato, eu sugiro alguns itens a serem configurados no COS, como por exemplo:
    - Features, habilitar o Instant Messenger
    - Preferences – habilitar “Automatically login to instant messaging services”
    - Preferences – habilitar “Use the GAL when autocompleting addresses”
    - Advanced – Definir Quotas para os usuários
    - Advanced – Definir uma boa política de senhas, sempre lembrando que usuários tem mania de utilizar senhas espertas como “12345″ e este tipo de atitude pode trazer problemas em um servidor de emails. (Não esqueça de definir os itens mais interessantes como Max Password Age (obrigando o user a trocar sua senha) e Unique Password history (impedindo que ele fique repetindo senhas)

    Agora em Global Settings:
    Attachments – Proíba principalmente arquivos potencialmente perigosos como .bat .com .exe .scr etc…

    Agora você está pronto para começar a criar usuários, grupos e explorar todos os recursos Zimbra. :)

    Críticas, dúvidas, sugestões e comentários são sempre bem vindos e normalmente respondidos. Sinta-se a vontade para usar o formulário abaixo.