首先描述一下我遇到的问题,使用bluehost的主机搭建的Blog,博客的源码是Wordpress,使用数据库备份插件给域名邮箱发送备份没有成功,但是用其他邮箱备份都能够成功。我域名的邮箱服务是用的腾讯的企业邮箱,,mx记录什么的已经在域名注册商那里搞好了。上传个探针进行邮件发送检测,往本站的域名邮箱@onlyisu.in发送时失败,往其他邮箱发送成功。因此并不是主机禁用了php mail()函数。于是发bluehost的客服人员联系。
Ticket:
Why i cannot send a mail to a email account followed by @onlyisu.in using the mail() function in my script!But i can send mails to email accounts followed by others,such as @163.com,@gmail.com,@QQ.com! Thank you!
得到了一下这样一条回复:
The only indication I have of this is here
2011-09-19 22:55:47 H=localhost (box785.bluehost.com) [127.0.0.1] F=<[email protected]> rejected RCPT <[email protected]>: No Such User Here
Which means that there is no [email protected] email account.
从上面他给的回复中可以看出,他说系统日志显示根本不存在[email protected]这个账户。实际上这个账户是存在的,用其他的邮箱往[email protected]发邮件是可以收到的。
再仔细分析这个日志发现,H=localhost (box785.bluehost.com) [127.0.0.1] 目标邮件服务器地址是localhost。原来bluehost主机中也是有邮件服务的,如果你没有在虚拟主机中做任何设置时,一般虚拟主机默认看到发送到同域下的邮件地址(就是和WordPress 地址相同的邮件地址)时就直接发送到本地的邮件服务里,他才不管你有没有在域名的DNS中设置所设置的mx是什么鬼东西。[email protected]这个帐号不存在也就是顺理成章的了。
找到问题的原因了,解决办法也就简单的多了,bluehost用的cPanel面板。其他的面板也类似。
进入面板(面板语言为英文的,非简体中文的),打开Mail下的MX Entry,选择你需要的域名,如图1。
图1
点more>>打开下拉菜单,选择Remote Mail Exchanger,如图2。
图2
点击change保存设置。
OK!再到探针里面测试往[email protected]里面发送邮件,发送成功。