小心灵学院
欢迎您的光临

搭建SMTP中继实现网站异步发送邮件 提升网站响应速度

通常,WordPress发送邮件需要安装使用SMTP发信插件,比如Easy WP SMTP等。这些插件的使用使得WordPress加载速度变慢,且给WordPress增加了额外的安全风险。

一个解决办法是在WordPress的网站服务器上再额外搭建一套邮件服务器。但是,这样的方法显得过于累赘,我们只需要让WordPress发送邮件,收发信的处理应当交由专门的邮件服务器来完成。因此,我们今天介绍使用SMTP邮件中继(SMTP Relay)实现WordPress无插件邮件发送

搭建SMTP中继实现网站异步发送邮件,提升网站响应速度

环境及基础配置

1、本文撰写时测试环境为Debian9+;

2、需要自行准备好SMTP服务器信息,可以是QQ邮箱、免费企业邮箱、126邮箱;

3、WordPress所在的服务器的25端口可以被屏蔽,不影响发信。

安装Postfix服务

我们直接通过包管理器安装postfix服务,并使用postfix服务实现SMTP中继。

apt-get install postfix libsasl2-modules

请注意,如果您的操作系统模板已经默认安装了Postfix, 您同样需要安装libsasl2-modules, 否则无法进行后续的SASL验证。

在General type of mail configuration这个界面,我们需要选择Internet Site, 如下图。

搭建SMTP中继实现网站异步发送邮件,提升网站响应速度

然后,会出现System mail name的选项框,如果您的主机名设置正确,这里应该会自动填入您的长主机名,默认即可。

搭建SMTP中继实现网站异步发送邮件,提升网站响应速度

配置Postfix服务

安装好之后就可以开始配置Postfix了。我们编辑文件/etc/postfix/main.cf:

修改为下面这样:

inet_interfaces = loopback-only
relayhost = smtp.gmail.com:587

main.cf末尾添加下面几行,配置SASL验证信息:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
header_size_limit = 4096000

我们指明了SASL验证信息的配置文件位置为/etc/postfix/sasl_passwd.  我们编辑这个文件,按照下面的格式填写发信用户的SMTP用户名与密码。

smtp.gmail.com:587    [email protected]:password

最后,我们hash生成验证信息,并重启Postfix使得更改生效。

postmap /etc/postfix/sasl_passwd
chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
service postfix restart

网站应用SMTP中继发件

原来网站SMTP发件配置插件中的信息,我们只需要填写下面几项即可:

发件人:自然博客

发件人地址 :[email protected]

SMTP地址:127.0.0.1

SMTP端口:25

用户验证:否

配置wordpress smtp发件服务

第一种是SMTP, 如果您安装了SMTP发信的插件,那么您的WordPress就是采用这种方式发信的,参数参考上面的通用配置。

第二种是调用系统默认的sendmail,由于我们已经配置好了SMTP邮件发送中继,因此,调用系统sendmail就会默认使用SMTP中继来发送邮件;换言之,我们只要卸载掉所有的SMTP发信插件,WordPress就会自动使用SMTP中继发送邮件。

系统默认发件人地址会存在问题,可能造成无法成功转发,只需要把下面的代码放在主题的functions.php文件中即可。

function wpb_sender_email( $original_email_address ) {
        return '[email protected]';
}
function wpb_sender_name( $original_email_from ) {
        return '自然博客';
}
function fix_my_email_return_path( $phpmailer ) {
        $phpmailer->Sender = $phpmailer->From;
}
add_filter( 'wp_mail_from', 'wpb_sender_email' );
add_filter( 'wp_mail_from_name', 'wpb_sender_name' );
add_action( 'phpmailer_init', 'fix_my_email_return_path' );

总结

使用SMTP中继服务发送邮件,可以极大提高系统相应速度,避免网站服务器和smtp服务器之间的网络波动带来的延迟,甚至宕机。SMTP中继服务还广泛应用于跨国邮件当中,国内大多数邮件服务器均被拉入国际邮件黑名单,使用SMTP中继服务可以快速发送邮件到全球各地,更可以避免邮件拉黑。

 

赞(0)
未经许可不得转载:小心灵学院 » 搭建SMTP中继实现网站异步发送邮件 提升网站响应速度
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址