从PHP app / linux服务器发送电子邮件的问题

时间:2011-06-17 16:53:11

标签: php linux smtp logging qmail

我在从linux机器发送电子邮件时遇到问题。应用程序发送几个不同的电子邮件,它使用PHP(mail()函数)/ qmail(SMTP)发送电子邮件。有些电子邮件会被正确发送到目的地,但有些电子邮件会接到那些没有收到电话的人的电话。 这是一个用于证明电子邮件已发送的日志。但它不发送?或者是吗?

Jun  8 11:46:34 ds1111 sendmail[19207]: p58AkYSx019207: from=apache, size=2053, class=0, nrcpts=1, msgid=<201106081046.p58AkYSx019207@XXX.dedicated.XXX.co.uk>, relay=apache@localhost
Jun  8 11:46:34 ds1111 /var/qmail/bin/relaylock[19208]: /var/qmail/bin/relaylock: mail from 127.0.0.1:40345 (localhost)
Jun  8 11:46:34 ds1111 sendmail[19207]: STARTTLS=client, relay=[127.0.0.1], version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-SHA, bits=256/256
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19210]: Handlers Filter before-queue for qmail started ...
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19210]: from=apache@XXX.dedicated.XXX.co.uk
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19210]: to=recipient_email_address@googlemail.com

Jun  8 11:46:34 ds1111 qmail-queue-handlers[19210]: hook_dir = '/usr/local/psa/handlers/before-queue'
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19210]: recipient[3] = 'recipient_email_address@googlemail.com'


Jun  8 11:46:34 ds1111 qmail-queue-handlers[19210]: handlers dir = '/usr/local/psa/handlers/before-queue/recipient/recipient_email_address@googlemail.com'
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19210]: starter: submitter[19211] exited normally
Jun  8 11:46:34 ds1111 qmail: 1307529994.690886 new msg 49580354
Jun  8 11:46:34 ds1111 qmail: 1307529994.691052 info msg 49580354: bytes 2539 from <apache@XXX.dedicated.XXX.co.uk> qp 19211 uid 2020
Jun  8 11:46:34 ds1111 sendmail[19207]: p58AkYSx019207: to=recipient_email_address@googlemail.com, ctladdr=apache (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32053, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (ok 1307529994 qp 19210)
Jun  8 11:46:34 ds1111 qmail: 1307529994.695376 starting delivery 100548: msg 49580354 to remote recipient_email_address@googlemail.com


Jun  8 11:46:34 ds1111 qmail: 1307529994.695467 status: local 0/10 remote 1/20
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19212]: Handlers Filter before-remote for qmail started ...

Jun  8 11:46:34 ds1111 qmail-remote-handlers[19212]: from=apache@XXX.dedicated.XXX.co.uk
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19212]: to=recipient_email_address@googlemail.com





Jun  8 11:46:34 ds1111 qmail-remote-handlers[19212]: hook_dir = '/usr/local/psa/handlers/before-remote'
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19212]: recipient[3] = 'recipient_email_address@googlemail.com'
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19212]: handlers dir = '/usr/local/psa/handlers/before-remote/recipient/recipient_email_address@googlemail.com'





Jun  8 11:46:34 ds1111 sendmail[19213]: p58AkYYN019213: from=apache, size=2053, class=0, nrcpts=1, msgid=<201106081046.p58AkYYN019213@XXX.dedicated.XXX.co.uk>, relay=apache@localhost
Jun  8 11:46:34 ds1111 /var/qmail/bin/relaylock[19214]: /var/qmail/bin/relaylock: mail from 127.0.0.1:40347 (localhost)
Jun  8 11:46:34 ds1111 sendmail[19213]: STARTTLS=client, relay=[127.0.0.1], version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-SHA, bits=256/256
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19216]: Handlers Filter before-queue for qmail started ...
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19216]: from=apache@XXX.dedicated.XXX.co.uk
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19216]: to=working_recipient_email_address@googlemail.com

Jun  8 11:46:34 ds1111 qmail-queue-handlers[19216]: hook_dir = '/usr/local/psa/handlers/before-queue'
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19216]: recipient[3] = 'working_recipient_email_address@googlemail.com'
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19216]: handlers dir = '/usr/local/psa/handlers/before-queue/recipient/working_recipient_email_address@googlemail.com'
Jun  8 11:46:34 ds1111 qmail-queue-handlers[19216]: starter: submitter[19217] exited normally


