accounts/scripts/install_exim_sendonly.md

210 lines
4.7 KiB
Markdown
Raw Normal View History

Exim Send-Only SMTP 一键脚本使用指南
环境假设:
系统:Ubuntu Server (22.04 / 24.04)
IP:52.196.108.28
域名:smtp.svc.plus
邮件地址:no-reply@svc.plus
证书:/etc/ssl/svc.plus.pem 与 /etc/ssl/svc.plus.key
🧱 一、首次部署(deploy)
sudo ./install_exim_sendonly.sh deploy
执行内容:
自动安装依赖包:exim4, opendkim, sasl2-bin, mailutils, dnsutils
配置:
TLS 启用 /etc/ssl/svc.plus.pem / /etc/ssl/svc.plus.key
SASL 认证(LOGIN / PLAIN)
DKIM 签名(自动生成私钥)
启动服务:exim4 + opendkim
输出结果:
🌐 推荐 DNS 配置模板:
----------------------------------------------------------
A smtp.svc.plus 52.196.108.28
MX svc.plus smtp.svc.plus.
SPF @ "v=spf1 a:smtp.svc.plus -all"
DKIM mail._domainkey "v=DKIM1; k=rsa; p=MIIBIjANBg..."
DMARC _dmarc "v=DMARC1; p=quarantine; rua=mailto:postmaster@svc.plus"
----------------------------------------------------------
📦 应用端 SMTP 配置(YAML):
----------------------------------------------------------
smtp:
host: "smtp.svc.plus"
port: 587
username: "no-reply@svc.plus"
password: "YOUR_PASSWORD"
from: "XControl Account <no-reply@svc.plus>"
replyTo: ""
timeout: 10s
tls:
mode: "auto"
insecureSkipVerify: false
----------------------------------------------------------
🔍 二、自检发信环境(check self)
sudo ./install_exim_sendonly.sh check self
输出示例:
🔍 自检 SPF / DKIM / DMARC / rDNS / HELO ...
SPF:
"v=spf1 a:smtp.svc.plus -all"
DKIM:
"v=DKIM1; k=rsa; p=MIIBIjANBg..."
DMARC:
"v=DMARC1; p=quarantine; rua=mailto:postmaster@svc.plus"
rDNS:
smtp.svc.plus.
HELO 检查:
250-smtp.svc.plus Hello test
250-AUTH PLAIN LOGIN
250 STARTTLS
🧭 若以上 5 项全部正常 → 代表发信链路可信,邮件不易进垃圾箱。
📧 三、发送测试邮件(check send_email)
sudo ./install_exim_sendonly.sh check send_email you@gmail.com
输出:
📧 发送测试邮件到 you@gmail.com...
✅ 邮件已发送,请检查收件箱或垃圾邮件文件夹。
查看日志: sudo tail -n 20 /var/log/exim4/mainlog
邮件标题为:
✅ Exim Send-Only + DKIM + SASL Test
若在 Gmail / Outlook 查看邮件头,能看到:
Authentication-Results: dkim=pass spf=pass dmarc=pass
♻️ 四、更新配置或证书(upgrade)
当你更新 /etc/ssl/svc.plus.pem 或修改 DKIM / 域名时:
sudo ./install_exim_sendonly.sh upgrade
脚本会:
自动刷新 update-exim4.conf
重启服务
输出当前 DKIM / YAML 配置
📜 五、查看配置信息(show)
sudo ./install_exim_sendonly.sh show dns_record
sudo ./install_exim_sendonly.sh show app_config
示例:
🌐 推荐 DNS 配置模板:
A smtp.svc.plus 52.196.108.28
MX svc.plus smtp.svc.plus.
SPF @ "v=spf1 a:smtp.svc.plus -all"
...
📦 应用端 SMTP 配置(YAML):
smtp:
host: "smtp.svc.plus"
port: 587
username: "no-reply@svc.plus"
password: "YOUR_PASSWORD"
from: "XControl Account <no-reply@svc.plus>"
🧹 六、安全卸载(uninstall 或 reset)
sudo ./install_exim_sendonly.sh uninstall
# 或:
sudo ./install_exim_sendonly.sh reset
脚本行为:
停止服务:systemctl stop exim4 opendkim
删除:
/etc/exim4/
/etc/opendkim/
/var/spool/exim4/
/var/log/exim4/
/etc/email-addresses
/etc/default/opendkim
不删除 /etc/ssl/* 与现有证书
询问是否删除 DKIM 私钥目录:
是否删除 DKIM 私钥文件?(y/N): y
🔒 已删除 DKIM 密钥。
✅ 已彻底清理 Exim4 + DKIM + SASL 环境(证书未动,可重新 deploy)
🚀 七、重新部署
清理后重新执行:
sudo ./install_exim_sendonly.sh deploy
会重新生成所有配置与 DKIM 密钥,
确保一个全新、干净、可验证的发信节点。
🧠 八、日志与调试
常用命令:
sudo tail -f /var/log/exim4/mainlog
sudo journalctl -u opendkim.service -b --no-pager | tail -n 20
sudo openssl s_client -connect smtp.svc.plus:587 -starttls smtp
检查 DKIM:
sudo opendkim-testkey -d svc.plus -s mail -vvv
✅ 九、健康状态一览
项目 检查方式 期望结果
SPF dig TXT svc.plus v=spf1 a:smtp.svc.plus -all
DKIM dig TXT mail._domainkey.svc.plus v=DKIM1; k=rsa; p=...
DMARC dig TXT _dmarc.svc.plus v=DMARC1; p=quarantine; ...
rDNS dig -x 52.196.108.28 smtp.svc.plus.
HELO EHLO test 返回 250-smtp.svc.plus
端口 nc -zv smtp.svc.plus 587 open
日志 /var/log/exim4/mainlog <= / => 投递正常
🔒 十、总结
install_exim_sendonly.sh v3.1
是一个可重入、幂等、安全的 SMTP 部署器,特点:
单脚本管理全生命周期
DKIM + SPF + DMARC 三重防护
支持 SASL 登录 / STARTTLS
自动输出应用配置 YAML
保留系统证书、避免误删
提供交互式清理选项