package imap import ( "crypto/tls" "sync" "postern/internal/db" "postern/internal/persistence" "postern/internal/policy" "github.com/emersion/go-imap/v2/imapserver" ) type Config struct { DB *db.DB Listen string Persistence *persistence.Persistence TLSConfig *tls.Config PolicyEngine *policy.Engine } type Server struct { db *db.DB mTracker *mailboxTrackerRegistry listen string persistence *persistence.Persistence tlsConfig *tls.Config policyEngine *policy.Engine mu sync.Mutex imapSrv *imapserver.Server status string } func NewServer(config *Config) (*Server, error) { return &Server{ mTracker: newMailboxTrackerRegistry(), db: config.DB, listen: config.Listen, persistence: config.Persistence, tlsConfig: config.TLSConfig, policyEngine: config.PolicyEngine, }, nil }