accounts/scripts/install_exim_sendonly.md

4.7 KiB
Raw Blame History

Exim Send-Only SMTP 一键脚本使用指南

环境假设: 系统Ubuntu Server (22.04 / 24.04) IP52.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" p: "s" 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" p: "s" 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

保留系统证书、避免误删

提供交互式清理选项