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 " 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 " 🧹 六、安全卸载(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 保留系统证书、避免误删 提供交互式清理选项