希望这是最后一次折腾评论邮件提醒

(1)

因为评论邮件提醒,我给博客搬了一次家。

本站之前在老薛主机。2018年9月1日我抢到了老薛主机虚拟主机终身五折,活动的帖子刚发出来我第一时间看到并参与了抢购,有幸抢到了这10个名额之一。当时年付98元的主机(现在年付88元),我以每年49元的价格购买及续费。老薛的虚拟主机当时在HK有三个机房的服务器,我都体验过,速度最快的是安讯,其次是宽频(和安讯差不多);速度超慢、超恶心的是CN电信HK机房,速度慢本身就恶心,后面居然要求所谓提交资料才能用,老薛被迫把我们的资料全部迁走。后面老薛的虚拟主机只剩安讯机房的服务器了。

老薛主机哪都挺好,唯独有个问题之前没引起我的注意,上个月终于引起我的重视。我强调一下,我还没听说其他老薛主机的用户遇到和我一样的问题。我不知道会不会因为我的主机是特价的,而受到单独的限制。

我的博客使用的邮件提醒插件,通过SMTP调用第三方邮件平台发信。我发现,如果每天SMTP请求超过10次,那么主机的SMTP服务就会被老薛关闭。翻看我在老薛主机后台提交的工单,每一条工单都在请求开通SMTP服务。每次白天提交工单,要等1.5-3小时。2021年5月5日,第10次提交工单申请开通SMTP。重新开通SMTP以后,插件只调用了1个SMTP请求,2021年5月6日SMTP又被关闭了,晚上9点多我才发现。又提交工单申请开通,但技术人员已经下班了。晚上11点多我想到了把博客搬走。

于是,我的博客在5月7日凌晨1点半搬迁到了糖果主机的迷你虚拟主机HK机房。糖果主机的高配虚拟主机比较贵,所以我买的迷你主机,500M空间(后台和cpanel面板显示是1G空间)、50G流量、1个域名、1个数据库、没有独立IP,三年161.64元。如果按原价续费,三年是240.84元。糖果可以抽续费优惠码,希望我在续费前能抽到折扣比较高的。但考虑到这个配置三年241元相对于其他虚拟主机来说并不贵,如果抽不到优惠券我也可能考虑原价续费。让我意外的是,无论何时提交工单,只要在提交时选择高优先级,技术人员的响应时间基本上都不超过30分钟。

图1

图1 糖果主机账单概览

迁移到糖果主机以后,由于积攒了一堆评论没回复,所以一天回复了三十多条评论、调用三十多次SMTP请求,依然正常。

我不考虑把博客迁移到vps上面。我有vps,但只是用来玩的。过去用vps时出现过致命问题造成数据丢失,说明我没有独立管理重要数据的能力,一旦出现问题我无法独自处理,所以博客还是放虚拟主机上靠谱。转型之前的琥珀主机技术支持曾在QQ群里说:vps只适合折腾,建站还是要虚拟主机。

主机问题搞定了。插件的老毛病又犯了,发送邮件的请求经常失败。就在博客搬家约三周以后,重新折腾插件。

(2)

这里先描述一下插件问题出现的经过。

这几年用过很多邮箱,比如tx企业邮箱、qq域名邮箱、网易个人邮箱、网易企业邮箱,还包括sendcloud、阿里云CN站。遇到过很多问题,有些在以前的博文中吐槽过。直到使用普通的海外免费域名邮箱,才稳定下来。

这几年用过好几个邮件提醒插件,比如Comment To Mail、Comment2Mail、LoveKKComent、Notice、Mailer等。博客在老薛主机上使用的是Comment To Mail 2.0.1,经过一些调试,可以发送邮件,偶尔发送失败。主机迁移后,插件失灵。实际上,以往从琥珀主机迁移到老薛主机之时也发生过;从虚拟主机迁移到vps上面也发生过,无论是宝塔面板还是lamp、lnmp都有这种情况。我摸索出来的解决方法是:禁用插件,启用其他邮件提醒插件、配置好以后再禁用,再启用原插件。无论在虚拟主机,还是在vps,这样都可以解决这个问题。具体为什么可以这样解决,我不知道。然而这次,这个方法彻底失效了。

