Zimbra

10/11/2008 12:08

InstallZimbra
......................
Este artigo (artigo original) foi gentilmente concedido por Guto Carvalho (https://www.gutocarvalho.net). 

Sistema Operacional: Debian Etch 32 Bits
Groupware: Zimbra 5.08Tabela de conteúdo [esconder]
1 Um pouco sobre o Zimbra 
1.1 Features para os usuários
1.2 Features para os Administradores
1.3 Do que é feito o Zimbra
1.4 Componentes do Zimbra
1.5 Arquitetura do Zimbra 
1.5.1 Zimbra Core
1.5.2 Zimbra LDAP
1.5.3 Zimbra MTA
1.5.4 Zimbra Store 
1.5.4.1 Data Store
1.5.4.2 Message Store
1.5.4.3 Index Store
1.5.5 Zimbra SNMP
1.5.6 Zimbra Logger
1.5.7 Zimbra Spell
1.5.8 Zimbra Backup
1.6 Pulos do gato no Zimbra
1.7 Sobre licença, uso, logos e host de serviços usando zimbra
2 O que versão Community não oferece?
3 Requisitos de instalação 
3.1 Requesitos mínimos para ambiente de testes (segundo wiki zimbra)
3.2 Requesitos mínimos para rodá-lo em produção (segundo wiki zimbra)
3.3 Requesitos mínimos para rodá-lo em produção (segundo o guto)
4 Quais navegadores são suportados pelo Zimbra
5 Explanação sobre Migrações
6 Instalando Zimbra em Diversos Cenários
7 configurações de dns
8 pré-requesitos de pacotes 
8.1 pré-requesitos para se instalar em Debian 32 Bits
8.2 pré-requesitos para se instalar em Ubuntu 64 Bits
9 Instalando em Debian 32 Bits
10 Instalando em Ubuntu 64 Bits
11 E o backup, como procedo?
12 Firewall no servidor Zimbra
13 Melhorias no controle de SPAM & VIRUS 
13.1 Integradando SPF, Razor & Pyzor ao SpamAssassin do Zimbra 
13.1.1 instalando spf query
13.1.2 instalando o razor2
13.1.3 instalando o pyzor
13.1.4 ajustando o spamassassin para trabalhar com razor2 e pyzor
13.1.5 ajustando configurações do amavisd-new
13.2 Integrando postgrey ao zimbra 
13.2.1 parametros de inicializacao do postgrey
13.2.2 whitelist do postgrey
14 Dicas 
14.1 Administrando o zimbra por linha de comando 
14.1.1 manipulando domínios
14.1.2 manipulando usuários
14.2 alterando tabelas de transporte do postfix no Zimbra
14.3 Entendendo os logs do zimbra
14.4 Personalizando a identidade visual do Zimbra
14.5 Tunning de Performance no Zimbra
14.6 Zimlets
14.7 Como adiciono um disclaimer (footer) padrao no zimbra ?
14.8 Integrando Zimbra e MailMan
14.9 Usando DSPAM com Zimbra
14.10 Atualizando Clamav do Zimbra
14.11 Fake SMTP system package
14.12 Desinstalando o Zimbra de forma completa
15 Erros Comuns 
15.1 Queue Monitoring/Monitoramento da Fila
16 Cases de Uso do Zimbra
17 Agradecimentos
18 Referências
19 Recados

Um pouco sobre o Zimbra 

O Zimbra é um moderno sistema groupware para ambientes colaborativos. Recentemente foi comprado pelo Yahoo que utilizou a expertise dos engenheiros do zimbra e as features da ferramenta para melhorar o sistema do yahoo mail. 
Features para os usuários 

Dentre as principais feautres do zimbra vale a pena citar na visão para o usuário: 
Cliente de e-mail web,
Catálogo de endereços compátivel com qualquer diretório openLDAP,
Agenda e calendário em ajax,
Compartilhamento de documentos via web, 
Sistema de controle de tarefas,
Sistema de mensagem instantânea baseado no jabber,
Sistema porta arquivos,
Sistema de documentos online,
Suporte a filtros,
Correção Ortográfica,
Busca simples através de palavras chaves,
Busca avançada através de tags,
Busca dentro de arquivos anexados,
QuickView de anexos em formato HTML,
Suporte a módulos/aplicações chamados ZIMLETS que permitem integrar sistemas da intranet ao ZIMBRA de maneira mais eficiente ou
simplesmente adicionar uma feauture ao zimbra.
Facilidade na configuração de mensagens VACTION e redirecionamentos nas configurações do usuário,
Facilidade na configuração de encaminhamento de mensagens,
Importação de arquivo ICS,
Acesso IMAP ou POP externo,
Uso de TAGS para classificar as mensagens,

Compartilhamento é a palavra no Zimbra, você pode compartilhar agenda, compromissos, tarefas, pastas do seu e-mail com outro usuário, documentos rtf, arquivos, tudo diretamente em sua interface web, a qual utiliza abundantemente a tecnologia AJAX deixando a utilização bem mais suave. 
Features para os Administradores 

Dentre as principais feautures do zimbra vale a pena citar na visão do administrador: 
Administração WEB ou CLI,
Estatísticas do servidor,
Controle e estatística de filas,
Informações sobre contas inativas a mais de 30 dias e mais de 90 dias,
Classes de serviços que permitem criar diferentes tipos de perfil para usuários,
Possibilidade de bloquear contas,
Possibilidade de fechar contas,
Controle de Anexos,
Possibilidade de desligar visualização de anexos de um usuário,
Especificar quais serviços o usuário poderá utilizar,
Especificar quais temas o usuário poderá utilizar,
Especificar quais zimlets o usuários poderá utilizar,
Visualizar caixa de e-mail de um usuário,
Configuração de Alias,
Configuração de Listas e Distribuição,
Autenticação em OpenLDAP externo,

Praticamente tudo que você faz na web é possível fazer via CLI (linha de comando) o que no meu caso é uma mão na roda! 
Do que é feito o Zimbra 

O Zimbra roda em preferencialmente em sistemas Linux com Apache Tomcat, Postfix, MySQL e OpenLDAP. 

Ele usa as tecnologias Java, JavaScript ThinClient e DHTML. 

E o protocolos, SMTP, LMTP, SOAP, XML, IMAP, POP. 
https://wiki.zimbra.com/index.php?title=ZCS_System_Architecture 
Componentes do Zimbra 

O zimbra tem várias versões, aqui estou falando especificamente da versão COMMUNITY. 

Em seus principais componentes temos... 
OpenSSL,
OpenLDAP,
Mysql,
Nginx,
Postfix,
Cyrus SASL,
Sieve Filters,
SPAMASSASSIN,
DSPAM,
Clamav,
Amavisd-new,
Verity,
Lucene,
Sleepycat,
Memcached,
https://wiki.zimbra.com/index.php?title=ZCS_System_Architecture 
Arquitetura do Zimbra 

Aqui vou discorrer rapidamente sobre a arquitetura do Zimbra. 
Zimbra Core 

O Core do Zimbra contém as bibliotecas, utilitários, ferramentas de monitoramento e arquivos de configuração básicos. 
Zimbra LDAP 

O ZCS usa o OpenLDAP, que é um sistema LDAP Open Source. A autenticação de usuários é feita através do OpenLDAP, cada conta no no servidor Zimbra possui um ID de mailbox que serve como ponto de referência para identificar a conta. O OpenLDAP do ZCS tem um SCHEMA personalizado para funcionar integrado ao zimbra, para tanto existem muitos atributos que funcionam apenas do zimbra. 
Zimbra MTA 

O ZCS utiliza o Postfix com MTA. O Postfix recebe as mensagens e faz o roteamento para o ZCS mailbox server, para isto ele utiliza LMTP. O MTA tem integrado a ele sistemas Antivirus e Antispam, sendo o CLAMAV e SPAMASSASIN. 
Zimbra Store 

O pacote Zimbra STORE do zimbra fornece os componentes para o mailbox server, incluindo o Apache Tomcat necessário para a aplicação do ZCS rodar. 

Cada servidor zimbra possui seu próprio sistema de store que armazena e faz a indexação das mensagens recebidas. 
Data Store 

As informações dos usuários ficam armazenadas em um banco de dados MYSQL, dentro dele estão informações como definições de tags, pastas, calendários, contatos, e o status sobre as mensagens de cada usuário (lida, não lida, tags e a pasta em que a mensagem reside). 
Message Store 

O Message Storage é o local onde todas as mensagens e anexos ficam armazenados. As mensagens ficam armazenadas no foramto MIME. Mensagens enviadas para multiplos usuários são armazenadas apenas uma vez no sistema de arquivos. 
Index Store 

A tecnologia de indexação e busca é feita através do Lucene. Índices dos arquivos são mantidos para cada mailbox. 
Zimbra SNMP 

Este é um pacote opcional, se for instalado ele possibilita o monitoramento de cada serviço do Zimbra, o logger vai monitorar os arquivos de logs e gerar SNMP traps. 
Zimbra Logger 

Este é um pacote opcional, se for instalado ele possibilita a integração dos serviços do zimbra com o syslog. 
Zimbra Spell 

Este é um pacote opcional, se for instalado ele possibilita o uso de corretor ortografico na groupware do zimbra, ele usa o ASPELL para fazer isto. 
Zimbra Backup 

Existem vários scripts de backup disponíveis no site do ZIMBRA para serem utilizam com a versão community. 
https://wiki.zimbra.com/index.php?title=ZCS_System_Architecture 
Pulos do gato no Zimbra 

Aqui cito alguns pulos do gato, primeiro vamos falar da indexação de mensagens, o Zimbra oferece um recurso muito interessante, vamos supor que eu envie uma mensagem para 4 amigos do seu trabalho, contendo um vídeozinho AVI de 512 KB, teoricamente cada um receberia uma mensagem de 512 K, desta forma o espaço utilizado em meu storage aumentaria 2048 KB ou 2 MegaBytes, mas isto não ocorre com o Zimbra pois ele cria um objeto em seu banco, indexa a informação e permite o acesso dos 4 usuários àquele objeto, economizando espaço no seu storage, neste caso são 1536 KB economizados, em um grande volume terás uma diminuição em seu custo de storage. 

Que eu seu saiba apenas o GMAIL faz este tipo de indexação... bacana! 
https://wiki.zimbra.com/index.php?title=ZCS_System_Architecture 
Sobre licença, uso, logos e host de serviços usando zimbra 

O zimbra utiliza da licença Mozilla para sua aplicação, cada componente do zimbra possuiu sua própria licença, para maiores informações acesse o wiki do Zimbra. 
https://www.zimbra.com/license/collaboration_suite_collective_license.html 
https://www.zimbra.com/partners/trademark_branding_faq.html 
O que versão Community não oferece? 

Não oferece administração de domínios em níveis, ou seja o usuário admin administra todos os domínios, não tem como criar um usuário para administrar um domínio específico, só nas versões comerciais existe tal opção. 

Não oferece sistema de backup NATIVO, existem alguns scripts na wiki em várias linguagens que permitem que seja feito o backup do Zimbra, mas não são perfeitos, a forma mais segura é criar um volume para o ZIMBRA em seu storage, fazer uma SNAPSHOT e jogar isto em uma fita, assim não temos paradas de serviço. 

Não oferece a criação de Cluster HA de forma nativa, se oferecesse poderíamos criar um cluster em alguns cliques. A versão comercial usa soluções RH para fazer o cluster. 

Não oferece gerenciamento inteligente do storage, isto te permite pegar as mensagens antigas e jogar em um STORAGE mais simples com custo menor para sua organização... 

Não oferece personalização profunda na interface WEB, na versão community dá apra criar temas alterando LOGO e cores, na versão comercial tem-se mais flexibilidade. 

Não oferece suporte a sistema ADS nativo. 

Não oferece suporte do zimbra por telefone, e-mail e base de conhecimento, na versão community você disponível a WIKI e os FORUMS que já são suficientes no meu ponto de vista. 

Não oferece sincronização via Outlook MAPI 

Não oferece sincronização via Apple iSYNC 

Não oferece sincronização de correio, contatos e calendário para dispositivos móveis compatíveis com PALM, SYMBIAN e WINDOWS MOBILE. 

Não oferece sincronização de correio, contatos e calendário para Blackberry. 

Não oferece sincronização de correio, contatos e calendário para dispositivos compatíveis com tecnologia J2ME. 

Todos estes recursos estão nas versões comerciais, mas dá pra viver sem eles! 
https://www.zimbra.com/products/product_editions.html 
Requisitos de instalação 
Requesitos mínimos para ambiente de testes (segundo wiki zimbra) 

Processador Intel ou AMD com clock de no mínimo 1,5 Ghz e com pelo menos 1,5 GB de RAM e 5 GB de espaço em disco para o /opt. 
Requesitos mínimos para rodá-lo em produção (segundo wiki zimbra) 

Processador Intel ou AMD com clock de no mínimo 2 Ghz e com pelo menos 2 GB de RAM para ambientes com menos de 2000 usuários, mais de 2000 mil usuários recomenda-se 4 GB de ram, 10 gb de espaço no /opt. 

Eu já sugiro ambiente com arquitetura 64 bits caso você tenha mais de 500 usuários web, por questões de performance, o espaço em disco você vai dimensionar de acordo com seus usuários e com a quota que pretende dar a cada um deles, 

Não use RAID 5 , o recomendando é RAID 1, RAID 0 ou a combinação de ambos RAID 10, que é a combinação que eu tenho usado, segundo a documentação do zimbra RAID 5 pode lhe acarretar alguns problemas de performance em ambientes com mais de 100 usuários. 
Requesitos mínimos para rodá-lo em produção (segundo o guto) 

Sugestão pessoal minha, a cada 100 usuários pense em reservar 500 MB de RAM e tenha 2 core para cada 1000 usuários, por exemplo com 2000 mil usuários você teria um computador com 4 cores e 10 gigas de ram, assim ele rodará macio, sei que parece é muito, mas é que todos estes recursos rodando em cima do tomcat podem pesar, estou falando do cenário ideal. 

Apesar de falar 500 MB para cada 100 usuários, isso foi só uma forma de mensurar, sabemos que o Zimbra pede no mínimo 2 GBytes de Ram para produção. 

Seria legal separar algumas coisas, SGBD em uma máquina, filtros em outra máquina, aplicação em outra máquina, separando não pesa. 
https://wiki.zimbra.com/index.php?title=FAQ 
https://www.zimbra.com/pdf/Zimbra%20Collaboration%20Suite%20System%20Requirements.pdf 
Quais navegadores são suportados pelo Zimbra 
Firefox 1.5+ on PC, Mac, Linux 
Internet Explorer 6+ on PC (não funciona muito bem) 
Safari 2.0+ on Mac 
Explanação sobre Migrações 

Se você for fazer uma migração do MS-Exchange para o Zimbra se deu bem, no site do Zimbra existe uma ferramenta que permite que você migre os usuários, contatos, e-mails e calendários de forma simples é rápida. Ele só não importa notas, filtros, tarefas e porta arquivos. 

Se tiver um OpenLDAP em produção você pode fazer autenticação externa via ZIMBRA. 

O Zimbra oferece um ambiente CLI para administrá-lo, o que facilita e muito a criação de scripts para criação de usuários e/ou migrações. 

Você pode também utilizar o IMAPSYNC para sincronizar mensagens e calendários de outros ambientes que não sejam MS-Exchange. 
https://wiki.zimbra.com/index.php?title=User_Migration 
https://www.zimbra.com/docs/os/latest/migration_wizard_for_exchange_installation_guide/ 
Instalando Zimbra em Diversos Cenários 
configurações de dns 

Antes de iniciar a instalação do zimbra, seu servidor deve ter... 
Endereço IP Público com Reverso Configurado;
Host com registro de DNS do tipo A na zona referente ao seu domínio;
Registro de DNS do tipo MX na zona referente ao seu domínio;

Seu domínio deve ser referenciado no /etc/hosts como o exemplo abaixo 
127.0.0.1 zcs.seudominio.com.br zcs
pré-requesitos de pacotes 
pré-requesitos para se instalar em Debian 32 Bits 
NPTL. Native POSIX Thread Library
Sudo. Superuser, required to delegate admins.
libidn. For internationalizing domain names in applications (IDNA)
cURL. A command line tool for transferring files with URL syntax
fetchmail. A remote-mail retrieval and forwarding utility used for on-demand TCIP/IP links.
GMP. GNU Multiple-Precision Library.
compat-libstdcc++-33. Compatibility Standard C++ libraries. 
( NOTE: The 32-bit version of the compat-libstdc rpm package is required for both 32-bit or 64-bit servers. )
pré-requesitos para se instalar em Ubuntu 64 Bits 
NPTL. Native POSIX Thread Library
Sudo. Superuser, required to delegate admins.
libidn. For internationalizing domain names in applications (IDNA)
cURL. A command line tool for transferring files with URL syntax
fetchmail. A remote-mail retrieval and forwarding utility used for on-demand TCIP/IP links.
GMP. GNU Multiple-Precision Library.
compat-libstdcc++-33. Compatibility Standard C++ libraries. 
( NOTE: The 32-bit version of the compat-libstdc rpm package is required for both 32-bit or 64-bit servers. )
Instalando em Debian 32 Bits 
Instalando em Ubuntu 64 Bits 
E o backup, como procedo? 

Eu aconselho que você crie um volume para o Zimbra em seu STORAGE para que você possa fazer uma SNAPSHOT do volume facilitando o backup em mídias, evitando que o serviço fique indisponível durante o backup. 
https://wiki.zimbra.com/index.php?title=Open_Source_Edition_Backup_Procedure 
Firewall no servidor Zimbra 

Basicamente voce precisa liberar as portas TCP 

25, 80, 110, 143, 389, 443, 465, 993, 995, 7071 
https://wiki.zimbra.com/index.php?title=Firewall_Configuration 

Agora vai uma dica, cuidado com a entrada 127.0.1.1 no seu /etc/hosts 

Se o seu ip 127.0.1.1 apontar para o host que escolheste para seu zimbra na instalação, lembre-se de liberar 127.0.1.1 na INPUT e OUTPUT caso sua política padrão seja DROP nas duas cadeias da tabela filter, do contrário a aplicação Zimbra MTA, SASLDAEMON e openLDAP não vão "subir". 

Outra solução, o ubuntu vem com esse ip 127.0.1.1 devido a um bug no gnome, mas como é um bug do gnome, e estamos falando de ubuntu server, algo sem ambiente gráfico, afinal não tem por que ficar gastando memoria e recursos com ambiente gráfico em um sevidor (servidor que é servidor, é tela preta!) você pode simplesmente comentar essa linha em /etc/hosts e deixar tudo na 127.0.0.1, ou seja migre o host para linha acima, isto irá evitar os ajustes na firewal citados acima, foi o que eu fiz aqui. 
Melhorias no controle de SPAM & VIRUS 
Integradando SPF, Razor & Pyzor ao SpamAssassin do Zimbra 

Aqui vamos aprender como incrementar um pouco mais o tratamento de SPAM no Zimbra! 
instalando spf query 

SPF (Sender Policy Framework) é um sistema que tenta prevenir o envio de mensagens forjadas, faz isto através de configurações em seu DNS, quando um e-mail for enviado, o servidor checará as entradas TXT/SPF no seu servidor de DNS, e através dela saberá qual servidor pode entregar mensagens com origem em seu domínio, caso alguém esteja enviando mensagens @seudominio sem ser os servidores citados no registro TXT/SPF o servidor MTA pode ser configurado para recusá-la. É uma maneira bem eficiente de evitar problemas com seu dominio. 

instale o biblioteca para checagem spf 
apt-get install libmail-spf-query-perl
instalando o razor2 

O Razor2 é um sistema colaborativo, distribuido de filtro para deteccao e controle de spam. 

instale o razor2 
apt-get install razor

crie o diretorio do razor 
mkdir /opt/zimbra/amavisd/.razor; chown -Rf zimbra:zimbra /opt/zimbra/amavisd/.razor

agora torne-se zimbra (su zimbra) e crie a conta no razor 
razor-admin -home=/opt/zimbra/amavisd/.razor -create 
razor-admin -home=/opt/zimbra/amavisd/.razor -discover 
razor-admin -home=/opt/zimbra/amavisd/.razor -register

agora edite o arquivo /opt/zimbra/conf/spamassassin/v310.pre e descomente a linha referente ao razor 
loadplugin Mail::SpamAssassin::Plugin::Razor2

agora vamos instalar pyzor 
instalando o pyzor 

O pyzor é uma rede de sistemas distríbuidos para controle de spam, este utiliza digest de mensagens para fazer análise e identificar o SPAM. 
apt-get install pyzor

crie o diretorio do pyzor 

mkdir /opt/zimbra/amavisd/.pyzor; chown zimbra:zimbra /opt/zimbra/amavisd/.pyzor 

agora como usuario zimbra (su zimbra) 
zimbra@zcs:~/amavisd$ pyzor --homedir /opt/zimbra/amavisd/.pyzor discover
downloading servers from https://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x
Traceback (most recent call last):
  File "/usr/bin/pyzor", line 8, in <module>
  pyzor.client.run()
  File "/var/lib/python-support/python2.5/pyzor/client.py", line 1005, in run
  ExecCall().run()
  File "/var/lib/python-support/python2.5/pyzor/client.py", line 184, in run
  self.servers = self.get_servers(servers_fn)
  File "/var/lib/python-support/python2.5/pyzor/client.py", line 411, in get_servers
  servers.read(open(servers_fn))
  File "/var/lib/python-support/python2.5/pyzor/client.py", line 117, in read
  self.append(pyzor.Address.from_str(line))
  File "/var/lib/python-support/python2.5/pyzor/__init__.py", line 458, in from_str
  fields[1] = int(fields[1])
IndexError: list index out of range

cabuloso não, mas fica frio, vamos resolver! 

Pelo o que pude constatar, o pyzor tenta baixar o arquivo servers atualizado em https://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x porém ele o arquivo não está disponível e portando retorna aquele erro cabuloso. 

Para resolver este problema, coloque a linha abaixo no arquivo servers dentro do diretório /opt/zimbra/amavisd/.pyzor, pois ele vai funcionar. 
zimbra@zcs:/opt/zimbra$ echo "82.94.255.100:24441" > /opt/zimbra/amavisd/.pyzor/servers

agora vamos fazer um teste para ver se nosso pyzor consegue se conectar no servidor. 
zimbra@zcs:/opt/zimbra/amavisd/.pyzor$ pyzor --homedir /opt/zimbra/amavisd/.pyzor ping
82.94.255.100:24441 (200, 'OK')
ajustando o spamassassin para trabalhar com razor2 e pyzor 

edite o arquivo /opt/zimbra/conf/spamassassin/local.cf 
ok_languages en es
ok_locales en es 
trusted_networks 127. 10.70. 192.168.
use_bayes 1
skip_rbl_checks 0
use_razor2 1
dns_available yes 

## Optional Score Increases 
## Choose your preferred values...
score SPF_FAIL 10.000  
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score PYZOR_CHECK 2.500
score BAYES_99 4.300
score BAYES_90 3.500
score BAYES_80 3.000
bayes_ignore_header Received: from mail3.example.com
bayes_ignore_header Received: from localhost
bayes_ignore_header Received: from mail1.example.com
bayes_ignore_header Received: from mail2.example.com
ajustando configurações do amavisd-new 

Edite o arquivo /opt/zimbra/conf/amavisd.conf 
$sa_tag_level_deflt = -10.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.6; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 15; # triggers spam evasive actions
$sa_dsn_cutoff_level = 15; # spam level beyond which a DSN is not sent
$sa_quarantine_cutoff_level = 15; # spam level beyond which quarantine is off

$sa_mail_body_size_limit = 512*1024; # don't waste time on SA if mail is larger
$sa_local_tests_only = 0; # only tests which do not require internet access?
https://wiki.zimbra.com/index.php?title=Improving_Anti-spam_system#SPF 
https://wiki.zimbra.com/index.php?title=Improving_Anti-spam_system#Razor2 
https://wiki.zimbra.com/index.php?title=Improving_Anti-spam_system#Pyzor 
https://wiki.zimbra.com/index.php?title=Improving_Anti-spam_system#Spamassassin_Config 
https://www.openspf.org/ 
https://razor.sourceforge.net/ 
https://pyzor.sourceforge.net/ 
Integrando postgrey ao zimbra 

O postgrey é uma implementação do conceito "greylist". Muito eficiente no combate ao SPAM a greylist consiste em uma fila especial para entrega de mensagens, ele funciona da seguinte forma, quando um MTA tentar entregar uma mensagem para o seu servidor MTA o postgrey recusar a mensagem, dando um reject com codigo 550 (ou seja, tente mais tarde), se for um servidor real, configurado de acordo com as RFC's de SMTP, ele tentará entregar a mensagem novamente depois de algum tempo, na segunda tentativa o postgrey libera o envio. Se for um sistema de SPAM ele simplesmente passa para a próxima mensagem de sua lista e não tenta entregar aquela mensagem que foi rejeitada. O postgrey é um sistema simples, com um conceito simples, porém extremamente funcional e diminui muito SPAM e VIRUS, seu fluxo de mensagens e sua fila vão diminuir bastante. 

veja neste gráfico como diminuiu a quantidade de spam e virus do servidor, analise o antes e depois. 


vamos instalar o postgrey 
apt-get install postgrey

agora vamos configurar o postfix do zimbra para ususá-lo, edite o arquivo 
vi /opt/zimbra/conf/postfix_recipient_restrictions.cf

e coloque a linha baixo antes da linha que contem a diretiva permite 
check_policy_service inet:127.0.0.1:60000
parametros de inicializacao do postgrey 

agora vamos ajustar os parametros de incializacao do postgrey, edite o arquivo /etc/defaults/postgrey e substitua 
POSTGREY_OPTS="--inet=127.0.0.1:60000"

por 
POSTGREY_OPTS="--inet=127.0.0.1:60000 --delay=60 --max-age=30"

vamos entender o que é o que! 
--delay especifica o tempo que um MTA ficara na greylist (por quanto tempo ele vai recusar msgs do mta).
--max-age significa por quanto tempo o postgrey vai manter essas informações em cache
whitelist do postgrey 

O postgrey possue 2 tipos de whitelist, uma para clients e outra para recipients, vamos ajustar a whitelist de clients, edite o arquivo /etc/postgrey/whitelist_clients e caso queria colocar parte da esplanada dos ministérios lá, ficaria assim... 
# ministerios do brasil 

planejamento.gov.br
comunicacoes.gov.br
mc.gov.br
mct.gov.br
mec.gov.br
desenvolvimento.gov.br
mds.gov.br
cultura.gov.br
cidades.gov.br
agricultura.gov.br
incra.gov.br
in.gov.br
mma.gov.br
mme.gov.br
mpas.gov.br
mre.gov.br
saude.gov.br
turismo.gov.br
presidencia.gov.br
brasil.gov.br
defesa.org.br
fazenda.gov.br
esporte.gov.br
integracao.gov.br
mj.gov.br
mte.gov.br
transportes.gov.br

# entidades com status de ministerio

agu.gov.br
cgu.gov.br
bcb.gov.br
nae.gov.br

# autarquias, agencias e programas ligados a ministerios

iti.gov.br
radiobras.gov.br
ebc.tv.br
onid.org.br
tvbrasil.org.br
serpro.gov.br
dataprev.gov.br

Salve a lista, reinicie o postgrey 
/etc/init.d/postgrey restart

ou 
invoke-rc.d postgrey restart

pronto, postgrey instalado, configurado e integrado! 
https://wiki.zimbra.com/index.php?title=Improving_Anti-spam_system#Postgrey 
https://postgrey.schweikert.ch/ 
https://greylisting.org/ 
Dicas 
Administrando o zimbra por linha de comando 

Aprenda como fazer tudo na unha! :P 
https://wiki.zimbra.com/index.php?title=Zimbra_CLI_Command_List 
https://wiki.zimbra.com/index.php?title=General_CLI_Tool_Information 
manipulando domínios 

Se transformando em zimbra 
# su zimbra

Vamos ver como se cria um domínio com autenticação local no zimbra... 
$ zmprov cd dominio.com.br zimbraAuthMech zimbra

... e agora deletando o domínio... 
$ zmprov dd dominio.com.br

... buscando informações sobre o domínio ... 
$ zmprov ga dominio.com.br

... buscando informaçõe ssobre todos os domínios ... 
$ zmprov gad dominio.com.br
manipulando usuários 

Vamos ver o quão difícil é criar um usuário no zimbra via CLI 

primeiro se transforme em zimbra 
# su zimbra

agora vamos a criação do usuário 
$ zmprov ca gutocarvalho@alwaysgeek.net senha

e agora deletando... 
$ zmprov da gutocarvalho@alwaysgeek.net

e criando um alias simples 
$ zprov aaa alias@dominio conta1@dominio.com.br conta2@dominio.com.br conta3@dominio.com.br

e agora deletando o alias 
$ zprov raa alias@dominio conta1@dominio.com.br conta2@dominio.com.br conta3@dominio.com.br

fazendo um busca que vai me mostrar todos os usuários zimbra 
$ zmprov gaa

refinando a busca para apenas um dominio 
$ zmprov gaa dominio.com.br

Vê as possibilidades de usar, perl, ruby, shell ou python para criar scripts/programas para facilitar a sua migração? 

CLI ROX! 
alterando tabelas de transporte do postfix no Zimbra 

O zimbra trabalha com templates, se for necessário alguma alteração na tabela de transporte do postfix você não deve fazer a alteração no arquivo /opt/zimbra/postfix/conf/main.cf por que quando o serviço zimbra-mta for reiniciado o arquivo main.cf será reconstruido de acordo com o seu template. 

A template do serviço está localizado em /opt/zimbra/conf/zmmta.cfg 

Troque esta linha por 
POSTCONF transport_maps LOCAL postfix_transport_maps

por algo como: 
POSTCONF transport_maps ldap:/opt/zimbra/conf/ldap-transport.cf,hash:/opt/zimbra/conf/mdaTransport

veja um exemplo de arquivos de transporte 
dominio.gov.br smtp:[mta.dominio.gov.br]
subdominio1.dominio.gov.br smtp:[mta.dominio.gov.br]
subdominio2.dominio.gov.br smtp:[mta.dominio.gov.br]
outrodominio.gov.br smtp:[mda.dominio.gov.br]

com esta tabela de transporte estamos dizendo ao mta do zimbra que se ele receber uma mensagem com destino a gutocarvalho@outrodominio.gov.br e este usuario nao existir no zcs, ele vai automaticamente direcionar a mensagem para o mta.dominio.gov.br 

Este tipo de estratégia pode ser utilizado caso você tenha um gateway MTA que consulte um arvore LDAP verificando um atributo que lhe indique qual servidor é responsável por aquela conta, algo como mailHost do qmailschema. 

Veja dois exemplos de arquivos LDIF com este atributo: 
dn: uid=jose.carvalho,ou=people,dc=dominio,dc=gov,dc=br
objectClass: inetOrgPerson
objectClass: qmailUser
uid: jose.carvalho
cn: José Augusto Carvalho
sn: Carvalho
mail: jose.carvalho@dominio.gov.br
mailHost: zcs.dominio.gov.br
userPassword: {SSHA}+ssSZPjDshK7m7FdRC6A6a21wnnTx63A
accountStatus: active
dn: uid=jose.cost,ou=people,dc=dominio,dc=gov,dc=br
objectClass: inetOrgPerson
objectClass: qmailUser
uid: jose.carvalho
cn: José Augusto Costa
sn: Carvalho
mail: jose.costa@dominio.gov.br
 mailHost: xchange.dominio.gov.br 
userPassword: {SSHA}+ssSZPjDshK7m7FdRC6A6a21wnnTx63A
accountStatus: active

Assim quando o gateway MTA receber uma mensagem para jose.carvalho@dominio.gov.br ele sabe que deverá entrega-la ao servidor zcs.mda.gov.br e se receber uma mensagem para jose.costa@dominio.gov.br ele deverá entregá-la para o servidor xchange.dominio.gov.br. 

O importante é que os servidores ZCS e XCHANGE devem ter tabelas de transporte corretamente configuradas para enviar mensagens entre si. 

Veja um exemplo deste cenário com um gateway mx. 

A título de curiosidade, aqui vai um exemplo de configuração de um postfix para atuar como gateway mx/mta. 
# See /usr/share/postfix/main.cf.dist for a commented, more complete version 

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no 

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = mxgw.mda.gov.br
#alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

mydestination = nomedoservidor.dominio.gov.br,
  dominio1.gov.br,
  dominio2.gov.br,
  dominio3.gov.br,
  dominio4.gov.br,
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# verificando se o usuario existe no diretorio, do contrario descarta
local_recipient_maps = ldap:ldapCheck
ldapCheck_server_host = localhost
ldapCheck_server_port = 389
ldapCheck_search_base = dc=br
ldapCheck_scope = sub
ldapCheck_bind = yes
ldapCheck_cache = yes
ldapCheck_timeout = 30
ldapCheck_bind_dn = cn=admin,dc=br
ldapCheck_bind_pw = mda&*(
ldapCheck_query_filter = (&(mail=%s)(accountStatus=active))
ldapCheck_result_attribute = mail
ldapCheck_dereference = 0

# verificando qual servidor atende o usuario, depois encaminha
transport_maps = ldap:mailtransport
mailtransport_server_host = localhost
mailtransport_server_port = 389
mailtransport_scope = sub
mailtransport_cache = yes
mailtransport_bind = yes
mailtransport_bind_dn = cn=admin,dc=br
mailtransport_bind_pw = mda&*(
mailtransport_timeout = 5
mailtransport_search_base = dc=br
mailtransport_query_filter = (&(mail=%s)(accountStatus=active))
mailtransport_result_attribute = mailHost
mailtransport_result_filter = relay:%s
mailtransport_lookup_wildcards = no

bom como zimbra pode se autenticar em um openLDAP externo, se voce possui um openLDAP ja funcionando, com usuarios e tudo mais, aproveite este recurso. 

Agora se você prefere criar uma arvore LDAP pura pra ter independencia do zimbra, faça a árvore direitinho, veja um exemplo de LDIF apra construir uma ávore para abrigar domínios com topo .br 

veja o exemplo de LDIF..... 
# dominio br ################

dn: dc=br
objectClass: dcObject
objectClass: organization
o: br domains
dc: br

# dominio org.br ##################

dn: dc=org,dc=br
objectClass: dcObject
objectClass: organization
o: org domains
dc: org

# dominio .gov.br #####################

dn: dc=gov,dc=br
objectClass: dcObject
objectClass: organization
o: gov domains
o: gov

# dominio dominio1.gov.br #############################################

dn: dc=dominio1,dc=gov,dc=br
objectClass: dcObject
objectClass: organization
o: dominio1.gov.br
dc: dominio1

dn: ou=people,dc=dominio1,dc=gov,dc=br
ou: people
objectClass: organizationalUnit

dn: ou=alias,dc=dominio1,dc=gov,dc=br
ou: alias
objectClass: organizationalUnit

# dominio dominio2.org.br #############################################

dn: dc=dominio2,dc=org,dc=br
objectClass: dcObject
objectClass: organization
o: dominio2.org.br
dc: dominio2

dn: ou=people,dc=dominio2,dc=org,dc=br
ou: people
objectClass: organizationalUnit

dn: ou=alias,dc=dominio2,dc=org,dc=br
ou: alias
objectClass: organizationalUnit

Alguns colegas experientes com o postfix sabem que é bem complicado especificar os mapas separando em ramos como estes acima, o fato é que neste cenário fica bem mais organizado, podem perceber também que não faço checagem de mapa de alias ou forward no GATEWAY MX, eu não faço isto pois aqui neste ponto não é necessário tratar isto, eu só preciso saber para onde eu vou entregar, se é alias ou conta normal o MTA responsável saberá tratar isto..... A questão é que a árvore fica limpa e organizada, mas lembre-se isto é um GW MX e não uma implementação de postfix com openLDAP com mailbox tudo nesta máquina, se assim fosse as configurações do postfix e design da ávore seriam mais "rebuscadas" para atender este tipo de cenário... 
Entendendo os logs do zimbra 
https://wiki.zimbra.com/index.php?title=Log_Files 
Personalizando a identidade visual do Zimbra 
https://wiki.zimbra.com/index.php?title=Theme_Directory_Structure 
https://files.zimbra.com/docs/skins/index.html 
Tunning de Performance no Zimbra 
https://wiki.zimbra.com/index.php?title=Performance_Tuning_Guidelines_for_Large_Deployments 
Zimlets 

Coloque novas feautures no zimbra ou integre seus sitemas da intranet a ele através dos Zimlets. 
https://wiki.zimbra.com/index.php?title=Zimlets 
https://wiki.zimbra.com/index.php?title=Zimlet_Developers_Guide 
https://www.zimbra.com/pdf/Zimbra%20Zimlets%20Whitepaper.pdf 

Diretório de Zimlets 
https://wiki.zimbra.com/index.php?title=Zimlet_Directory 
Como adiciono um disclaimer (footer) padrao no zimbra ? 

https://wiki.zimbra.com/index.php?title=Adding_a_disclaimer_(altermime)_or_footer 
Integrando Zimbra e MailMan 

https://wiki.zimbra.com/index.php?title=ZCS_Mailman_Integration 
Usando DSPAM com Zimbra 

https://wiki.zimbra.com/index.php?title=Using_DSPAM_for_Spam_Filtering 
Atualizando Clamav do Zimbra 

https://wiki.zimbra.com/index.php?title=Updating_CLAMAV 
Fake SMTP system package 

Os pacotes do zimbra não são reconhecidos como um MTA, no debian/ubuntu mta é Postfix ou Exim4 e ponto. 

O problema é que se eu for instalar o pacote mailx ou nail, utilitários necessários para que o bacula e qualquer programa ou serviço envie e-mail para o administrador, o debian/ubuntu vai pedir para instalar como dependência o exim4 ou postfix, ele não deixa a gente instalar só o mail-x ou nail. 

Bom para resolver isto podemos fazer um fake-smtp-mta-package ;P 

Veja como se faz 
apt-get install equivs
cd /tmp
cp /usr/share/doc/equivs/examples/mail-transport-agent.ctl .
equivs-build mail-transport-agent.ctl

estes comandos resultarão no pacote /tmp/mta-local_1.0_all.deb , agora vamos instalar. 
dpkg -i /tmp/mta-local_1.0_all.deb

pronto, agora podes instalar o mailx ou nail numa boa! 
apt-get install mailx
Desinstalando o Zimbra de forma completa 

Se você instalou o zimbra em uma máquina de testes, seja em seu desktop ou um servidor de laboratório e agora deseja colocar em produção em outro servidor, mas o servidor de testes ainda tem traços do zimbra, siga o tutorial abaixo para limpar estes traços. 

https://wiki.zimbra.com/index.php?title=UnInstall_Zimbra 
Erros Comuns 
Queue Monitoring/Monitoramento da Fila 

Se você clicar em monitoramento de filas e certificados e retornar uma bela tela de erro como esta... 
Message: system failure: exception during auth {RemoteManager: MAIL.DOMAIN.COM->zimbra@MAIL.DOMAIN.COM:22}
com.zimbra.cs.service.ServiceException: system failure: exception during auth {RemoteManager: 
  MAIL.DOMAIN.COM->zimbra@MAIL.DOMAIN.COM:22}
  at com.zimbra.cs.service.ServiceException.FAILURE(ServiceException.java:174)
  at com.zimbra.cs.rmgmt.RemoteManager.getSession(RemoteManager.java:197)
  at com.zimbra.cs.rmgmt.RemoteManager.execute(RemoteManager.java:134) 
  etc...

... que aconteceu comigo, o problema é que eu tinha alterado a porta do sshd de 22 para 2222 e a coisa parou de funcionar, o zimbra necessita se conecar na porta 22 para fazer estas checagens da fila e do certificado. 

Pode ser também outro problema, talvez relacionado as chaves SSH ou permissões, leia a wikipage abaixo para maiores informações. 

https://wiki.zimbra.com/index.php?title=Mail_Queue_Monitoring 
Cases de Uso do Zimbra 
Radiobrás (EBC) em torno de 1.000 usuários 
Universidade de Brasília (UNB) em torno de 10.000 usuários 

Tem um case? Coloque aqui horas! 
Agradecimentos 

Agradeço aos amigos da EBC pelos esclarecimentos e informações sobre sua experiência com o Zimbra Community. 
Emerson Luis, EBC, https://www.ebc.tv.br 
Reinaldo, EBC, https://www.ebc.tv.br 
David, EBC, https://www.ebc.tv.br 

Agradeço aos amigos de diversos locais, Serpro, Cobra, Dataprev, B2BR, MDS, MDA, MPOG, TRE, TRISTAR, dentre outros, que falaram muito comigo sobre postfix/ha, postfix mx/gateway/hub, postfix transport maps, openldap/syncrepl, demonstrando vários tipos de groupwares, toda a conversa foi fundamental para poder fazer uma análise bacana e escolher uma solução adequada para o meu caso. 

Blogs 
Fernando Ike, https://www.midstorm.org/~fike/weblog/ 
Ulisses Castro, https://ulissescastro.wordpress.com/ 
Deivi Kuhn, https://metalpolitica.blogspot.com/ 
César Cardoso, https://zyakannazio.eti.br/fudeblog/ 
Elias Mussi, https://diario.mussicorp.net/ 
José Pissin, https://pizza.blog.br 

Sem Blogs 
Lucius Curado, 
Josué Soares, 
José Ferronato, 
Ricardo Fagundes, 
Ulysses Almeida, 
Patrick Ximenez, 

Se esqueci de alguém é só avisar! 
Referências 
https://www.zimbra.com/ 
https://wiki.zimbra.com/ 
https://forum.zimbra.com/ 

Faq do ZCS 
https://wiki.zimbra.com/index.php?title=FAQ 

Post em Fórum sobre instalação do ZCS 5.x em Ubuntu 64bits 
https://www.zimbra.com/forums/installation/10306-howto-ubuntu-64bit-install.html 

Tutorial de Instalação do Zimbra 5.x no Debian 4 
https://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=8351 

Tutorial brazuca de intalação do ZCS 5.x 32bits no Ubuntu Hardy 
https://www.diotto.net/artigos/instalando-o-zimbra-no-ubuntu/ 

Site que faz build do Zimbra para Solaris, Ubuntu8 e FreeBSD 
https://varlogmessages.vroomvroom.org/ 

Instruções para se fazer o build do ZCS 5.x para o Ubuntu 8.x 
https://varlogmessages.vroomvroom.org/documentation/ubuntu-port/ubuntu-build-instructions
 

Voltar