使用 Mailx 通过 SMTP 在 Centos 上发送邮件,解决 WordPress 发送邮件问题

文 / @WordPress主题

Linux服务器上使用Mailx程序发送SMTP邮件

很多VPS上使用的Linux服务器精简了邮件发送组件,导致了服务器上发送不到通知邮件,一些需要邮件才能实现的功能(比如找回密码,确认注册等)就会受到影响。WordPress有很多SMTP插件可以帮助我们通过STMP发送邮件,简单的后台设置一下SMTP信息就可以了。

如果一个服务器上托管了很多WordPress站点,操作起来就非常繁琐了。今天为大家介绍一个可以直接在Linux上使用SMTP发送邮件的程序:Mailx,这个程序可以帮助我们让服务器直接支持邮件发送,不用再在每个站点上都设置了。

安装Mailx程序

今天,我们就拿Centos来举例说明,在Centos安装Mailx非常简单,直接使用yum安装即可。安装之前,建议移除不再需要且可能会引起冲突的postfix或sendmail程序。

yum -y remove postfix
yum -y remove sendmail

安装Mailx程序:

yum -y install mailx

配置SMTP发送邮件

一般邮件服务器会提供smtp、smtps和smtpstarttls服务来发送邮件。smtp最简单的,也最不安全的,不建议使用,最好使用smtps或者smtpstarttls来发送邮件。我们就用QQ邮箱来举例说明怎么配置Mailx的。Mailx的配置文件为/etc/mail.rc,编辑这个文件,加入以下配置,两种方式任选一种即可。

[wprs_c-alert type="info" content="注意:QQ邮箱的密码是在QQ邮箱账户设置里面生成的”授权码”,而不是QQ密码或者QQ邮箱独立登录密码。"]

smtps方式发送邮件配置

set nss-config-dir=/etc/pki/nssdb
set ssl-verify=ignore
set smtp=smtps://smtp.qq.com:465
set smtp-auth=login
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=xxx
set from=xxx@qq.com

starttls方式发送邮件配置

set smtp-use-starttls
set nss-config-dir=/etc/pki/nssdb
set ssl-verify=ignore
set smtp=smtp.qq.com:587
set smtp-auth=login
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=xxx
set from=xxx@qq.com

加入上面配置保存以后,运行以下命令测试发送邮件,如果没有意外,我们的邮箱很快就能收到从服务器发过来的测试邮件了。

echo "Hello" | mail -v -s "test" xxx@qq.com

使用上面的配置,邮件是完全能够发出去的,但是发送邮件的时候会提示“Error in certificate: Peer's certificate issuer is not recognized.”提示,运行以下命令生成一个证书即可。

mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGINCERTIFICATE-/,/-ENDCERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs

生成完成之后,修改mail.rc邮件配置,修改nss-config-dir为上面命令生成的/root/.certs,保存即可。

参考上面的设置,同样可以使用126,163等邮箱在服务器上通过SMTP发送邮件。设置成功以后,服务器上的所有WordPress站点,或者其他程序、其他语言开发的站点,都可以直接发送邮件了,是不是很方便?

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。