Como limitar o envio de emails no host Linux / Postfix?

1

Antecedentes: Sou fã de David Allen's Getting Things Done , e isso significa que quando um email chegar à minha caixa de entrada, se eu puder responder imediatamente, quero fazê-lo e manter minha caixa de entrada limpa. Mas há um problema: se eu responder imediatamente, as chances de eu receber uma resposta para a resposta aumentam. Então, eu quero limite de taxa meu e-mail por colocando um atraso em algumas mensagens de saída . Atrasos de uma hora, quatro horas ou até mesmo um dia seriam adequados às minhas necessidades.

A minha pergunta é a melhor forma de implementar esta ideia num sistema Linux com o postfix?

Aqui estão algumas observações:

  • Posso colocar facilmente um cabeçalho X-Delay: em qualquer mensagem de saída para dizer que a mensagem deve ser atrasada e em quanto.
  • Eu posso facilmente interpor algo entre meu Agente de Usuário de Email e sendmail .
  • O e-mail é o mais próximo possível de um serviço de missão crítica. O correio de saída deve ser totalmente confiável.
  • Eu quero evitar a duplicação do serviço de fila confiável que já está no Postfix.
  • Parece que o postfix quase tem o que eu quero já. Existe um recurso chamado header_checks(5) que inspecionará os cabeçalhos e executará ações, mas, embora haja uma ação para colocar o email na fila "espera", não há ação para colocar o email na fila "adiada". Se eu conseguisse um e-mail confiável na fila "adiada" com um registro de data e hora adequado (ou seja, N horas no futuro), acho que meu problema seria resolvido.

Todas as sugestões são bem-vindas, embora eu prefira não estar no negócio de corrigir o Postfix ...

    
por Norman Ramsey 19.02.2011 / 21:03

1 resposta

1

Eu desisti de usar o postfix para resolver esse problema. Em vez disso, encontrei uma maneira relativamente limpa de resolver o problema usando o MH, que é o programa de envio que uso há mais de 15 anos:

  1. Um email de saída que deve ser atrasado por N horas é composto na "pasta de rascunho" do MH% +delayN .

  2. Quando terminar de compor o email, para garantir que deixo o email na pasta em vez de enviá-lo, tenho um programa whatnow modificado que trata send como sinônimo de quit if a mensagem é armazenada em uma pasta cujo nome tem o formato delayNNN , em que NNN é uma seqüência não vazia de dígitos.

  3. Meu trabalho cron horário verifica todas as pastas relevantes e envia arquivos com idade suficiente (detalhes elididos):

    for path in $MAIL/delay*[0-9]
    do
      minutes=...
      for outgoing in $(find $path -mmin +$minutes -name '[0-9]*')
      do
        folder=... 
        msg=...
        send -draftfolder +$folder -draftmessage $msg
      done
    done
    
por 22.05.2011 / 02:22