Jun  8 11:46:34 ds1111 qmail: 1307529994.782765 new msg 49580355
Jun  8 11:46:34 ds1111 qmail: 1307529994.782801 info msg 49580355: bytes 2539 from <apache@XXX.dedicated.XXX.co.uk> qp 19217 uid 2020
Jun  8 11:46:34 ds1111 sendmail[19213]: p58AkYYN019213: to=working_recipient_email_address@googlemail.com, ctladdr=apache (48/48), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32053, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (ok 1307529994 qp 19216)
Jun  8 11:46:34 ds1111 qmail: 1307529994.787382 starting delivery 100549: msg 49580355 to remote working_recipient_email_address@googlemail.com
Jun  8 11:46:34 ds1111 qmail: 1307529994.787469 status: local 0/10 remote 2/20



Jun  8 11:46:34 ds1111 qmail-remote-handlers[19218]: Handlers Filter before-remote for qmail started ...

Jun  8 11:46:34 ds1111 qmail-remote-handlers[19218]: from=apache@XXX.dedicated.XXX.co.uk
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19218]: to=working_recipient_email_address@googlemail.com
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19218]: hook_dir = '/usr/local/psa/handlers/before-remote'
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19218]: recipient[3] = 'working_recipient_email_address@googlemail.com'
Jun  8 11:46:34 ds1111 qmail-remote-handlers[19218]: handlers dir = '/usr/local/psa/handlers/before-remote/recipient/working_recipient_email_address@googlemail.com'
Jun  8 11:46:35 ds1111 qmail: 1307529995.139502 delivery 100549: success: 194.154.172.203_accepted_message./Remote_host_said:_250_ok:__Message_20026590_accepted/
Jun  8 11:46:35 ds1111 qmail: 1307529995.139597 status: local 0/10 remote 1/20
Jun  8 11:46:35 ds1111 qmail: 1307529995.139626 end msg 49580355





Jun  8 11:46:35 ds1111 qmail: 1307529995.407398 delivery 100548: success: 209.85.143.27_accepted_message./Remote_host_said:_250_2.0.0_OK_1307529909_fy2si1026718wbb.104/
Jun  8 11:46:35 ds1111 qmail: 1307529995.407551 status: local 0/10 remote 0/20
Jun  8 11:46:35 ds1111 qmail: 1307529995.407617 end msg 49580354

2 个答案:

答案 0 :(得分:2)

已发送!=已收到。有几件事可能导致这个问题:

  1. 收件人的邮件服务器无法收到邮件。
  2. 收件人的邮件服务器将邮件标记为垃圾邮件。
  3. 收件人的邮件客户端将邮件标记为垃圾邮件。
  4. 收件人删除了邮件,忘了告诉你。
  5. 还有更多。您的日志不表示错误,因此您可能需要检查接收端的问题。您可以更改邮件的内容以避免垃圾邮件过滤器(如果结果是问题),并确保您的主机不会被任何垃圾邮件黑名单组织列入黑名单。

答案 1 :(得分:1)

根据电子邮件的性质,一旦它离开你的系统,它就会失控。当它离开你的系统时,它通过多个跳转到收件人的主机,然后主机将其传递给客户端进行读取。在此期间,您的邮件必须避免超时,网络问题以及至少两个垃圾邮件检查程序。

您可以通过查看spam ratings,消除诸如伟哥之类的“触发”字词或咒骂字来确保更好的可传递性,确保您只向选择加入的人发送邮件,并经常检查以确保您的服务器不在任何blacklists上。我的公司(每月代表我们的客户发送数百万封电子邮件)也会对每个主机邮件进行速率限制,因为如果您在特定时间内打了太多时间,很多主机会拒绝或严重减慢邮件的速度。这些规则是什么,没有人真正知道,所以你必须对你的邮件系统进行性能调整。

通过SocketLabs等“受信任”主机发送也会大大提高您的投放效果。

所有这一切,如果有人告诉你他们可以100%保证每封电子邮件的发送,我有一座卖给你的桥......