Sendmail filas mail, não envia

1

Eu tenho um servidor Ubuntu com php e sendmail.

Quando eu uso o PHP para enviar um email via sendmail, o email fica na fila do sendmail para sempre e nunca é enviado. Mesmo se eu forçar o flush, ele ainda fica na fila.

Qual seria a causa disso e como posso corrigi-lo?

Obrigado.

EDITAR: A saída de "cat / var / spool / mqueue / qfn82FuSu3009905" é:

V8
T1251906988
K1251927546
N6
P570369
I8/1/121795
MDeferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Fwbs
$_localhost [127.0.0.1]
$rESMTP
$sworld0.com
${daemon_flags}
${if_addr}127.0.0.1
S<[email protected]>
A<>
MDeferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
rRFC822; [email protected]
RPFD:<[email protected]>
H?P?Return-Path: <g>
H??Received: from world0.com (localhost [127.0.0.1])
    by world0.com (8.14.3/8.14.3/Debian-6) with ESMTP id n82FuSu3009905
    for <[email protected]>; Wed, 2 Sep 2009 08:56:28 -0700
H?x?Full-Name: www-data
H??Received: (from www-data@localhost)
    by world0.com (8.14.3/8.14.3/Submit) id n82FuR5T009904;
    Wed, 2 Sep 2009 08:56:27 -0700
H??Date: Wed, 2 Sep 2009 08:56:27 -0700
H??Message-Id: <[email protected]>
H??To: [email protected]
H??Subject: Website feedback form
H??MIME=Version: 1.0
H??Content-type: text/html; charset=iso-8859-1
H??From: [email protected]
.

Não vejo onde algo está errado.

EDIT 2:

Bem, eu posso fazer ping no servidor, mas não falar com ele via telnet, como isso poderia ser? Não tenho firewall em execução.

root@world0:~# telnet alt4.gmail-smtp-in.l.google.com 25
Trying 72.14.221.114...
telnet: Unable to connect to remote host: Connection timed out
root@world0:~# ping 72.14.221.114
PING 72.14.221.114 (72.14.221.114) 56(84) bytes of data.
64 bytes from 72.14.221.114: icmp_seq=1 ttl=241 time=167 ms
64 bytes from 72.14.221.114: icmp_seq=2 ttl=241 time=171 ms
64 bytes from 72.14.221.114: icmp_seq=3 ttl=241 time=169 ms
64 bytes from 72.14.221.114: icmp_seq=4 ttl=241 time=222 ms
^C
--- 72.14.221.114 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3015ms
rtt min/avg/max/mdev = 167.840/182.722/222.589/23.055 ms
    
por lanrat 02.09.2009 / 18:17

4 respostas

2

Eu encontrei a solução.

Meu ISP começou a bloquear a porta 25 por padrão para parar os spammers. Uma chamada rápida para eles abriu a porta e todas as mensagens começaram a fluir.

Obrigado Joe pela sua ajuda.

    
por 03.09.2009 / 18:09
2

Para saber mais sobre a disposição de uma mensagem, tente o seguinte:

mailq

Você verá muitas linhas como esta:

n812uLGQ001861 12089700 Mon Aug 31 19:56 <******@*****.org>
                 (Deferred: Connection timed out with c.mx.mail.yahoo.com.)
                                         <******@yahoo.com>
n82FR6a3019167 22388400 Wed Sep  2 08:27 <******@*****.net>
                 (reply: read error from g.mx.mail.yahoo.com.)
                                         <******@yahoo.com>

em que n82FR6a3019167 é o ID da mensagem

ls -al /var/spool/mqueue/*<message ID>

Tente ver esses arquivos (são apenas arquivos de texto), especialmente o nome qn82FR6a3019167 (ou qualquer número de ID da sua mensagem. Observação: o ' q 'antes do ID da mensagem. Você deve ser capaz de determinar o status da mensagem, o que ajudará a determinar o que não está funcionando corretamente.

cat /var/spool/mqueue/qn82FR6a3019167

Se isso não ajudar, talvez seja necessário consultar a configuração do retransmissor inteligente no sendmail.cf. Seu servidor PHP pode precisar retransmitir o e-mail por meio de um Smart Host de retransmissão .

Em seguida, eu tentaria uma sessão SMTP manual do seu servidor PHP para o e-mail do Google servidor.

telnet alt4.gmail-smtp-in.l.google.com 25

Trying 209.85.129.114...
Connected to alt4.gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP p9si790839fkb.7

helo <yourhostname>
250 mx.google.com at your service

mail from:<[email protected]>
250 2.1.0 OK p9si740839fkb.7

rcpt to:<[email protected]>
250 2.1.5 OK p9si740839fkb.7

data
354  Go ahead h2si759562fkh.29
Subject: This is a test

Testing!
.
250 2.0.0 OK 1251933071 h2si759562fkh.29
quit

221 2.0.0 closing connection h2si759562fkh.29

Connection closed by foreign host.

Isso lhe dirá se o seu endereço IP está sendo bloqueado ou se existe algum problema SPF (Sender Policy Framework) ou se você tem incompatibilidades de nome DNS que podem estar causando a negação ou adiamento do seu email.

Presumo que você tenha truncado a listagem dos detalhes em sua resposta. Seu sistema deve ter um nome de host válido com entradas DNS reversas para esse nome de host.

Além disso, verifique seu arquivo / etc / hosts para garantir que seu endereço IP esteja listado corretamente. É bastante comum ter incompatibilidades de nome de host como um problema ao retransmitir email para a internet (pelo menos, na minha experiência).

Algo como:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1        localhost.localdomain localhost
xxx.xxx.xxx.xxx  yourhostname.yourdomain.com yourhostname
    
por 02.09.2009 / 22:23
1

Veja as linhas que dizem Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com . Eles informam que seu servidor conseguiu resolver um registro MX de gmail.com, mas não conseguiu se conectar ao servidor remoto. O que acontece quando você faz telnet para a porta 25 desse host do servidor de email? Você deve ver algo assim (note que eu digitei "quit"):

crunch:/Users/gerald$ telnet alt4.gmail-smtp-in.l.google.com 25
Trying 72.14.221.114...
Connected to alt4.gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP d4si791296fga.25
quit
221 2.0.0 closing connection d4si791296fga.25
Connection closed by foreign host.

Você tem alguma regra de firewall que bloqueie as conexões de saída na porta 25?

    
por 03.09.2009 / 01:18
0

Primeiro, verifique a mensagem na fila e o log de erros (/var/log/mail.err) Então, para forçar a exclusão, você pode fazer (mesmo que seja no caso de realmente ficar preso)

rm -rf /var/spool/mqueue/*
    
por 02.09.2009 / 18:28

Tags