可能重复:
如何使用远程 SMTP 配置 php.ini?
我们有一个在 Linux 上运行的 php 应用程序,它向那里的用户发送电子邮件。目前,它的设置(如 php.ini)配置为通过本地 sendmail 服务器发送,但我们为该域的组织设置了单独的邮件服务器。我想通过该远程 smtp 服务器发送 php 应用程序电子邮件,以便这些电子邮件可以具有正确的 SPF 记录并通过 DKIM 签名。
但是我在 php.ini 中看不到这样的选项来指定远程主机地址以将电子邮件转发到它,它仅适用于 Windows。
我看到一些建议的帖子,phpMailer
但我找不到如何配置它,以便我们所有的 php 应用程序都可以通过我们的远程 SMTP 发送。
请先搜索,之前有人问过(例如在如何使用远程 SMTP 配置 php.ini?)。
PHP
mail()
函数始终使用 sendmail(在 Linux/Unix 上)。无法通过 php.ini 更改它。剩下两个其他方法:mail()
函数的所有调用替换为对替代库(例如 PHPMailer)的调用。sendmail
命令的任何程序)来做正确的事情,即将域的邮件服务器设置为智能主机。我会安装nullmailer并将其配置为将电子邮件转发到您的中继服务器。您使用的 linux 发行版很可能有 nullmailer 包,因此 sendmail 二进制文件(与命令行兼容)安装在正确的位置。
如果您不想安装 nullmailer,也可以使用 sendmail。如果你愿意,我会更新答案。
更新:
如果您想在 sendmail 下执行此操作,您有多种选择:
(1) 在 sendmail.mc 中定义 SMART_HOST 为您的邮件中继服务器:
(2) 您可以使用FEATURE(nullclient)。
(3)修改规则集0来做到这一点。在 sendmail.mc 中添加以下行:
不要复制粘贴上面的代码片段,因为左侧与右侧是用制表符而不是空格分开的。
完成编辑 sendmail.mc 后,您需要编译 sendmail.cf 并重新启动 sendmail。在 Debian 中,这是通过运行
sendmailconfig
. 在 CentOS 中,这是通过运行/etc/mail/make
后跟service sendmail restart
.