46 lines
1.6 KiB
Desktop File
46 lines
1.6 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
|
|
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
|