Linux

通過遠端 smtp 伺服器進行 PHP 郵件中繼

  • October 1, 2012

可能重複:

如何使用遠端 SMTP 配置 php.ini?

我們有一個在 Linux 上執行的 php 應用程序,它向那裡的使用者發送電子郵件。目前,其設置(如 php.ini)配置為通過本地 sendmail 伺服器發送,但我們為該域的組織設置了單獨的郵件伺服器。我想通過該遠端 smtp 伺服器發送 php 應用程序電子郵件,以便這些電子郵件可以具有正確的 SPF 記錄並通過 DKIM 簽名。

但是我在 php.ini 中看不到這樣的選項來指定遠端主機地址以將電子郵件轉發到該地址,它僅適用於 Windows。

我看到了一些建議phpMailer,但我找不到如何配置它,以便我們所有的 php 應用程序都可以通過我們的遠端 SMTP 發送。

我會安裝nullmailer並將其配置為將電子郵件轉發到您的中繼伺服器。您使用的 linux 發行版很可能有 nullmailer 包,因此 sendmail 二進製文件(與命令行兼容)安裝在適當的位置。

如果您不想安裝 nullmailer,也可以使用 sendmail。如果你願意,我會更新答案。

更新:

如果您想在 sendmail 下執行此操作,您有多種選擇:

(1) 在 sendmail.mc 中將 SMART_HOST 定義為您的郵件中繼伺服器:

define(SMART_HOST, `smtp:[relay.server]')dnl

(2) 您可以使用FEATURE(nullclient)

(3) 修改規則集 0 來做到這一點。在 sendmail.mc 中添加以下行:

LOCAL_RULE_0
R$* < @ $* . > $*       $#esmtp $@ [relay.server] $: $1 < @ $2 . > $3

不要複製粘貼上面的程式碼片段,因為左側與右側是用製表符而不是空格分隔的。

完成對 sendmail.mc 的編輯後,您需要編譯 sendmail.cf 並重新啟動 sendmail。在 Debian 中,這是通過執行sendmailconfig. 在 CentOS 中,這是通過執行/etc/mail/make後跟service sendmail restart.

引用自:https://serverfault.com/questions/433374