fix(submission): 调整 SMTP 提交与发件授权逻辑。
- 启用 SMTP submission 时改为强制使用可读证书文件,并禁止使用容器自带测试证书。 - 收紧发件人校验,拒绝未授权的 From 地址,并支持别名多目标授权。 - 优化发送队列重入与重复消息处理,避免重复记录冲突。 - 让提交证书按需热加载,并稳定 MIME 头序列化顺序。 - 更新部署示例与文档,明确 submission 的证书配置要求。
This commit is contained in:
@@ -462,6 +462,30 @@ func (a *App) migrateSendQueueMessageID(ctx context.Context) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if _, err := a.db.ExecContext(ctx, `DELETE FROM send_queue
|
||||
WHERE id IN (
|
||||
SELECT id FROM (
|
||||
SELECT id,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY mailbox_id, source, message_id
|
||||
ORDER BY
|
||||
CASE status
|
||||
WHEN 'queued' THEN 0
|
||||
WHEN 'sending' THEN 1
|
||||
WHEN 'failed' THEN 2
|
||||
WHEN 'delivered' THEN 3
|
||||
ELSE 4
|
||||
END,
|
||||
created_at DESC,
|
||||
id DESC
|
||||
) AS row_num
|
||||
FROM send_queue
|
||||
WHERE message_id <> ''
|
||||
)
|
||||
WHERE row_num > 1
|
||||
)`); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = a.db.ExecContext(ctx, `CREATE UNIQUE INDEX IF NOT EXISTS idx_send_queue_mailbox_source_message_id ON send_queue(mailbox_id, source, message_id) WHERE message_id <> ''`)
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user