accounts/scripts/install_exim_sendonly.md

210 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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