Zimbra - Como rastrear um e-mail dentro do log

Este artigo é um estudo de caso, ocorrido em meu cotidiano de suporte ao Zimbra, e que espero ajudar a nossa comunidade. O cliente liga indagando o porquê dos e-mails não chegarem no destino, causando consequências nefastas a sua empresa (atraso no pagamentos de impostos, boletos que não chegam nos clientes etc.). Vamos ao método que utilizei para encontrar a origem do problema.

[ Hits: 30.979 ]

Por: Marcos Antônio B. de Souza em 25/09/2015 | Blog: http://marcantech.com.br


Estudo do caso: Encontrando a origem do problema no log do Zimbra



Olá pessoal,

Primeiramente gostaria de agradecer a oportunidade de participar desta comunidade e retribuir um pouco do que já recebi.

Vamos ao estudo de um caso ocorrido em meu cotidiano e que pode ajudar.

O cliente liga solicitando suporte técnico, indagando que os e-mails não estão chegando no destino, causando consequências nefastas a sua empresa (atraso no pagamentos de impostos, boletos que não chegam nos clientes etc.).

São várias as possibilidades, vamos analisar algumas:
  • Endereço de destino incorreto;
  • Endereço de remetente cadastrado em um blacklist;
  • Problemas de resolução de nomes (DNS);
  • Tamanho e/ou número de anexos;
  • Número de destinatários do e-mail;
  • Entre outros.

Então, surge na mente a fatídica pergunta... por onde iniciar? Pelo Log do Zimbra! OK, mas é uma "sopa de letrinhas" alguns irão dizer, contudo não é tão complicado assim. Observe a linha de comando para obter a visualização do Log em "tempo real":

# tail -f /var/log/zimbra.log

O resultado deste comando irá trazer uma sequencia como esta:
Linux: Zimbra - Como rastrear um e-mail dentro do log
Obs.: por questões de privacidade e segurança dos envolvidos os endereços foram suprimidos.

A composição das linhas obedece alguns padrões, porém vamos comentar somente o necessário para atender o propósito do artigo.

Observe a terceira linha:

Sep 17 10:00:00:13 correio postfix/qmgr[3356]: DA679482EF2: from=(...)

Se imaginarmos que os campos são separados por espaços em branco, as três primeiras informações referem-se à data/hora do evento. Da quarta e quinta, as informações referem-se ao endereço do servidor e o serviço/processo executado. A sexta informação é a "chave". Se observarmos as demais linhas, concluiremos que a maioria das linhas do Log têm códigos semelhantes, então vamos filtrá-los com a linha de comando abaixo:

# grep DA679482EF2 /var/log/zimbra.log | less

O comando grep, realiza uma filtragem de um determinado padrão dentro de um arquivo.

O parâmetro "DA679482EF2",trata-se da "chave" do processo de envio/recebimento do e-mail que estamos estudando.

O terceiro parâmetro é o nome do arquivo.

O quarto parâmetro "|" chama-se "pipe". De uma forma resumida, ele faz a integração da saída do comando grep com o próximo parâmetro.

Por último, acrescentamos o comando less que faz com que a saída do comando grep possa ser "navegável", ou seja, se o resultado da filtragem for muito grande, teremos condições de retornar ao início ou final, pesquisar um endereço ou outro padrão, facilitando muito a visualização.

Maiores informações sobre os comandos grep e less consulte o endereço:
Para finalizar a execução do comando pressione a tecla Q.

Até o momento, entendemos o agrupamento dos e-mails por processo através da "chave", mas quando o cliente aciona o suporte ele informa o endereço de e-mail do remetente e/ou destinatário com problemas, e agora?

Utilizaremos o mesmo método, porém com foco no endereço de e-mail para depois encontrar a "chave".

Observe junto ao cliente o horário do envio do e-mail na pasta de itens enviados do programa ou webmail utilizado pelo cliente (considerando que o servidor de e-mails e o computador estão com os relógios estejam atualizados. ;-).

Utilize a linha de comando abaixo para realizar a filtragem por endereço de e-mail:

# grep fulano@detal.com.br /var/log/zimbra.log | grep -v amavis | less

O princípio do comando grep é o mesmo, somente substituímos a "chave" pelo endereço "fulano@detal.com.br", como sendo o endereço a ser pesquisado para encontrar o problema.

Acrescentamos um segundo pipe, que filtrará a saída do primeiro grep e com o parâmetro "-v" excluímos as mensagens que contém a expressão "amavis". Veja o resultado:
Linux: Zimbra - Como rastrear um e-mail dentro do log
Veja no destaque a mensagem:

(...) address rejected: User unknown in virtual mailbox table (...)

Bingo! O cliente está digitando o endereço do destino do e-mail errado.

Este é um caso, contudo existem várias outras mensagens e cada uma demais remete a uma solução diferente que abortaremos um outro artigo.

Espero ter auxiliado, em caso de dúvidas sobre o artigo, segue meu contato:

Sds,

Marcos Antônio
marcos.souza [at] marcantech [dot] com [dot] br
;-)

   

