2013-12-10 18 views
0

我主持了一大堆網站,其中一個網上花店。他們使用名爲FDL的程序。它基本上讀取來自訂單的確認電子郵件並將其輸入到他們的系統中。這是我的問題:我們最近有一個sendmail程序(php用來發送郵件的程序)的問題,所以我修復了它。現在,如果我嘗試在命令行中發送電子郵件,像這樣:php sendmail沒有到達目的地,沒有記錄錯誤。如何強制DNS查找sendmail?

echo "test email" | sendmail -v [email protected] 

其結果如下正確地發送它:

LOG: MAIN 
    cwd=/home/flowers_website/public_html 3 args: sendmail -v [email protected] 
LOG: MAIN 
    <= [email protected] U=root P=local S=344 
[[email protected] www]# LOG: MAIN 
    cwd=/var/spool/exim 4 args: /usr/sbin/exim -v -Mc 1VqQdk-00057z-UG 
delivering 1VqQdk-00057z-UG 
Connecting to gmail-smtp-in.l.google.com [173.194.77.26]:25 ... connected 
    SMTP<< 220 mx.google.com ESMTP h5si10940958oed.70 - gsmtp 
    SMTP>> EHLO xxx.xxx.com 
    SMTP<< 250-mx.google.com at your service, [66.135.44.118] 
     250-SIZE 35882577 
     250-8BITMIME 
     250-STARTTLS 
     250-ENHANCEDSTATUSCODES 
     250-PIPELINING 
     250 CHUNKING 
    SMTP>> STARTTLS 
    SMTP<< 220 2.0.0 Ready to start TLS 
    SMTP>> EHLO xxx.xxx.com 
    SMTP<< 250-mx.google.com at your service, [66.135.44.118] 
     250-SIZE 35882577 
     250-8BITMIME 
     250-ENHANCEDSTATUSCODES 
     250-PIPELINING 
     250 CHUNKING 
    SMTP>> MAIL FROM:<[email protected]> SIZE=1376 
    SMTP>> RCPT TO:<[email protected]> 
    SMTP>> DATA 
    SMTP<< 250 2.1.0 OK h5si10940958oed.70 - gsmtp 
    SMTP<< 250 2.1.5 OK h5si10940958oed.70 - gsmtp 
    SMTP<< 354 Go ahead h5si10940958oed.70 - gsmtp 
    SMTP>> writing message and terminating "." 
    SMTP<< 250 2.0.0 OK 1386694713 h5si10940958oed.70 - gsmtp 
    SMTP>> QUIT 
LOG: MAIN 
    => [email protected] R=lookuphost T=remote_smtp H=gmail-smtp-in.l.google.com 
[173.194.77.26] X=UNKNOWN:ECDHE-RSA-AES128-GCM-SHA256:128 C="250 2.0.0 OK 1386694713  
h5si10940958oed.70 - gsmtp" 
LOG: MAIN 
    Completed 

,但是當我嘗試發送電子郵件到鮮花網站,像這樣:

echo "test email" | sendmail -v [email protected]_website.com 

我得到這樣的結果:

LOG: MAIN 
    cwd=/home/flowers_website/public_html 3 args: sendmail -v [email protected]_website.com 
LOG: MAIN 
    <= [email protected] U=root P=local S=346 
[[email protected] www]# LOG: MAIN 
    cwd=/var/spool/exim 4 args: /usr/sbin/exim -v -Mc 1VqQkE-0005Vc-0s 
delivering 1VqQkE-0005Vc-0s 
LOG: MAIN 
    => orders <[email protected]_website.com> R=virtual_user T=virtual_userdelivery 
LOG: MAIN 
    Completed 

我不知道該怎麼做。它說完成,從sendmail沒有日誌(我甚至找不到日誌文件)。我選中了/var/logs/mail.log,但不存在。/var/log/maillog包含來自dovecot的日誌,而不是sendmail。香港專業教育學院看到萬無一失的日誌文件,我無法找到它的任何地方。所以我的問題有2個部分:

A)我如何打開日誌記錄的sendmail? 和 B)周我強制DNS查找sendmail?

我認爲DNS查找是問題。它假定它在同一臺服務器上時,它不是。域名指向這個服務器,但綁定將記錄路由到另一個服務器,在那裏存儲所有網站數據和其他所有內容。僅供參考,它未在本地主機名文件中列出。

P.S.我還暫時關閉了iptables,以確保它不是防火牆問題。它沒有。它仍然給出了相同的結果,從未收到。

編輯

參考,我們的服務器上沒有其他網站有麻煩通過PHP發送訂單確認。其中一人遇到了問題,但我昨天解決了問題,其餘的問題都沒有解決。除此之外。我認爲它與DNS解決主機名或什麼有關..我不知道...

回答

0

檢查/var/spool/exim文件夾,看看是否有郵件文件。

UPDATE此外,檢查錯誤的Exim日誌,在/var/log/exim_mainlog。一旦sendmail命令切換到另一個Exim進程來處理消息轉發(如存在R=virtual_user T=virtual_userdelivery所示),您將不會在sendmail輸出中看到任何錯誤。

此外,請檢查該網站的MX記錄(在上均爲,如果服務器和授權服務器不同)。如果他們在外部託管他們的郵件,則需要確保cPanel(我發現您通過訪問sample.example.com使用它)知道並適當配置Exim。

您的服務器知道Gmail.com不在現場,因此連接到SMTP。但是,默認情況下,它假設在本地託管的站點也將其郵件放在同一臺服務器上,並將它們直接發送到Exim以進行本地交付。

當我切換到Google Apps時,我的網絡託管服務器出現了與此完全相同的問題 - 服務器發送的郵件仍在Exim中排隊。我的主機必須做一些事情(因爲我無法訪問cPanel的WHM,我不知道該怎麼做)阻止它這樣做。

+0

我正在使用cpanel。我從shell中完全託管我自己的私人網站。我通常不使用cPanel,但老闆堅持我儘可能使用它。 此外,鮮花網站在我們的服務器之一,並轉移到另一個,但DNS指向新的服務器。所以郵件和網站託管在另一臺服務器上,但它們是由該服務器指向的。 和FYI,在/ var/spool/exim中沒有郵件。繼承人ls: db exim-daemon.pid 輸入 msglog – Katushai

相關問題