又被Sendmail玩了一把
最早刚开始用VPS的时候,被Sendmail折腾的一塌糊涂。后来也都是随手一配置,未经测试,感觉没问题就不再管它。
这就是不严谨的错啊。
前几天@Kn007童鞋提醒我没有收到过评论邮件。拖着眼疾赶紧查查是那里的问题。
大D是可以收到俺自己的VPS数据库备份邮件的,那说明Sendmail自身的配置没有什么问题。
phpinfo查看一下sendmail path发现问题。
编辑php.ini
1 |
vim /etc/local/php/etc/php.ini |
找到sendmail_path,去掉前面的;,随后填写:
1 |
/usr/sbin/sendmail -t -i |
填写完毕保存退出,重启php-fpm生效。
评论邮件的问题是解决了,但是Kn007童鞋还提到时间快了的问题。这个问题相对简单的多了。
使用ntp同步一下就可以。
1 |
ntpdate cn.pool.ntp.org |
时间同步之后,可能会导致ajax评论暂时失效,因为ajax评论会读取数据库中wp_comments表中的comment_date_gmt字段,由此来判断上次评论时间。
也就是这段代码:
1 2 3 4 5 6 7 8 9 |
// 增加: 檢查評論太快功能 if ( $lasttime = $wpdb->get_var( $wpdb->prepare("SELECT comment_date_gmt FROM $wpdb->comments WHERE comment_author = %s ORDER BY comment_date DESC LIMIT 1", $comment_author) ) ) { $time_lastcomment = mysql2date('U', $lasttime, false); $time_newcomment = mysql2date('U', current_time('mysql', 1), false); $flood_die = apply_filters('comment_flood_filter', false, $time_lastcomment, $time_newcomment); if ( $flood_die ) { err(__('您评论的太快了,放轻松~.')); } } |
如果wp_comments中最后一行,也就是最后一个评论的comment_date_gmt字段数据与comment_date字段数据差异很大且comment_date字段内存储的时间是比comment_date_gmt时间快的,同时又满足comment_date内存储时间比服务器本地时间快。例子:
comment_date字段内存储的数据为:2015-06-29 22:57:49
comment_date_gmt字段内存储的数据为:2015-06-28 22:57:49
服务器时间:2015-06-29 07:01:59
这种情况下就会导致所有的评论都被判定为过快,处理起来也很简单,到数据库里面修正一下comment_date字段内的时间就可以了。
已有 2 条评论
发表评论
电子邮件地址不会被公开。 必填项已标注。
大D的文章总是那么专业 哇咔咔 话说垃圾评论我已经心力俱疲~
@xushine 垃圾评论已经给你搞定了,顺手加了禁止纯英文和纯日文评论的。