- 1 个 dispatcher + N 个 worker 池(默认 4)并行投递,启动时立即 扫描清空积压;workers=0/1 退化为串行(旧行为) - 每收件域并发信号量(默认 2,配置 max_concurrent_per_domain), 防对单个 MX 域并发过多被判定滥发;中继模式统一按 relay 限制 - store 新增 Claim 原子抢占(sending 状态防重复投递),并发下 每封邮件恰好投递一次 - 新增配置 workers/batch_size(替代硬编码 50);dispatcher 改为 抢占后投递、worker 只负责发送,退避重试/退信/状态机不变 - 新增测试:真并发、串行回退、每域上限、临时/永久失败、错误隔离、 Claim 并发原子性与状态可抢占性;-race 无警告
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package config
|
|
|
|
// Linux path prefixes
|
|
const (
|
|
LinuxEtcDir = "/etc/mail_go/"
|
|
LinuxBaseDir = "/srv/mail_go/"
|
|
)
|
|
|
|
// Windows path prefixes
|
|
const (
|
|
WinEtcDir = "./win/etc/mail_go/"
|
|
WinBaseDir = "./win/srv/mail_go/"
|
|
)
|
|
|
|
// Default port constants
|
|
const (
|
|
DefaultSMTPPort = 25
|
|
DefaultSMTPTLSPort = 465
|
|
DefaultSMTPSubmitPort = 587
|
|
DefaultIMAPPort = 143
|
|
DefaultIMAPTLSPort = 993
|
|
DefaultPOP3Port = 110
|
|
DefaultPOP3TLSPort = 995
|
|
DefaultWebPort = ":8080"
|
|
)
|
|
|
|
// Default database settings
|
|
const (
|
|
DefaultDBDriver = "sqlite"
|
|
DefaultDSNLinux = "/srv/mail_go/mail.db"
|
|
DefaultDSNWin = "./win/srv/mail_go/mail.db"
|
|
)
|
|
|
|
// Default quota
|
|
const (
|
|
DefaultQuotaBytes int64 = 5 * 1024 * 1024 * 1024 // 5GB
|
|
)
|
|
|
|
// DefaultProtocolLogKeepDays 是 SMTP/IMAP/POP3 协议调用日志的默认保留天数。
|
|
const DefaultProtocolLogKeepDays = 30
|
|
|
|
// Outbound delivery concurrency defaults.
|
|
const (
|
|
// DefaultOutboundWorkers 并发投递 worker 数(0/1 为串行)。
|
|
DefaultOutboundWorkers = 4
|
|
// DefaultOutboundBatchSize 每次扫描最多取出的待投递邮件数。
|
|
DefaultOutboundBatchSize = 50
|
|
// DefaultMaxConcurrentPerDomain 同一收件域的最大并发连接数。
|
|
DefaultMaxConcurrentPerDomain = 2
|
|
)
|
|
|
|
// ConfigFileName is the name of the configuration file
|
|
const ConfigFileName = "mail_go.toml"
|