// Package imapserver implements a minimal read-mostly IMAP4rev1 server backed by
// internal/mailstore, so a mail client (Thunderbird etc.) can retrieve mail this
// server received into a local mailbox. Only a single fixed "INBOX" folder is
// supported — no folder hierarchy yet (aliases/multiple folders are a later
// milestone). Login only accepts an app password (esrv_mailbox_app_passwords), never
// a mailbox's own portal password, since IMAP AUTH has no interactive MFA step.
package imapserver

import (
	"mailgoserver/internal/db"
	"mailgoserver/internal/mailstore"
	"mailgoserver/internal/toolbox"

	"gopkg.in/ini.v1"
)

// Backend holds the shared dependencies every connection's Session uses, mirroring
// smtpserver.Backend.
type Backend struct {
	DB        *db.DB
	Mailstore *mailstore.Store
	Logger    *toolbox.Logger
	Cfg       *ini.File
}

func (b *Backend) NewSession(peerIP string) *Session {
	return &Session{backend: b, peerIP: peerIP}
}