Páginas do artigo
   1. Estudo do caso: Encontrando a origem do problema no log do Zimbra
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Qmail - Servidor de email em 20 minutos

Servidor de e-mail Postfix + MySQL + Dovecot + Cyrus

Traduzindo o Thunderbird para Português

Integrando o Exim4 com o SendGrid

Os atuais MDAs e as linguagens de filtragem de e-mail (parte 1 - Procmail)

  
Comentários
[1] Comentário enviado por Freud_Tux em 25/09/2015 - 20:03h

Bem legal e simples.
T+


[2] Comentário enviado por joaoferreira em 26/09/2015 - 14:29h

Marcos,

Parabéns pela iniciativa. Realmente sabendo analisar o log correto podemos descobrir várias coisas. É fundamental que os administradores de servidores conheça um pouco de expressão regulares facilita em filtrar logs grandes.

Agora este processo que foi realizado por meio do terminal, poderia ser realizado por meio da interface de administração. Na parte de monitoramento existe fila de email, onde consta todas as mensagens que estão no processo de fila, ele permite também filtrar por destinatário ou domínio ou endereço de IP.

Mais uma vez parabéns pelo excelente artigo.

[3] Comentário enviado por marcos_abs em 28/09/2015 - 09:04h


Agradeço a todos pelos comentários!

Temos conhecimento da existência de ferramentas dentro do Zimbra que obtêm o mesmo resultado (e longe de mim ser a pessoa que dá a última palavra no assunto), contudo já enfrentamos problemas com ela (interface web) e também estamos incentivando aos "Admins" utilizarem os recursos do sistema operacional que é ótimo.

;-)

Até o próximo.

Marcos Antônio.

[4] Comentário enviado por _ipereira em 06/10/2015 - 16:21h

Marcos,

Muito boa a explicação do log em questão.
Convivo com esse tipo de informação constantemente e sei o quanto barulho é gerado e sempre a culpa é do servidor "bloqueando" os envios do cliente.

Abraços,

[5] Comentário enviado por fabiokalled em 15/09/2016 - 15:35h

Caracas, excelente explanaçao sobre filtro de logs do Zimbra. parabéns. Me ajudou bastante.

[6] Comentário enviado por LuisChaves em 20/03/2017 - 15:51h

Olá Marcos, Parabéns pelo Artigo!

Sou iniciante em Linux e server mail! Estou enfrentando um problema e acredito que você possa me da um inicio para descobrir o que está acontecendo.

Montei um servidor de e-mail com POSTFIX, DOVECOT operando com TLS e SSL, tenho o SPF, DKIM e DMARC instalados/configurados, mas enfrento um grande problema com o DKIM.

Nos meus testes com o GMAIL, informa que DKIM=PASS, mas HOTMAIL informa DKIM=FAIL, fazendo um teste com o DKIM VALIDATOR obtenho o mesmo resultado do HOTMAIL, mas vem a informação de que a mensagem foi alterada.

Como posso rastrear o log e saber onde está havendo alteração?

O resultado frustado do DKIM:

DKIM Information:

DKIM Signature


Message contains this DKIM Signature:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=areiafina.com;
s=mail; t=1490100586;
bh=qpDz6nOU+0PRyVDfyqpkZTa/hodDhsFj/U7OAIBPjIg=;
h=From:To:Subject:Date:From;
b=jrAs3wgQ2/rFy6P5Liztlt0ZkW9H+p9Dt5xmsRe/eXJdymgovdB7JvfHoWotA8VI5
QmL1DtUNI4JDB05uOWT4AjaA0EfZkr47qzfFh0HJ7Dosjy8dhWG3kSj9xq3ZSa5WpF
jFyK93yk76YvAWtg3J0QUFXsEuEOmYuTRZJqKP6k=


Signature Information:
v= Version: 1
a= Algorithm: rsa-sha256
c= Method: relaxed/simple
d= Domain: areiafina.com
s= Selector: mail
q= Protocol:
bh= qpDz6nOU+0PRyVDfyqpkZTa/hodDhsFj/U7OAIBPjIg=
h= Signed Headers: From:To:Subject:Date:From
b= Data: jrAs3wgQ2/rFy6P5Liztlt0ZkW9H+p9Dt5xmsRe/eXJdymgovdB7JvfHoWotA8VI5
QmL1DtUNI4JDB05uOWT4AjaA0EfZkr47qzfFh0HJ7Dosjy8dhWG3kSj9xq3ZSa5WpF
jFyK93yk76YvAWtg3J0QUFXsEuEOmYuTRZJqKP6k=
Public Key DNS Lookup


Building DNS Query for mail._domainkey.areiafina.com
Retrieved this publickey from DNS: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSzxcsXS8tBGr+niKEJkHUk1ArodK/yY/v0+935cUVY/hfNr1MLpVGm8WvovRYX7Sode7wc5A06XkSDgHbVA66PoJhAQ1lPpy0a/X45E2xd+j/vt/8+u9WfOyS43UBl30xOV0yXX4BDAF6f1BwmMGtXybPoOSSBEZMFMu7fHWwjwIDAQAB
Validating Signature


result = fail
Details: body has been altered



Desde já agradeço

Luis Chaves


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts