【发布时间】:2009-03-05 17:39:14
【问题描述】:
如果我编写一个 PHP 脚本连接到 SMTP 服务器(在我的例子中,这是本地安装的 Postfix)并发送一封电子邮件,电子邮件中的第一个“received”标头结果如下:
Received: from [SERVER_IP] (SERVER_HOSTNAME [127.0.0.1]) by SERVER_HOSTNAME (Postfix) with ESMTP id D682A34381 for <TO_EMAIL>; Thu, 5 Mar 2009 17:25:18 +0000 (GMT)
这是因为 PHP 脚本是通过浏览器访问的,而 Apache 绑定到了 SERVER_IP。
但是,如果我从 PHP CLI 执行相同的脚本,那么第一个“接收到”的标头是:
Received: from localhost.localdomain (SERVER_HOSTNAME [127.0.0.1]) by SERVER_HOSTNAME (Postfix) with ESMTP id AB51934381 for <TO_EMAIL>; Thu, 5 Mar 2009 17:18:01 +0000 (GMT)
这是因为普通 Linux 用户(通过 cron)正在调用 PHP CLI。
如何使 PHP CLI 绑定到主机名/IP,以便当用户通过 cron 作业调用它时,“received”标头显示服务器主机名/IP 而不是 localhost.localdomain?
注意1:主机名在hostname --fqnd、/etc/hosts、/etc/sysconfig/network和/proc/sys/kernel/hostname中设置正确
注意 2:我在 PHP 中使用Swift Mailer,尽管这可能无关紧要。
【问题讨论】: