Receita avançada do procmail

2

Eu preciso escrever uma regra ou regras do procmail que sejam um pouco além do básico. Eu tenho o Bacula instalado e quero que todos os e-mails onde o assunto comece com Bacula: Backup OK for sejam movidos para uma pasta chamada backups - esses são bons backups, então não preciso ler regularmente essas mensagens, mas quero mantê-las los para a posteridade. Isso é claro, é fácil.

Agora a parte mais difícil. Eu preciso saber que os backups estão de fato em execução (em oposição a falhar com ERROR no assunto) e não confio em mim mesmo para garantir que a contagem de emails não lidos da minha pasta backups esteja aumentando diariamente. Então vejo algumas opções diferentes:

  1. Permitir que uma mensagem específica seja enviada para a minha caixa de entrada. Por exemplo, Bacula: Backup OK for FOO vai para minha caixa de entrada (e, idealmente, backups também, então posso excluir a cópia da minha caixa de entrada enquanto ainda tenho uma cópia em backups para fins de posteridade). Enquanto isso, Bacula: Backup OK for BAR (e qualquer coisa diferente de FOO já mencionado) sempre vai para backups e nunca perturba minha caixa de entrada.
  2. Obtenha mais inteligência com um script auxiliar que rastreia a data / hora dos últimos backups bem-sucedidos e, se passar mais de 24 horas sem inserir uma nova mensagem de correio avisando que algo está errado.
  3. Ou ambos acima para o ultra paranóico / realista, porque a porcaria acontece: -)
por JFlo 05.04.2015 / 20:17

1 resposta

1

Eu pessoalmente me concentro no # 2. Não precisa ser muito complicado, mas a solução provavelmente precisa ser adaptada às suas necessidades. Supondo que você tenha uma lista de hosts e uma pasta no formato maildir, você pode revisar mensagens recentes por algo como

find $HOME/path/to/folder/backups -mtime 0 -print0 |
xargs -r0 awk '/^Subject: Bacula: Backup OK for / { a[$6] = FILENAME }
    END { split("FOO:BAR:BAZ:QUUX", t, /:/);
        for (h in t) host[t[h]]++;
        for (h in a) delete host[h];
        for (h in host) print "No backup for " host[h] }'

Eu gosto que este script envie apenas um relatório quando algo está faltando, mas você tem o novo problema de garantir que esse trabalho tenha sido executado recentemente. Talvez você deva imprimir algo sempre e filtrar os e-mails "feitos" para uma pasta diferente ... e / ou adicionar um script de monitoramento para monitorar esse script de monitoramento. (Apenas metade no tom de brincadeira. A chave é a abstração - no final, um script de monitoramento para monitorar todos os outros scripts de monitoramento deve ser tudo o que você precisa para se monitorar ativamente.)

    
por 07.04.2015 / 08:50

Tags