通过远程smtp服务器的PHP邮件中继

可能重复:
如何configuration远程SMTP的php.ini?

我们有一个运行在Linux上的PHP应用程序,它将电子邮件发送给用户。 目前,其设置像php.iniconfiguration为通过本地sendmail服务器发送,但我们有单独的邮件服务器为我们的组织这个域。 我想通过远程smtp服务器发送php应用程序的电子邮件,以便这些电子邮件可以有正确的SPFlogging,并通过DKIM签名。

但是我在php.ini中看不到这样的选项来指定远程主机地址来转发电子邮件,只有Windows才有。

我看到一些提示phpMailerpost,但我找不到如何configuration,所以我们所有的PHP应用程序可以通过我们的远程SMTP发送。

我会安装nullmailer并configuration它将电子邮件转发到您的中继服务器。 您正在使用的Linux发行版很可能具有nullmailer软件包,因此sendmail二进制文件(即与命令行兼容)安装在适当的位置。

如果你不想安装nullmailer,也可以使用sendmail。 如果你想,我会更新答案。

更新:

如果你想在sendmail下做这个,你有很多select:

(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

请先search,这是之前问(例如在如何configuration远程SMTP php.ini? )。

PHP mail()函数总是使用sendmail(在Linux / Unix上)。 没有办法改变php.ini。 这留下了另外两种方式:

  • 对于单个应用程序,您可以用调用另一个库(例如PHPMailer)来replace对mail()函数的所有调用。
  • 作为一个更通用的解决scheme,您可以configuration您的本地sendmail(或任何提供sendmail命令的程序)来做正确的事情,即将域的邮件服务器设置为智能主机。