- 新增 internal/outbound 模块:MX 查询、SMTP 出站客户端(EHLO/STARTTLS/ MAIL/RCPT/DATA/QUIT)、4xx 临时失败与 5xx 永久失败分类、8BITMIME 支持 - 新增 outbound_messages 队列表与 OutboundStore,后台 worker 指数退避重试 - 永久失败/超限退信到发件人收件箱,包含原因与目标收件人 - 外发邮件使用域名 DKIM 私钥签名(go-msgauth) - SMTP 提交集成:认证用户可发外部收件人,MAIL FROM 必须等于登录用户邮箱, 未认证外部投递明确拒绝(防开放中继) - Web 发信集成:外部收件人自动入队,附件以 multipart/mixed + base64 编码 加入邮件正文 - 每用户每分钟/每日发送限速(max_per_day=0 可禁用外部投递) - 管理后台新增外发队列页面:状态统计、失败原因、手动重试/取消 - 新增 [outbound] 配置段并更新 README / todo.md
37 lines
868 B
Go
37 lines
868 B
Go
package store
|
|
|
|
import (
|
|
"mail_go/internal/db"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Stores aggregates all store interfaces for convenient access.
|
|
type Stores struct {
|
|
Users UserStore
|
|
Mails MailStore
|
|
Domains DomainStore
|
|
Attachments AttachmentStore
|
|
Bans BanStore
|
|
Outbound OutboundStore
|
|
}
|
|
|
|
// NewStores creates a new Stores instance with all GORM-backed implementations.
|
|
func NewStores(database *gorm.DB) *Stores {
|
|
return &Stores{
|
|
Users: newUserStore(database),
|
|
Mails: newMailStore(database),
|
|
Domains: newDomainStore(database),
|
|
Attachments: newAttachmentStore(database),
|
|
Bans: newBanStore(database),
|
|
Outbound: newOutboundStore(database),
|
|
}
|
|
}
|
|
|
|
// Ensure models are referenced (prevents unused import errors).
|
|
var _ = db.User{}
|
|
var _ = db.Domain{}
|
|
var _ = db.Message{}
|
|
var _ = db.Attachment{}
|
|
var _ = db.BanEntry{}
|