我正在维护一个旧的PHP应用程序,我想将其配置为将Mandrill用于传出电子邮件.当然,Mandrill需要SMTP身份验证.该应用程序直接使用PHP的mail()函数.
有什么方法可以配置sendmail(或等效服务)以默认情况下使用SMTP身份验证(使用Mandrill的凭据)发送,而不必替换整个应用程序中的所有mail()调用?
我在php.ini中看到了有关SMTP配置的其他答案,但仅在Windows上有效,因此我相信我可以更改的唯一可能有用的PHP设置是sendmail_path,默认为sendmail -t -i.我当时在想,也许我可以将它指向一个shell脚本,但是我不确定该怎么做或它是否有效.
更新
感谢@ mti2935的回答,我能够使它正常工作.我在使sSMTP正常工作时遇到了麻烦(即使没有防火墙阻止它,也出现了错误“发送邮件:无法打开smtp.mandrillapp.com:587”),所以我遵循了第二个链接并设置了MSMTP.我不得不将tls_trust_file设置更改为/etc/pki/tls/certs/ca-bundle.crt(注意:我正在运行CentOS 6).另外,链接中推荐的sendmail_path PHP设置对我不起作用;我不得不将其更改为“ /usr/bin/msmtp -C / etc / msmtp / myconfig -t”(并重新启动Apache,因为我在php.ini中而不是在.htaccess文件中进行了更改…请注意,可以随便叫哪个文件;选择自己的名称代替“ myconfig”).
另外,在测试时,请务必指定“发件人”地址,否则某些目的地(包括Gmail)可能会拒绝该邮件.
解决方法:
sendmail有许多轻量级替代品,可用于通过远程SMTP中继服务器(例如SSMTP,MSMTP和Nullmailer)中继传出邮件.通过使用其中之一替换/usr/sbin / sendmail,您可以中继通过远程SMTP服务器从PHP脚本发送的传出邮件,而无需对使用PHP mail()函数的PHP脚本进行任何更改.这些替换只是将消息移交给中继服务器-不处理传入邮件,不管理队列等.
看到:
http://itekblog.com/ssmtp-a-gmail-sendmail-relay-replacement-for-linux/
http://www.emanueletessore.com/how-to-configure-msmtp-as-a-gmail-relay-on-ubuntu-server/
http://untroubled.org/nullmailer/
另一个选择是继续使用配置了smarthost的sendmail.参见https://serverfault.com/questions/41448/fastest-way-to-allow-sendmail-relay-through-smarthost