在linux服务器上发送邮件是很常见的需求,可能是运维告警邮件需要发送或是应用程序发送邮件,为了诊断邮件是否可以通过该服务器发送出去,最直接可行的方法就是通过命令发送邮件。在公有云发送邮件,通常25端口会被封掉,想避免这个问题可以采用465端口,本文将以centos通过465端口发送邮件为例,介绍如何通过命令发送邮件。
常用的邮箱发送服务器及端口
1
2
3
|
qq的是smtp.qq.com:465
qq企业邮箱的是smtp.exmail.qq.com:465
163的是smtp.163.com:465
|
安装mailx
使用qq邮箱发送邮件
生成qq邮箱证书文件
1
2
3
4
5
6
7
8
9
10
11
12
|
mkdir -p /root/.certs/
# 向qq请求证书
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
cd /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
|
配置mailx发送邮件配置
1
2
3
4
5
6
7
|
vi /etc/mail.rc
set from=test@qq.com
set smtp="smtps://smtp.qq.com:465"
set smtp-auth-user=test@qq.com
set smtp-auth-password=xxxx
set smtp-auth=login
#set ssl-verify=ignore
|
命令测试发送邮件
1
|
echo hello100 | /usr/bin/mailx -s "Test title" hello@qq.com
|
使用qq企业邮箱发送邮件
生成qq企业邮箱证书文件
1
2
3
4
5
6
7
8
9
10
11
12
|
mkdir -p /root/.certs/
# 向qq请求证书
echo -n | openssl s_client -connect smtp.exmail.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/exqq.crt
# 添加一个证书到证书数据库中
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/exqq.crt
# 列出目录下证书
certutil -L -d /root/.certs
cd /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i exqq.crt
|
配置mailx发送邮件配置
1
2
3
4
5
6
7
8
9
|
vi /etc/mail.rc
set from=test@exmail.qq.com
set smtp="smtps://smtp.exmail.qq.com:465"
set smtp-auth-user=test@exmail.qq.com
set smtp-auth-password=xxxx
set smtp-auth=login
#set ssl-verify=ignore
#set nss-config-dir=/etc/pki/nssdb
set nss-config-dir=/root/.certs
|
命令测试发送邮件
1
|
echo hello100 | /usr/bin/mailx -s "Test title" hello@qq.com
|