sendmail - verifique se um email foi enviado

3

Estou tentando enviar e-mails por meio do sendmail e impedindo que eles sejam enfileirados. Eu só quero que os e-mails sejam enviados, o que tem sido um problema extremo até agora.

em sendmail.cf e submit.cf, eu tenho esta configuração:

O QueueLA=99

No log de email, está escrito que o email em questão é enviado e enfileirado. Sério, isso não é muito confuso?

Feb 10 17:04:34 nnn sendmail[27910]: r1AG4Q0V027910: [email protected], 
[email protected] (33/33), delay=00:00:08, xdelay=00:00:04, 
mailer=relay, pri=30391, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, 
stat=Sent (r1AG4U09027911 Message accepted for delivery)

Feb 10 17:04:36 nnn sm-mta[27913]: r1AG4U09027911: to=<[email protected]>, 
delay=00:00:06, xdelay=00:00:02, mailer=esmtp, pri=120589, 
relay=mail1.someone.com. [207.106.200.39], dsn=2.0.0, stat=Sent 
(Queued! 1360512372 qp 15149 <[email protected]>)
  1. No momento em que esse log é gravado, o email é enviado ou não?
  2. Existe alguma maneira de evitar essa última fila?
por Robin Manoli 10.02.2013 / 18:06

3 respostas

2

Após algumas pesquisas, descobri que a mensagem em parênteses (enfileirada! 1360512372 qp 15149 < [email protected]>) é a mensagem do servidor de destino.

isso significa:

  1. sim, o email é enviado.
  2. não, porque a mensagem está enfileirada no servidor de recebimento.

Aqui estão algumas explicações de como eu poderia obter minha resposta: status do log de e-mail freebsd 8, o que isso significa? algumas citações da resposta que pareciam confiáveis para mim:

"A entrada de status enviada significa que o servidor remoto aceitou a mensagem."

"Os comentários entre parênteses de uma entrada de status são a resposta dada pelo servidor remoto ao enviar o e-mail. É útil saber por que uma mensagem foi rejeitada, adiada ou retida."

    
por 10.02.2013 / 19:55
2

Por que você quer mudar isso? É exatamente assim que o sendmail deve funcionar. O Sendmail, antes de confirmar ao remetente original que aceitou o email, o salva em uma fila no disco rígido. Em seguida, ele pega e mantém a cópia física até que o próximo destinatário confirme o recebimento. É assim que o sendmail garante que o e-mail não será perdido no caso de uma falha no sistema ou se o sendmail falhar. O Sendmail também atrasa o correio devido a vários motivos. Às vezes, os outros MTAs que você não controla atrasam o email (problemas de rede, carregamentos do sistema, listagem cinza). Ele precisa armazenar com segurança o correio em algum lugar.

E-mail não é um mecanismo de entrega just in time como o IM. Espere os 2 segundos em circunstâncias normais.

Você sabe que é enviado quando você vê o outro servidor de e-mail com stat = Enviado: relay = mail1.someone.com. [207.106.200.39], dsn = 2.0.0, stat = Enviado

    
por 10.02.2013 / 18:54
2

O SMTP não garante que o email chegue ao seu destino; é um mecanismo de entrega de melhor esforço, sem nenhum feedback sincronizado de ponta a ponta sobre o destino de seu tráfego. O servidor para o qual você está entregando e-mails deve informar diretamente se ele está sendo aceito para eventual entrega, mas não é necessário enviá-los de forma síncrona (é possível armazená-los para mais tarde e não informar) e não é necessário enviá-los diretamente (o caminho tem vários saltos). Na prática, quase todos os daemons do SMTP enfileiram emails.

Entregas de entrega e leitura, que não são amplamente suportadas devido ao abuso por parte de spammers, foram projetadas para superar essa limitação. Além disso, os servidores mais tarde podem, a seu critério, em algum momento futuro, enviar uma notificação se eles rejeitarem sua mensagem depois que o servidor inicial ao qual você foi aceita a aceitar, mas não precisar fazer isso.

Sua inscrição deve tratar a aceitação do próximo salto como um caso de sucesso. Este é o feedback mais confiável que o SMTP fornecerá de forma consistente.

    
por 10.02.2013 / 19:29