iT邦幫忙

0

不同mail server mail()函式問題

大家好
今天我的客戶有自己的mail server跟domain name權限
web server跟廠商租用,而廠商有提供mail server
環境為Linux + PHP + MySQL

今天遇到的問題是,網站有類似contact us的功能
form送出去以後會用mail()來通知某個客戶自己設定的Email
但客戶mail一直收不到,詢問web server的廠商後得知結果如下

您好:
他要使用非本公司提供的mail server, 所授權的DNS name server必須將mail server的指向指到非本公司提供的mail server.

使用web server的mail()函式發信一定先找同機台的網站. 然後才到網路上找.
這個矛盾一定存在.

要讓web server看到的mail server跟外界看到的是同一台, 唯一的方法是要外界遷就web server, 也就是說所授權的DNS name server必須將mail server的指向指到本公司提供的mail server.

這封信看起的意思似乎是web與mail server不同台的話,不能用mail()否則會收不到,請問是這樣嗎?有什麼解決方式嗎?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

14
逮丸逮丸
iT邦大師 1 級 ‧ 2009-10-19 12:48:53
最佳解答

客戶mail收不到,要看一下 web server 上的 mail log 被拒的記錄。

不大同意 web server 廠商的做法。
分兩部份來看,Web Server上的 Mail Daemon的設定,及PHP的送信函式。

一般而言,*nix 平臺的 Mail Daemon 通常是應會接受 localhost 的轉寄,
如果 Mail Daemon 不去特別額外設定 From:、To: 必須符合什麼條件的話,
基本上從 web 介面往本身的 Mail Daemon 送信件,
只要 From, To 都是可查得到的話,
應該必須寄得成。
如果該 Web Server 非 *nix 就另當別論了。
要看上面裝的是哪一家的 windows 環境的 Mail Server。

所授權的DNS name server必須將mail server的指向指到非本公司提供的mail server.
如果這樣做的話,不就你們公司的電腦都要向 webserver 廠商的 mail server 收信?
除非 webserver 廠商的 mail server 會再把你們信件轉到你們公司 mail server 的IP,
或 在 webserver 廠商的 mail server 開你們公司每個人帳號才收得到信。

使用web server的mail()函式發信一定先找同機台的網站. 然後才到網路上找
PHP 內建的送信函式,的確並沒有以 SMTP 的參數及寄信模式,
所以只會往 localhost 來送。
若是用 Pear::Mail 就可以指定 SMTP server 為何,
而不需一定要用本機的 Mail Daemon 來送。

所以最關鍵的問題是在於,
該 web server 本身的 Mail Daemon ,必須允 localhost 所寄的信。
至於為何又會與 web server 廠商的 mail server ?
推測不曉得是不是 web server 本身的 Mail Daemon ,
是又透過廠商的 mail server 來傳送?
那就要應讓 廠商的 mail server 允許 web server 這 IP 所寄的任何信件,
才不會擋到有 To 到你們公司的信件。

chan15 iT邦新手 2 級 ‧ 2009-10-19 18:52:59 檢舉

我試試看

8
fillano
iT邦超人 1 級 ‧ 2009-10-19 15:37:45

建議改用phpmailer來寄,然後寄信的主機改成客戶的mail伺服器,但是要開放讓他的web伺服器可以relay,並且用帳號/密碼驗證,避免成為垃圾信跳板。

我要發表回答

立即登入回答