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

自然
自然
自然
388
文章
443
评论
2020年6月12日15:30:08 评论 2187字阅读7分17秒

通常,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
提示

inet_interfaces为网络接口设置,这里使用回环地址,防止被他人滥用。

relayhost为转发服务器,我们这里目标为gmail的smtp服务。

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    user@gmail.com:password

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

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

网站应用SMTP中继发件

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

发件人:自然博客

发件人地址 :user@gmail.com

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 'user@gmail.com';
}
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中继服务可以快速发送邮件到全球各地,更可以避免邮件拉黑。

参考文章

香菇肥牛:搭建SMTP中继实现WordPress免插件发信

weinxin
自然博客
快来关注一下,一个linux运维爱好者的个人博客!
自然
  • 本文由 发表于 2020年6月12日15:30:08
如何防止smtp会暴露服务器真实ip Wordpress教程

如何防止smtp会暴露服务器真实ip

我们的网站使用cdn加速服务可以有效的隐藏服务器的真实ip地址,并起到了加速、应用防火墙、网络防火墙的作用,极大的提升了服务器的安全系数,然而,smtp任然会暴露服务器真实ip,这已经是一个历史遗留问...
iptables一键配置端口转发脚本,支持tcp和udp Linux

iptables一键配置端口转发脚本,支持tcp和udp

iptables是一款非常强大的防火墙管理工具,同样支持端口转发,同时也支持端口段转发。上一篇文章使用iptables进行端口转发配置对于小白非常不友好,自然在网络上面找到了一键脚本,对小白非常友好,...
使用iptables进行端口转发,支持端口段转发 Linux

使用iptables进行端口转发,支持端口段转发

端口转发自然已经介绍过了rinetd和socat这两个简单易用的工具,今天来介绍一下系统自带的iptables防火墙转发方案。iptables防火墙转发方案适用于拥有iptables工具的系统,其最大...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: