簡體   English   中英

郵件收到EC2 PHP較晚

[英]Mail recieved late EC2 PHP

我有一個在EC2實例上運行的應用程序。 在應用程序的某些部分,需要通過電子郵件向用戶發送通知。 我使用PHP的本機mail()函數。

問題在於它似乎不是很穩定。 昨晚我做了一些測試,發現立即收到了一些電子郵件,但是有些似乎要等待一段時間。

我在一分鍾內觸發了兩個通知,幾秒鍾之內我收到了第二個事件的通知,但是第一個事件通知花了半個小時才出現在我的收件箱中。

這是最近出現的電子郵件的標頭:

Delivered-To: ----@gmail.com
Received: by 10.140.107.75 with SMTP id g69csp40419qgf; Wed, 3 Dec 2014 16:12:00 -0800 (PST)
X-Received: by 10.194.108.162 with SMTP id hl2mr11475479wjb.102.1417651919645; Wed, 03 Dec 2014 16:11:59 -0800 (PST)
Return-Path: <apache@ip-xxx-xxx-xxx-xxx.localdomain>
Received: from ip-xxx-xxx-xxx-xxx.localdomain (ec2-xx-xx-xx-xx.eu-west-1.compute.amazonaws.com. [xx.xx.xx.xx])
by mx.google.com with ESMTP id g6si19323730wjy.43.2014.12.03.16.11.59
for <----@gmail.com>; Wed, 03 Dec 2014 16:11:59 -0800 (PST)
Received-SPF: none (google.com: apache@ip-xxx.xxx.xxx.xxx.localdomain does not designate permitted sender hosts) client-ip=xx.xx.xx.xx;
Authentication-Results: mx.google.com; spf=none (google.com: apache@ip-xxx.xxx.xxx.xxx.localdomain does not designate permitted sender hosts) smtp.mail=apache@ip-xxx.xxx.xxx.xxx.localdomain; dmarc=fail (p=NONE dis=NONE) header.from=gmail.com
Received: by ip-172-31-19-221.localdomain (Postfix, from userid 48 id CABF521F29; Wed,  3 Dec 2014 23:38:35 +0000 (UTC)
To: ---- <----@gmail.com>
Subject: Test
X-PHP-Originating-Script: 500:Notifier.class.php
From: ---- <----@gmail.com>
Message-Id: <20141203233835.CABF521F29@ip-xxx-xxx-xxx-xxx.localdomain>
Date: Wed,  3 Dec 2014 23:38:35 +0000 (UTC)

我不知道是什么原因造成的,因此,如果有人知道問題可能出在哪里,答案將不勝感激!

在下面的行中,您的PHP腳本似乎在23:38:35 +0000(UTC)處創建了消息

Date: Wed,  3 Dec 2014 23:38:35 +0000 (UTC)

然后,從下面的這一行開始,在同一主機上運行的后綴立即確認從PHP接收到消息(通過mail()函數):

Received: by ip-172-31-19-221.localdomain (Postfix, from userid 48 id CABF521F29; Wed,  3 Dec 2014 23:38:35 +0000 (UTC)

問題似乎在下一跳。 看起來Postfix已配置為通過Amazon的SMTP服務中繼郵件。 但是,調整時區差異后,Amazon的SMTP服務器直到大約33分鍾后才收到消息:

Received: from ip-xxx-xxx-xxx-xxx.localdomain (ec2-xx-xx-xx-xx.eu-west-1.compute.amazonaws.com. [xx.xx.xx.xx])by mx.google.com with ESMTP id g6si19323730wjy.43.2014.12.03.16.11.59

為<---- @ gmail.com>; 2014年12月3日,星期三16:11:59 -0800(PST)

因此,延遲是在本地主機上的postfix中,該消息將消息傳遞到Amazon的SMTP中繼服務器。 亞馬遜的服務器有可能幾次推遲從您的postfix服務器接收消息,因此延遲可能是由於postfix必須重新排隊消息並嘗試多次發送導致的,直到33分鍾后最終成功。 如果您能夠獲取Postfix服務器上的日志,則這些日志可能有助於您了解造成延遲的原因。

部分問題看起來可能是您在郵件的FROM:頭中設置了發件人地址,但沒有設置信封發件人。 似乎正在使用默認的信封發件人(apache@ip-xxx-xxx-xxx-xxx.localdomain),這顯然不是有效的電子郵件地址,並且看起來這可能導致SPF檢查出現問題。 出於這個原因,Amazon的SMTP服務器可能會推遲傳遞消息。 您可能要設置信封發送者,看看是否可以解決問題。 這種語法可以解決問題:

$to = "to@to.com";
$from = "from@from.com";
$subject = "subject";
$message = "this is the message body";

$headers = "From: $from"; 
$ok = @mail($to, $subject, $message, $headers, "-f " . $from);   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM