在 Centos 安装 Mailx 非常简单,直接使用 yum 安装即可。安装之前,建议移除不再需要且可能会引起冲突的 postfix 或 sendmail 程序。
yum -y remove postfix
yum -y remove sendmail
安装 Mailx 程序
`yum -y install mailx
一般阿里云是自带mailx的,建议可以把之前的卸载了然后在重装一遍。
配置 SMTP 发送邮件
一般邮件服务器会提供 smtp、smtps 和 smtp starttls 服务来发送邮件。smtp 最简单的,也最不安全的,不建议使用,最好使用 smtps 或者 smtp starttls 来发送邮件。我们就用 QQ 邮箱来举例说明怎么配置 Mailx 的。Mailx 的配置文件为 /etc/mail.rc,编辑这个文件,加入以下配置。
stemp方式发送邮件配置
set from=usernam@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=username@qq.com
set smtp-auth-password=passwd
set smtp-auth=login
这是最常见也是最简单的一种配置模板,修改好了之后就可以直接尝试发送。
发送邮件:
mail -s "test"(发送的主题) 想要发送的邮箱(xxxx@qq.com)
hello(输入想发送的内容)
EOT(ctrl+D)
假如能发送成功就可以不用看后面的了,加入发送出去之后出现的是这个提示,那么请继续看后面的文章。
smtps 方式发送邮件配置
set from=xxx@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=xxx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
from: 当别人收到邮件时显示的发件人。默认是"当前用户id"@“主机名”,所以极有可能是"root@localhost"哦,至于你这样发出去,会不会被别人家的邮件服务器当垃圾拒收,俺就不随意猜测了。但这样,默认也不方便回复邮件啊,所以还是设置设置吧。
smtp: 指定别人家的服务器地址。
smtp-auth: 指定SMTP的认证方式。如果你不设置的话,默认是LOGIN方式,当然你可以根据需要改成CRAM-MD5或PLAIN方式。
smtp-auth-user: 指定用户名。
smtp-auth-password: 指定密码。(这个密码指的是你在QQ或者163邮箱里面开启服务获得的授权码)
/etc/pki/nssdb/里面存放的是ssl证书,这个是自带的证书文件
配置完之后就可以尝试发送邮件试试了,假如能发送就表示可行,如果还是不能发送,就可以再尝试一下starttls 方式发送邮件。
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,保存即可。
这上面这一步不做修改也是可以运行的,因为/etc/pki/nssdb里面本身也自带有证书。
第一种方法mailx默认发送的方式是在25端口,但阿里云、腾讯云等都禁止了端口号25。因此第二种方法配置的是ssl 465端口,但是这种方法在阿里云云服务器的身上还是行不通,所以我才尝试了第三种方法,另外配置其他的端口,最后发现发送成功。
具体的端口问题描述可以看一下这个:Centos7 配置 sendmail、postfix 端口号25、465
然后关于发送邮件要打开的服务:POP3、SMTP、IMAP 的作用和联系
最后配置成功看的一个配置模板:使用 Mailx 通过 SMTP 在 Centos 上发送邮件,解决 WordPress 发送邮件问题