使用 Mailx 通过 SMTP 在 Centos 上发送邮件

使用 Mailx 通过 SMTP 在 Centos 上发送邮件,很多 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 和 smtp starttls 服务来发送邮件。smtp 最简单的,也最不安全的,不建议使用,最好使用 smtps 或者 smtp starttls 来发送邮件。我们就用 QQ 邮箱来举例说明怎么配置 Mailx 的。Mailx 的配置文件为 /etc/mail.rc,编辑这个文件,加入以下配置,两种方式任选一种即可。

注意: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 '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/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 站点,或者其他程序、其他语言开发的站点,都可以直接发送邮件了,是不是很方便?

未经允许不得转载:哈勃私语 » 使用 Mailx 通过 SMTP 在 Centos 上发送邮件

本文共1693个字 创建时间:2017年8月18日19:56   

分享到:更多 ()