通过SMTP协议实现Linux邮件发送配置指南
一、环境准备与基础配置
1. SMTP服务开通(以qq邮箱为例)
-
登录qq邮箱网页端,进入「设置」-「POP3/SMTP/IMAP」
-
开启「SMTP服务」并获取16位授权码(替代邮箱密码使用)
-
记录关键参数:
-
SMTP服务器地址:smtp.qq.com
-
安全端口号:465
-
加密类型:SSL
-
二、服务器端口验证
1. 网络连通性检测
# 使用nmap扫描开放端口
nmap -Pn smtp.qq.com -p 25,465,587# 快速验证SSL端口
nc -zv smtp.qq.com 465
典型输出:
2. 端口选择建议
端口 | 协议 | 安全性 | 适用场景 |
---|---|---|---|
25 | 明文SMTP | 低 | 不推荐使用 |
465 | SSL加密 | 高 | 推荐配置 |
587 | STARTTLS | 高 | 兼容性要求场景 |
三、邮件客户端配置
1. mail.rc文件配置
编辑配置文件/etc/mail.rc
添加以下参数:
# SMTP服务基础配置
set from="发件人 <yourname@qq.com>"
set smtp="smtps://smtp.qq.com:465"
set smtp-auth-user="yourname@qq.com" #须与首行邮件地址一致
set smtp-auth-password="16位授权码"
set smtp-auth=login# SSL证书配置
set ssl-verify=ignore
set nss-config-dir=/etc/mail_certs #需手动配置,详见--四、证书信任配置
2. 服务重启与状态检查
systemctl restart postfix
systemctl status postfix -l
四、证书信任配置
1. 证书目录创建
mkdir -p /etc/mail_certs
cd /etc/mail_certs
2. SSL证书获取与安装
# 提取邮件服务器证书
openssl s_client -connect smtp.qq.com:465 \| sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' > qq.crt# 添加证书到信任列表
certutil -A -n "SMTP_qq_SSL" -t "P,P,P" -d . -i qq.crt
参数解析:
-
-A
:添加证书 -
-n
:证书标识名称 -
-t
:信任级别(P=受信任的CA) -
-d
:证书存储目录
五、邮件发送验证
1. 命令行发送测试
# 发送文本内容
echo "邮件正文" | mail -s "测试主题" recipient@example.com# 发送文件内容
echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/mail.txt
mailx -v -s "测试主题" recipient@example.com < /tmp/mail.txt
2. 日志查看与排错
tail -f /var/log/maillog
# 成功发送的关键词:status=sent (250 Message accepted)
六、安全增强建议
1. 权限管理
chmod 600 /etc/mail.rc # 配置文件权限
chown root:root /etc/mail_certs # 证书目录归属
2. 定期维护
-
每90天更新授权码
-
使用
certutil -L -d /etc/mail_certs
检查证书有效期 -
清理旧日志:
logrotate /etc/logrotate.d/maillog