通常,WordPress发送邮件需要安装使用SMTP发信插件,比如Easy WP SMTP等。这些插件的使用使得WordPress加载速度变慢,且给WordPress增加了额外的安全风险。
一个解决办法是在WordPress的网站服务器上再额外搭建一套邮件服务器。但是,这样的方法显得过于累赘,我们只需要让WordPress发送邮件,收发信的处理应当交由专门的邮件服务器来完成。因此,我们今天介绍使用SMTP邮件中继(SMTP Relay)实现WordPress无插件邮件发送。
环境及基础配置
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, 如下图。
然后,会出现System mail name的选项框,如果您的主机名设置正确,这里应该会自动填入您的长主机名,默认即可。
配置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中继服务可以快速发送邮件到全球各地,更可以避免邮件拉黑。