OpenVZ VPS解决WordPress无法发送邮件问题

最近重装的系统,WordPress也进行了一次整体迁移,迁移后发现WordPress无法发送邮件了。emmm,挺严重的问题,这样我收不到我博客评论动态的推送了。

鼓捣了挺久,记录一下解决过程。

以下操作均在CentOS7 64Bit下操作。

WordPress 自身的 email 是使用 mail() 函数发送。如果发现无法发送,建议先创建一个测试用php文件。代码如下:

<?php
$txt = "hello";

// 以下的邮箱地址改成你的
$mail = 'somebody@example.com';

// 发送邮件
mail($mail, "My subject", $txt);

echo 'message was sent!';
?>

(代码来自《为什么你的WordPress无法发送Email》
这里邮箱需要注意的是,网易邮箱可能收不到(也不放垃圾箱,直接丢弃),建议用QQ邮箱。

首先确认安装以下软件:


yum -y install sendmail

yum -y install mailx

ps aux | grep sendmail

mail -help

确认后,就可以试运行上面准备测试用mail.php:


php mail.php

我在测试时遇到了以下错误:

 sh: /usr/bin/sendmail: No such file or directory

嗯。好吧,Path问题,这里有两种方法。

  1. 修改php.ini里的sendmail路径。
  2. 在/usr/bin/创建一个链接到sendmail。

这里我用第二种方法。一条命令解决。

ln -s /usr/sbin/sendmail /usr/bin/sendmail

在QQ邮箱查看,的确收到信了(在垃圾箱里)。(PS:这样的邮件网易邮箱会拒收)

但是还有问题。发件人和代发都很奇怪。在一番搜索后,发现需要更改主机名,但是按照网络上的的操作怎么都不成功,后来看到这篇文章《深入理解Linux修改hostname》 也就是说,修改主机名操作会牵扯到修改内核参数,这时我想起会不会是VPS虚拟化的问题,导致网上一般的修改主机名操作无效,相比能更换内核的KVM,OpenVZ算是虚拟化程度比较低的,不能自己更换内核,TUN/Tap也需要在VPS后台面板中开启。

那么也就是对于OpenVZ的VPS,可能只有在VPS后台面板更改Hostname才是有效操作。

更改后再次尝试发送邮件。如果遇到发件人是 root@localhost.localdomain 的情况,可以参见 《CentOS设置sendmail发件人,让sendmail不显示通过root@localhost.xxx代发》 一文进行配置。

最终效果如图:

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注