接下来,我用了Comment To Mail 3.0.1。这个插件抛弃了sockets,转而使用curl进行异步请求。插件会记录发送日志,从日志中可以看出邮件发送成功与否。然而,经常有一些请求并没有发送邮件,如需手动进行补发需要在浏览器中访问该地址。

图2

图2 Comment To Mail 3.0.1的部分邮件发送日志

图2截取了典型的发送日志,可以看到有两个请求没有发送成功。这种情况经常发生。

我尝试将Typecho升级到开发版(18.10.23),但解决不了这个问题。Typecho开发者针对Typecho开发版设计的Mailer插件,在博客后台回复评论时无法发出邮件。我还用了Notice插件,经过测试,发出一封邮件以后,再评论或者回复则发不出任何邮件了。最后,我不得不用Comment To Mail 4.x插件。

(3)

Comment To Mail 4.x插件几年前就诞生了。这个插件需要使用cron定时任务或境内第三方网站监控。cron定时任务我不会写。之前用过境内的一些网址监控,惹了一身骚,到现在某网址监控还在用7个ip每2分钟扫描一次我的站并获取一定的内容,而该网址监控服务的账号已经被我注销三年了。

5月24日那天,我开窍了,海外的网站监控一定也是可以的,而且之前的使用经验告诉我,它们不会获取网站内容。于是注册了知名的网站监控服务StatusCake,免费账户可以监控最多10个网址、监控频率最低5分钟一次(付费账户最多可以监控超过300个网址、监控频率最低30秒一次),还可以对SSL证书过期时间、页面速度等进行免费监控。除了网页端可以进行操作外,它有手机app也可以进行很多操作(但功能比网页端少),且app没有任何多余的功能,更没有广告。宕机提醒可以同时发送到多个电子邮箱,手机app也可以提醒。难怪相关的宣传文章里第一个提到它

图3

图3 Statuscake平台手机app的其中一个页面截图

9S Blog的博主提到:异步触发中很多步骤都可能出问题,比如php无法访问到网站本身,或者执行到一半关闭连接时发送邮件的程序被关了。这些问题涉及到具体环境配置,我无法排查到这些问题的具体发生原因,只能避开。自从用上Comment To Mail 4.x,搭配优秀的StatusCake网站监控服务,邮件漏发的问题终于解决了。Comment To Mail 4.x插件内置的模板太复杂,我用Comment To Mail 2.0.1的模板替换了一下,大道至简。

希望这是我最后一次折腾评论邮件提醒,除非我更换博客平台。说一句题外话。Wordpress和Typecho互相迁移的试验我进行过几次,甚至我已经为WP的主题修改了友情链接页面的样式。这些都是为今后更换博客平台的可能性做准备。其他的不想弄了。

年纪大了,真的折腾不动了。

(4)

有个有意思的事。当Centos稳定版即将停止维护的公告发布以后,我想,这些主机商的系统咋办?于是我用phpinfo探针看了老薛主机和糖果主机的情况,发现他们用的是CloudLinux,一个专为主机商提供的Linux版本,自带Cpanel授权。看来我想多了。我之前买的那些用DirectAdmin面板的主机都过期了,这些用的什么系统我就没法看了。

另:

①本博客在评论中包含emoji表情会引起评论无法显示的bug已经修复。今后在评论中插入emoji表情就能正常提交和显示了。但主题还有罕见情况下的bug。

②今年Github被间断性干扰(每隔几分钟干扰一次),访问官网、提交内容均无法正常进行,博客相关代码和内容已于2021年5月28日转移至Bitbucket