跨境电商
经验交流分享

Magento无法发送邮件的解决调试过程

最近一个项目部署正式环境的时候遇到了邮件发送的问题,Magento中的所有交易邮件均无法发送,默认通过mail来发送不行,试了下通过SMTP也无法发送。最开始调试的时候,认为是程序出现的问题,查看了Magento的日志文件,异常文件主要是以下两种。

情况一:在默认情况下Zend抛出的异常

2013-07-11T02:19:29+00:00 ERR (3):
exception ‘Zend_Mail_Transport_Exception’ with message ‘Unable to send mail. ‘ in /var/www/html/lib/Zend/Mail/Transport/Sendmail.php:137
Stack trace:
#0 /var/www/html/lib/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail()
#1 /var/www/html/lib/Zend/Mail.php(1194): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))

情况二:使用SMTP抛出的异常。

2013-07-10T08:28:49+00:00 DEBUG (7): Exception message: Permission denied
Trace: #0 /var/www/html/lib/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect(‘ssl://smtp.gmai…’)
#1 /var/www/html/lib/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()

两种情况显示的信息不同,但是结果一致,就是都无法成功发送邮件。再调试Magento无果的情况下,想到了是否是服务器的相关配置问题。试着在服务器中创建了一个简单脚本,通过mail函数发送,结果发现,确实通过mail函数也无法正常发送邮件。比较奇怪的就在这里,服务器已经正常安装了sendmail服务,SMTP也配置正常,在客户端上调用SMTP发送邮件都能正常运行,难道只是在WEB中无法正常使用?

了解该情况之后,查看了linux邮件日志,异常如下,

Oct  9 11:42:03 localhost sendmail[3080]: NOQUEUE: SYSERR(apache): can not chdir(/var/spool/clientmqueue/): Permission denied

可以看到,该操作提示访问权限被拒绝。是不是防火墙导致的?iptables stop命令运行,继续mail发送,依然不行。最后,通过查阅一些资料,发现这个问题除了防火墙之外,还有SELinux的问题。在配置中,发现httpd_can_sendmail选项默认是off掉的。通过如下命令,可以查看相关邮件配置。

getsebool -a | grep mail

Selinux邮件配置

Selinux邮件配置

开启该配置,Magento就可以正常发送邮件了。

赞(0)
未经允许不得转载:锐想 » Magento无法发送邮件的解决调试过程
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

锐想电商 - 跨境电商经验交流分享

锐想无限