É possível enfileirar uma mensagem gravando-a em um arquivo?

É possível enfileirar uma mensagem gravando-a em um arquivo?

Estou me perguntando se é possível criar mensagens de email e colocá-las na fila do postfix simplesmente gravando arquivos no disco rígido.

Atualmente tenho um script que usa uma conexão de soquete para despejar os dados, mas se eu pudesse gravá-los diretamente no disco rígido, isso aceleraria consideravelmente as coisas. Isso é possível?

Responder1

Você não deve se enfiar na fila assim, no entanto, você pode usar as ferramentas de correio da linha de comando, como:

sendmail -i [recipient@address] < [file]

o que eu acho que deve manter tudo do lado do servidor até que o postfix tente entregar.

Responder2

Sim, usando a fila maildrop:http://www.postfix.org/MAILDROP_README.html#maildrop_queue

As filas Postfix são apenas diretórios no sistema de arquivos; itens enfileirados são inodes que se movem de um diretório (fila) para outro; o arquivo usa um formato binário personalizado contendo todos os metadados necessários para processá-lo.

Existe um módulo perlCorreio::Postfix::Postdropque coloca o correio no diretório maildrop.

Mail::Postfix::Postdrop - Injeta e-mails em um diretório maildrop do Postfix

  use Mail::PostFix::Postdrop 'inject';   
  inject $message, Sender     => '[email protected]',
                   Recipients => [ qw([email protected] [email protected]) ];

Você pode usarpós-lançamentoem si (que é como o comando 'sendmail' injeta mensagens na fila):

 The  postdrop(1)  command  creates  a file in the maildrop
 directory and copies its standard input to the file.

Eu também não fiz; deixe-nos saber se você tiver alguma sorte com isso.

Responder3

Era uma vez, era possível fazer exatamente isso com o Postfix. Afinal, o maildrop nada mais é do que um diretório onde os arquivos são gravados. O problema é que é possível fazer todos os tipos de truques com um diretório maildrop gravável mundialmente. (Isso já era conhecido há muito tempo, mesmo na época em que o Postfix foi escrito pela primeira vez.) Portanto, em um sistema configurado corretamente, você não poderá simplesmente gravar arquivos.

É quase certo que este não seja o seu gargalo em primeiro lugar. Afinal, é do correio eletrônico que estamos falando, onde existe uma grande coisa chamada “Internet”, que geralmente é a parte mais lenta do sistema. Suspeito fortemente que você não tenha analisado seus gargalos para ver o que e onde eles estão, e que sua idéia de que escrever diretamente em um arquivo de spool "acelerará as coisas consideravelmente" é baseada na esperança e não na medição.

É bastante fácil eliminar qualquer atraso em um diálogo de envio SMTP com pipeline SMTP. E, como mencionado em outra resposta, usar o utilitário Postfix - que neste caso sendmailé pouco mais que um wrapper - também é uma opção. postdropMas economizar um segundo no envio de mensagens provavelmente será perdido se o seu verdadeiro gargalo for, por exemplo, uma conexão discada à Internet.

informação relacionada