Smail/deploy/systemd/smail.service
smail 96a073f132
Some checks are pending
Security Checks / security (push) Waiting to run
完善插件资源权限诊断
2026-09-30 01:22:51 +08:00

47 lines
1.8 KiB
Desktop File

[Unit]
Description=Smail 邮件服务
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=300s
StartLimitBurst=3
[Service]
Type=simple
# 主进程需要保留受限的 root 能力,才能为插件创建 chroot 和网络隔离;插件
# 通过 SMAIL_PLUGIN_UID/SMAIL_PLUGIN_GID 降权运行,不能以 root 身份执行。
# 运行环境仅由 root 可读写的独立文件提供,避免在 unit 中混入部署环境配置。
EnvironmentFile=/etc/smail/smail.env
WorkingDirectory=/opt/smail
ExecStart=/opt/smail/smail
Restart=on-failure
RestartSec=10s
# 队列等待 25 秒、数据库等待 35 秒,另留服务与日志收尾时间。
TimeoutStopSec=90s
KillMode=control-group
OOMPolicy=stop
# 默认预算只是部署起点;上线前须核对同机服务余量并完成容量验收。
MemoryAccounting=true
MemoryHigh=384M
MemoryMax=512M
MemorySwapMax=0
CPUAccounting=true
CPUQuota=100%
TasksAccounting=true
TasksMax=256
RuntimeDirectory=smail
RuntimeDirectoryMode=0750
# 目录由 smail 进程拥有,允许主服务创建受保护的本机控制套接字。
NoNewPrivileges=true
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER
# 主进程需要读取 smail 用户权限保护的配置和数据目录,同时保留插件隔离能力。
# 跨用户限制资源和终止降权插件分别需要资源管理与信号能力;插件本身不继承有效能力。
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_SYS_CHROOT CAP_SETUID CAP_SETGID CAP_CHOWN CAP_SYS_ADMIN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SYS_RESOURCE CAP_KILL
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
ReadWritePaths=/opt/smail/config /opt/smail/data /opt/smail/ssl /opt/smail/log -/opt/smail/plugins /run/smail
[Install]
WantedBy=multi-user.target