在Linux服务器上发送邮件是常见需求,无论是运维告警还是应用程序邮件通知。为了测试邮件发送功能,最直接的方法就是通过命令行发送邮件。
背景说明: 📧
- 公有云环境通常封禁25端口
- 使用465端口可以避免端口限制
- 本文以CentOS系统为例,演示通过465端口发送邮件
📮 常用邮箱服务器配置
邮箱服务商 | SMTP服务器 | 端口 |
---|---|---|
QQ邮箱 | smtp.qq.com | 465 |
QQ企业邮箱 | smtp.exmail.qq.com | 465 |
163邮箱 | smtp.163.com | 465 |
📦 安装mailx
yum install mailx
📧 使用QQ邮箱发送邮件
生成QQ邮箱证书文件
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发送邮件
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
🧪 测试发送邮件
echo hello100 | /usr/bin/mailx -s "Test title" hello@qq.com
🏢 使用QQ企业邮箱发送邮件
生成QQ企业邮箱证书文件
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发送邮件
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
🧪 测试发送邮件
echo hello100 | /usr/bin/mailx -s "Test title" hello@qq.com
💡 提示: 记得将配置中的邮箱地址和密码替换为实际的账号信息。QQ邮箱需要使用授权码而非登录密码。