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:
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:
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
;-)