我最近设置了一个 CentOS 服务器,我打算只用于电子邮件。我安装并配置了 Postfix,通过命令行发送/接收消息工作正常。
我希望能够从托管在单独的 CentOS 服务器上的 PHP 应用程序向我的最终用户发送邮件,使用专用邮件服务器的 Postfix 作为 MTA。这可能吗?还是我需要在 Apache / PHP 所在的服务器上安装 Postfix?
如果可能,我该如何连接/中继要发送的消息?
我正在寻找运行我自己的邮件服务器的通用约定/最佳实践,因此非常感谢任何建议。谢谢!
我最近设置了一个 CentOS 服务器,我打算只用于电子邮件。我安装并配置了 Postfix,通过命令行发送/接收消息工作正常。
我希望能够从托管在单独的 CentOS 服务器上的 PHP 应用程序向我的最终用户发送邮件,使用专用邮件服务器的 Postfix 作为 MTA。这可能吗?还是我需要在 Apache / PHP 所在的服务器上安装 Postfix?
如果可能,我该如何连接/中继要发送的消息?
我正在寻找运行我自己的邮件服务器的通用约定/最佳实践,因此非常感谢任何建议。谢谢!
如果您mail()
在 PHP 中使用,文档说明它仅在本地机器上使用 sendmail。
但是,您可以设置 sendmail 以将邮件转发到您的其他服务器,如以下链接:http ://www.cyberciti.biz/faq/configure-sendmail-as-a-smart-host/
根据该页面,您可以这样做:
添加到/etc/mail/sendmail.mc
:
define(`SMART_HOST',`my_smtp_server')
然后重启sendmail。如果它仍然不起作用,您可能需要运行:
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
或者
cd /etc/mail; make
然后重新启动 sendmail。
如果您需要伪造 sendmail 使用的服务器名称,您可以在 sendmail.nc 中添加此名称(参考:https ://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ s2-email-mta-sendmail.html):
FEATURE(always_add_domain)
FEATURE(`masquerade_entire_domain')
FEATURE(`masquerade_envelope')
FEATURE(`allmasquerade')
MASQUERADE_AS(`my_public_domain.')
MASQUERADE_DOMAIN(`my_public_domain.')
MASQUERADE_AS(my_public_domain)
您可以在 php/apache 所在的同一台服务器上将 postfix 配置为 MTA,如果您保持远程,则必须确保与 MTA 的正确连接,并且由于任何超时问题,您的邮件可能无法送达。因此,您可以在本地 apache/php 服务器上运行 postfix,并使用 php 配置其设置以发送电子邮件。
http://email.about.com/od/emailprogrammingtips/qt/How_to_Send_Email_from_a_PHP_Script.htm
上面的链接会有所帮助。
谢谢和问候,
阿洛克·塔克