O @anahuac do canal zimBrasil do Telegram (https://t.me/zimBrasil) estava com uma situação onde era necessário re-enviar emails do dia anterior a partir de uma determinada hora. Acontece que o gateway de saída estava com uma configuração errada e bloqueou o envio de emails por um determinado período de tempo.

O Problema

Alguma dezena de e-mails não foram enviados! e agora?

A Solução

Fazer backup dos usuários com a seguinte query:

  • pasta “Sent/Enviados”
  • Data de ‘ontem’ – vamos supor que a data será: 25 de Julho de 2019 (no formato MM/DD/AAAA)

Para realização do backup, iremos utilizar o zmmailbox do pŕoprio zimbra – Rode todos os comandos com usuário zimbra (su – zimbra).

No exemplo, iremos utilizar a conta ananias@zimbrasil.com.br e o diretório para guardar os backups que vamos realizar será o /tmp/bkp_sent

mkdir /tmp/bkp_sent

cd /tmp/bkp_sent

zmmailbox -z -m ananias@zimbrasil.com.br gru ‘/?fmt=tgz&query=under:”sent” and date:”7/25/2019″‘ > /tmp/bkp_sent/ananias@zimbrasil.com.br.tgz

!!Tudo em uma única linha!!

Explicando:

zmmailbox -z -m ananias@zimbrasil.com.br – definindo a conta a ser realizado o backup.

gru – ou getRestURL – definindo que será através da API do próprio zimbra

fmt=tgz – Formato do backup do tipo tgz

query= – informaremos quais os parametros de consulta para realização do backup. Vamos utilizar o under e o date.

under:”sent” – Que estejam na pasta sent (se precisar de todas as subpastas da pasta sent, ao invés de under:, utilize in:)

date:”7/25/2019″ – Data que deve ser recuperada as mensagens.

/tmp/bkp_sent/ananias@zimbrasil.com.br.tgz – nome do arquivo onde será gravado o backup.

Descompactando o arquivo de backup gerado com o comando anterior.

tar -zxvf ananias@zimbrasil.com.br.tgz

Uma pasta chamada Sent deve ter sido criada. Entre nela:

cd Sent

Dentro dela deverá conter os arquivos .eml e .eml.meta.

Exemplo:

0000036362-Comprovantes.eml
0000036362-Comprovantes.eml.meta
0000036374-Solicitação das Notas fiscais.eml
0000036374-Solicitação das Notas fiscais.eml.meta
0000036384-Re_ RES_ Solicitação das Notas fiscais.eml
0000036384-Re_ RES_ Solicitação das Notas fiscais.eml.meta

Iremos precisar dos arquivos .eml para enviar novamente.

Para enviar arquivo por arquivo, faça o seguinte

cat 0000036362-Comprovantes.eml| sendmail -t

Pronto! o e-mail foi enviado mantendo todas as características do original (Remetente, Destinatário, Assunto, conteúdo, anexos, etc).

Enviando todos:

Dentro da pasta Sent, rode o comando abaixo:

for i in `ls`; do cat $email |sendmail -t; done

Cuidado para não fazer algo grotesco!

Dúvidas somente pelo canal zimBrasil do Telegram t.me/zimBrasil