SYMBOL INDEX (595 symbols across 107 files) FILE: cmd/dump.go function init (line 27) | func init() { FILE: cmd/ingest.go function init (line 132) | func init() { function isFile (line 140) | func isFile(path string) bool { function format (line 150) | func format(n int) string { FILE: cmd/readyz.go function init (line 57) | func init() { FILE: cmd/reindex.go function init (line 34) | func init() { FILE: cmd/root.go function Execute (line 63) | func Execute() { function init (line 70) | func init() { function initConfigFromEnv (line 195) | func initConfigFromEnv() { function initDeprecatedConfigFromEnv (line 404) | func initDeprecatedConfigFromEnv() { function getEnabledFromEnv (line 447) | func getEnabledFromEnv(k string) bool { FILE: cmd/sendmail.go function init (line 19) | func init() { FILE: cmd/version.go function init (line 58) | func init() { FILE: config/config.go type autoTag (line 236) | type autoTag struct type SMTPRelayConfigStruct (line 242) | type SMTPRelayConfigStruct struct type SMTPForwardConfigStruct (line 266) | type SMTPForwardConfigStruct struct function VerifyConfig (line 283) | func VerifyConfig() error { FILE: config/tags.go type yamlTags (line 22) | type yamlTags struct type yamlTag (line 26) | type yamlTag struct function loadTagsFromConfig (line 32) | func loadTagsFromConfig(c string) error { function loadTagsFromArgs (line 68) | func loadTagsFromArgs(c string) error { function parseTagsDisable (line 91) | func parseTagsDisable(s string) error { FILE: config/utils.go function isFile (line 14) | func isFile(path string) bool { function isDir (line 21) | func isDir(path string) bool { function isValidURL (line 30) | func isValidURL(s string) bool { function DBTenantID (line 40) | func DBTenantID(s string) string { FILE: config/validators.go function parseMaxAge (line 19) | func parseMaxAge() error { function parseRelayConfig (line 52) | func parseRelayConfig(c string) error { function validateRelayConfig (line 88) | func validateRelayConfig() error { function parseForwardConfig (line 160) | func parseForwardConfig(c string) error { function validateForwardConfig (line 188) | func validateForwardConfig() error { function parseChaosTriggers (line 259) | func parseChaosTriggers() error { FILE: internal/auth/auth.go function SetUIAuth (line 23) | func SetUIAuth(s string) error { function SetSendAPIAuth (line 42) | func SetSendAPIAuth(s string) error { function SetSMTPAuth (line 61) | func SetSMTPAuth(s string) error { function SetPOP3Auth (line 80) | func SetPOP3Auth(s string) error { function credentialsFromString (line 98) | func credentialsFromString(s string) []string { FILE: internal/dump/dump.go function Sync (line 36) | func Sync(d string) error { function loadIDs (line 70) | func loadIDs() error { function saveMessages (line 118) | func saveMessages() error { FILE: internal/html2text/html2text.go function init (line 22) | func init() { function Strip (line 33) | func Strip(h string, includeLinks bool) string { function extract (line 47) | func extract(node *html.Node, buff *bytes.Buffer, includeLinks bool) { function clean (line 68) | func clean(text string) string { FILE: internal/html2text/html2text_test.go function TestPlain (line 5) | func TestPlain(t *testing.T) { function TestWithLinks (line 31) | func TestWithLinks(t *testing.T) { function BenchmarkPlain (line 58) | func BenchmarkPlain(b *testing.B) { function BenchmarkLinks (line 64) | func BenchmarkLinks(b *testing.B) { FILE: internal/htmlcheck/caniemail.go type CanIEmail (line 30) | type CanIEmail struct type JSONResult (line 44) | type JSONResult struct function loadJSONData (line 61) | func loadJSONData() error { FILE: internal/htmlcheck/css.go function runCSSTests (line 25) | func runCSSTests(html string) ([]Warning, int, error) { function mergeInlineCSS (line 118) | func mergeInlineCSS(html string) (string, error) { function inlineRemoteCSS (line 133) | func inlineRemoteCSS(h string) (string, error) { function downloadCSSToBytes (line 192) | func downloadCSSToBytes(url string) ([]byte, error) { function isValidURL (line 233) | func isValidURL(str string) bool { function testInlineStyles (line 240) | func testInlineStyles(doc *goquery.Document) map[string]int { function newSafeHTTPClient (line 275) | func newSafeHTTPClient() *http.Client { FILE: internal/htmlcheck/html.go function runHTMLTests (line 12) | func runHTMLTests(html string) ([]Warning, int, error) { FILE: internal/htmlcheck/inline_test.go function TestInlineStyleDetection (line 12) | func TestInlineStyleDetection(t *testing.T) { function assertEqual (line 75) | func assertEqual(t *testing.T, a any, b any, message string) { FILE: internal/htmlcheck/main.go function RunTests (line 17) | func RunTests(html string) (Response, error) { method getTest (line 107) | func (c CanIEmail) getTest(k string) (Warning, error) { function mdToHTML (line 188) | func mdToHTML(str string) string { FILE: internal/htmlcheck/platforms.go function Platforms (line 10) | func Platforms() (map[string][]string, error) { FILE: internal/htmlcheck/structs.go type Response (line 6) | type Response struct type Warning (line 18) | type Warning struct type Result (line 44) | type Result struct type Score (line 62) | type Score struct type Total (line 76) | type Total struct FILE: internal/linkcheck/linkcheck_test.go function TestLinkDetection (line 66) | func TestLinkDetection(t *testing.T) { FILE: internal/linkcheck/main.go function RunTests (line 16) | func RunTests(msg *storage.Message, followRedirects bool) (Response, err... function extractTextLinks (line 32) | func extractTextLinks(msg *storage.Message) []string { function extractHTMLLinks (line 59) | func extractHTMLLinks(msg *storage.Message) []string { function strUnique (line 98) | func strUnique(strSlice []string) []string { FILE: internal/linkcheck/status.go function getHTTPStatuses (line 20) | func getHTTPStatuses(links []string, followRedirects bool) []Link { function doHead (line 69) | func doHead(link string, followRedirects bool) (int, error) { function httpErrorSummary (line 127) | func httpErrorSummary(err error) string { function safeDialContext (line 140) | func safeDialContext(dialer *net.Dialer) func(ctx context.Context, netwo... FILE: internal/linkcheck/structs.go type Response (line 6) | type Response struct type Link (line 14) | type Link struct FILE: internal/logger/logger.go function Log (line 27) | func Log() *logrus.Logger { function PrettyPrint (line 64) | func PrettyPrint(i any) { function CleanHTTPIP (line 71) | func CleanHTTPIP(s string) string { FILE: internal/pop3/functions.go function authUser (line 15) | func authUser(username, password string) bool { function sendResponse (line 20) | func sendResponse(c net.Conn, m string) { function sendData (line 31) | func sendData(c net.Conn, m string) { function getMessages (line 36) | func getMessages() ([]message, error) { function getTop (line 54) | func getTop(id string, nr int) (string, string, error) { function getCommand (line 72) | func getCommand(line string) (string, []string) { function getSafeArg (line 78) | func getSafeArg(args []string, nr int) (string, error) { FILE: internal/pop3/pop3_test.go function TestPOP3 (line 25) | func TestPOP3(t *testing.T) { function TestAuthentication (line 211) | func TestAuthentication(t *testing.T) { function setup (line 277) | func setup() { function connectAuth (line 308) | func connectAuth() (*pop3client.Conn, error) { function connectBadAuth (line 320) | func connectBadAuth() (*pop3client.Conn, error) { function connect (line 332) | func connect() (*pop3client.Conn, error) { function portFree (line 347) | func portFree(port int) bool { function randRange (line 360) | func randRange(min, max int) int { function insertEmailData (line 364) | func insertEmailData(t *testing.T) { function assertEqual (line 400) | func assertEqual(t *testing.T, a any, b any, message string) { FILE: internal/pop3/server.go constant AUTHORIZATION (line 27) | AUTHORIZATION = 1 constant TRANSACTION (line 29) | TRANSACTION = 2 constant UPDATE (line 31) | UPDATE = 3 function Run (line 35) | func Run() { type message (line 81) | type message struct function handleClient (line 86) | func handleClient(conn net.Conn) { function handleTransactionCommand (line 211) | func handleTransactionCommand(conn net.Conn, cmd string, args []string, ... FILE: internal/pop3client/client.go type Client (line 19) | type Client struct method NewConn (line 89) | func (c *Client) NewConn() (*Conn, error) { type Conn (line 25) | type Conn struct method Send (line 127) | func (c *Conn) Send(b string) error { method Cmd (line 141) | func (c *Conn) Cmd(cmd string, isMulti bool, args ...any) (*bytes.Buff... method ReadOne (line 174) | func (c *Conn) ReadOne() ([]byte, error) { method ReadAll (line 186) | func (c *Conn) ReadAll() (*bytes.Buffer, error) { method Auth (line 212) | func (c *Conn) Auth(user, password string) error { method User (line 227) | func (c *Conn) User(s string) error { method Pass (line 234) | func (c *Conn) Pass(s string) error { method Stat (line 241) | func (c *Conn) Stat() (int, int, error) { method List (line 271) | func (c *Conn) List(msgID int) ([]MessageID, error) { method Uidl (line 319) | func (c *Conn) Uidl(msgID int) ([]MessageID, error) { method Retr (line 360) | func (c *Conn) Retr(msgID int) (*mail.Message, error) { method RetrRaw (line 376) | func (c *Conn) RetrRaw(msgID int) (*bytes.Buffer, error) { method Top (line 382) | func (c *Conn) Top(msgID int, numLines int) (*mail.Message, error) { method Dele (line 398) | func (c *Conn) Dele(msgID ...int) error { method Rset (line 409) | func (c *Conn) Rset() error { method Noop (line 416) | func (c *Conn) Noop() error { method Quit (line 424) | func (c *Conn) Quit() error { type Opt (line 32) | type Opt struct type Dialer (line 48) | type Dialer interface type MessageID (line 53) | type MessageID struct function New (line 71) | func New(opt Opt) *Client { function parseResp (line 437) | func parseResp(b []byte) ([]byte, error) { FILE: internal/prometheus/metrics.go function initMetrics (line 35) | func initMetrics() { function updateMetrics (line 110) | func updateMetrics() { function GetHandler (line 134) | func GetHandler() http.Handler { function StartUpdater (line 141) | func StartUpdater() { function StartSeparateServer (line 157) | func StartSeparateServer() { function GetMode (line 180) | func GetMode() string { FILE: internal/smtpd/chaos/chaos.go type Triggers (line 30) | type Triggers struct type Trigger (line 42) | type Trigger struct method Trigger (line 113) | func (c Trigger) Trigger() (bool, int) { function SetFromStruct (line 55) | func SetFromStruct(c Triggers) error { function Set (line 82) | func Set(key string, errorCode int, probability int) error { FILE: internal/smtpd/forward.go function autoForwardMessage (line 17) | func autoForwardMessage(from string, data *[]byte) error { function createForwardingSMTPClient (line 34) | func createForwardingSMTPClient(config config.SMTPForwardConfigStruct, a... function forward (line 81) | func forward(from string, msg []byte) error { function forwardAuthFromConfig (line 139) | func forwardAuthFromConfig() smtp.Auth { FILE: internal/smtpd/main.go function mailHandler (line 32) | func mailHandler(origin net.Addr, from string, to []string, data []byte,... function SaveToDatabase (line 37) | func SaveToDatabase(origin net.Addr, from string, to []string, data []by... function authHandler (line 156) | func authHandler(remoteAddr net.Addr, mechanism string, username []byte,... function authHandlerAny (line 168) | func authHandlerAny(remoteAddr net.Addr, mechanism string, username []by... function handlerRcpt (line 175) | func handlerRcpt(remoteAddr net.Addr, from string, to string) bool { function Listen (line 191) | func Listen() error { function verbLogTranslator (line 210) | func verbLogTranslator(verb string) string { function listenAndServe (line 218) | func listenAndServe(addr string, handler MsgIDHandler, authHandler AuthH... function cleanIP (line 323) | func cleanIP(i net.Addr) string { function scanAddressesInHeader (line 331) | func scanAddressesInHeader(h mail.Header) (map[string]bool, bool) { FILE: internal/smtpd/relay.go function autoRelayMessage (line 17) | func autoRelayMessage(from string, to []string, data *[]byte) error { function createRelaySMTPClient (line 69) | func createRelaySMTPClient(config config.SMTPRelayConfigStruct, addr str... function Relay (line 116) | func Relay(from string, to []string, msg []byte) error { function relayAuthFromConfig (line 172) | func relayAuthFromConfig() smtp.Auth { type loginAuth (line 192) | type loginAuth struct method Start (line 204) | func (a *loginAuth) Start(_ *smtp.ServerInfo) (string, []byte, error) { method Next (line 208) | func (a *loginAuth) Next(fromServer []byte, more bool) ([]byte, error) { function LoginAuth (line 197) | func LoginAuth(username, password string) smtp.Auth { FILE: internal/smtpd/smtpd.go type Handler (line 42) | type Handler type MsgIDHandler (line 46) | type MsgIDHandler type HandlerRcpt (line 49) | type HandlerRcpt type AuthHandler (line 52) | type AuthHandler function ListenAndServe (line 60) | func ListenAndServe(addr string, handler Handler, appName string, hostna... function ListenAndServeTLS (line 68) | func ListenAndServeTLS(addr string, certFile string, keyFile string, han... type maxSizeExceededError (line 77) | type maxSizeExceededError struct method Error (line 87) | func (err maxSizeExceededError) Error() string { function maxSizeExceeded (line 81) | func maxSizeExceeded(limit int) maxSizeExceededError { type LogFunc (line 92) | type LogFunc type Server (line 95) | type Server struct method ConfigureTLS (line 127) | func (srv *Server) ConfigureTLS(certFile string, keyFile string) error { method ListenAndServe (line 171) | func (srv *Server) ListenAndServe() error { method Serve (line 217) | func (srv *Server) Serve(ln net.Listener) error { method newSession (line 264) | func (srv *Server) newSession(conn net.Conn) (s *session) { method getShutdownChan (line 299) | func (srv *Server) getShutdownChan() <-chan struct{} { method closeShutdownChan (line 309) | func (srv *Server) closeShutdownChan() { method Close (line 324) | func (srv *Server) Close() error { method Shutdown (line 331) | func (srv *Server) Shutdown(ctx context.Context) error { type session (line 246) | type session struct method serve (line 359) | func (s *session) serve() { method writef (line 789) | func (s *session) writef(format string, args ...any) { method readLine (line 809) | func (s *session) readLine() (string, error) { method parseLine (line 833) | func (s *session) parseLine(line string) (verb string, args string) { method readData (line 845) | func (s *session) readData() ([]byte, error) { method makeHeaders (line 880) | func (s *session) makeHeaders(to []string) []byte { method authMechs (line 892) | func (s *session) authMechs() (mechs map[string]bool) { method makeEHLOResponse (line 906) | func (s *session) makeEHLOResponse() (response string) { method handleAuthLogin (line 939) | func (s *session) handleAuthLogin(arg string) (bool, error) { method handleAuthPlain (line 978) | func (s *session) handleAuthPlain(arg string) (bool, error) { method handleAuthCramMD5 (line 1012) | func (s *session) handleAuthCramMD5() (bool, error) { function extractAndValidateAddress (line 1044) | func extractAndValidateAddress(re *regexp.Regexp, args string) ([]string... FILE: internal/smtpd/smtpd_test.go function newConn (line 25) | func newConn(t *testing.T, server *Server) net.Conn { function cmdCode (line 41) | func cmdCode(t *testing.T, conn net.Conn, cmd string, code string) string { function TestSimpleCommands (line 56) | func TestSimpleCommands(t *testing.T) { function TestCmdHELO (line 80) | func TestCmdHELO(t *testing.T) { function TestCmdEHLO (line 97) | func TestCmdEHLO(t *testing.T) { function TestCmdMAILBeforeEHLO (line 127) | func TestCmdMAILBeforeEHLO(t *testing.T) { function TestCmdMAILAfterRCPT (line 137) | func TestCmdMAILAfterRCPT(t *testing.T) { function TestCmdRSET (line 162) | func TestCmdRSET(t *testing.T) { function TestCmdMAIL (line 176) | func TestCmdMAIL(t *testing.T) { function TestCmdMAILMaxSize (line 231) | func TestCmdMAILMaxSize(t *testing.T) { function TestCmdRCPT (line 261) | func TestCmdRCPT(t *testing.T) { function TestCmdMaxRecipients (line 309) | func TestCmdMaxRecipients(t *testing.T) { function TestCmdDATA (line 326) | func TestCmdDATA(t *testing.T) { function TestCmdDATAWithMaxSize (line 356) | func TestCmdDATAWithMaxSize(t *testing.T) { type mockHandler (line 393) | type mockHandler struct method handler (line 397) | func (m *mockHandler) handler(err error) func(a net.Addr, f string, t ... function TestCmdDATAWithHandler (line 404) | func TestCmdDATAWithHandler(t *testing.T) { function TestCmdDATAWithHandlerError (line 421) | func TestCmdDATAWithHandlerError(t *testing.T) { function TestCmdSTARTTLS (line 438) | func TestCmdSTARTTLS(t *testing.T) { function TestCmdSTARTTLSFailure (line 452) | func TestCmdSTARTTLSFailure(t *testing.T) { function makeCertificate (line 482) | func makeCertificate() tls.Certificate { function TestCmdSTARTTLSSuccess (line 541) | func TestCmdSTARTTLSSuccess(t *testing.T) { function TestCmdSTARTTLSRequired (line 567) | func TestCmdSTARTTLSRequired(t *testing.T) { function TestMakeHeaders (line 618) | func TestMakeHeaders(t *testing.T) { function TestParseLine (line 634) | func TestParseLine(t *testing.T) { function TestReadLine (line 655) | func TestReadLine(t *testing.T) { function TestReadData (line 680) | func TestReadData(t *testing.T) { function TestReadDataWithMaxSize (line 723) | func TestReadDataWithMaxSize(t *testing.T) { function parseExtensions (line 756) | func parseExtensions(t *testing.T, greeting string) map[string]string { function testAuthHandler (line 795) | func testAuthHandler(_ net.Addr, _ string, username []byte, _ []byte, _ ... function TestMakeEHLOResponse (line 800) | func TestMakeEHLOResponse(t *testing.T) { function TestCmd8BITMIME (line 908) | func TestCmd8BITMIME(t *testing.T) { function TestAuthMechs (line 1069) | func TestAuthMechs(t *testing.T) { function TestCmdAUTH (line 1123) | func TestCmdAUTH(t *testing.T) { function TestCmdAUTHOptional (line 1135) | func TestCmdAUTHOptional(t *testing.T) { function TestCmdAUTHRequired (line 1176) | func TestCmdAUTHRequired(t *testing.T) { function TestCmdAUTHLOGIN (line 1225) | func TestCmdAUTHLOGIN(t *testing.T) { function TestCmdAUTHLOGINFast (line 1282) | func TestCmdAUTHLOGINFast(t *testing.T) { function TestCmdAUTHPLAIN (line 1334) | func TestCmdAUTHPLAIN(t *testing.T) { function TestCmdAUTHPLAINEmpty (line 1393) | func TestCmdAUTHPLAINEmpty(t *testing.T) { function TestCmdAUTHPLAINFast (line 1452) | func TestCmdAUTHPLAINFast(t *testing.T) { function TestCmdAUTHPLAINFastAndEmpty (line 1504) | func TestCmdAUTHPLAINFastAndEmpty(t *testing.T) { function makeCRAMMD5Response (line 1557) | func makeCRAMMD5Response(challenge string, username string, secret strin... function TestCmdAUTHCRAMMD5 (line 1569) | func TestCmdAUTHCRAMMD5(t *testing.T) { function TestCmdAUTHCRAMMD5WithTLS (line 1626) | func TestCmdAUTHCRAMMD5WithTLS(t *testing.T) { function BenchmarkReceive (line 1693) | func BenchmarkReceive(b *testing.B) { function TestCmdShutdown (line 1721) | func TestCmdShutdown(t *testing.T) { type mockDropRejectedHandler (line 1764) | type mockDropRejectedHandler struct method handler (line 1773) | func (m *mockDropRejectedHandler) handler(remoteAddr net.Addr, from st... method msgIDHandler (line 1780) | func (m *mockDropRejectedHandler) msgIDHandler(remoteAddr net.Addr, fr... function TestIgnoreRejectedRecipients (line 1788) | func TestIgnoreRejectedRecipients(t *testing.T) { FILE: internal/snakeoil/snakeoil.go type KeyPair (line 27) | type KeyPair struct function Certificates (line 34) | func Certificates() map[string]KeyPair { function Public (line 39) | func Public(str string) string { function Private (line 65) | func Private(str string) string { function parse (line 93) | func parse(str string) ([]string, string, error) { function generate (line 118) | func generate(domains []string) (string, string, error) { FILE: internal/spamassassin/postmark/postmark.go type Response (line 16) | type Response struct type Rule (line 25) | type Rule struct function Check (line 33) | func Check(email []byte, timeout int) (Response, error) { function nameFromReport (line 88) | func nameFromReport(score, description, report string) string { FILE: internal/spamassassin/spamassassin.go type Result (line 29) | type Result struct type Rule (line 41) | type Rule struct function SetService (line 51) | func SetService(s string) { function Ping (line 61) | func Ping() error { function Check (line 77) | func Check(msg []byte) (Result, error) { function round1dm (line 138) | func round1dm(n float64) float64 { FILE: internal/spamassassin/spamc/spamc.go constant ProtoVersion (line 21) | ProtoVersion = "1.5" type connection (line 32) | type connection interface type Client (line 38) | type Client struct method dial (line 72) | func (c *Client) dial() (connection, error) { method Report (line 92) | func (c *Client) Report(email []byte) (Result, error) { method report (line 101) | func (c *Client) report(email []byte) ([]string, error) { method parseOutput (line 162) | func (c *Client) parseOutput(output []string) Result { method Ping (line 220) | func (c *Client) Ping() error { function NewTCP (line 45) | func NewTCP(addr string, timeout int) *Client { function NewUnix (line 50) | func NewUnix(addr string) *Client { type Rule (line 55) | type Rule struct type Result (line 62) | type Result struct FILE: internal/stats/stats.go type versionCache (line 17) | type versionCache struct type AppInformation (line 44) | type AppInformation struct function getBackoff (line 79) | func getBackoff(errCount int) time.Duration { function Load (line 85) | func Load(detectLatestVersion bool) AppInformation { function Track (line 142) | func Track() { function LogSMTPAccepted (line 147) | func LogSMTPAccepted(size int) { function LogSMTPRejected (line 155) | func LogSMTPRejected() { function LogSMTPIgnored (line 162) | func LogSMTPIgnored() { FILE: internal/storage/cron.go function dbCron (line 18) | func dbCron() { function pruneMessages (line 51) | func pruneMessages() { function vacuumDb (line 181) | func vacuumDb() { FILE: internal/storage/database.go function InitDB (line 41) | func InitDB() error { function tenant (line 166) | func tenant(table string) string { function Close (line 171) | func Close() { function Ping (line 189) | func Ping() error { function StatsGet (line 194) | func StatsGet() MailboxStats { function CountTotal (line 211) | func CountTotal() uint64 { function CountUnread (line 222) | func CountUnread() uint64 { function CountRead (line 234) | func CountRead() uint64 { function DbSize (line 246) | func DbSize() uint64 { function MessageIDExists (line 259) | func MessageIDExists(id string) bool { FILE: internal/storage/functions_test.go function setup (line 19) | func setup(tenantID string) { function assertEqual (line 52) | func assertEqual(t *testing.T, a any, b any, message string) { function assertEqualStats (line 60) | func assertEqualStats(t *testing.T, total int, unread int) { FILE: internal/storage/messages.go function Store (line 33) | func Store(body *[]byte, username *string) (string, error) { function List (line 215) | func List(start int, beforeTS int64, limit int) ([]MessageSummary, error) { function GetMessage (line 296) | func GetMessage(id string) (*Message, error) { function GetMessageRaw (line 419) | func GetMessageRaw(id string) ([]byte, error) { function GetAttachmentPart (line 461) | func GetAttachmentPart(id, partID string) (*enmime.Part, error) { function AttachmentSummary (line 500) | func AttachmentSummary(a *enmime.Part) Attachment { function LatestID (line 526) | func LatestID(r *http.Request) (string, error) { function MarkRead (line 550) | func MarkRead(ids []string) error { function MarkAllRead (line 575) | func MarkAllRead() error { function MarkAllUnread (line 600) | func MarkAllUnread() error { function MarkUnread (line 625) | func MarkUnread(ids []string) error { function DeleteMessages (line 652) | func DeleteMessages(ids []string) error { function DeleteAllMessages (line 750) | func DeleteAllMessages() error { function GetMetadata (line 804) | func GetMetadata(id string) (Metadata, error) { FILE: internal/storage/messages_test.go function TestTextEmailInserts (line 11) | func TestTextEmailInserts(t *testing.T) { function TestMimeEmailInserts (line 43) | func TestMimeEmailInserts(t *testing.T) { function TestRetrieveMimeEmail (line 82) | func TestRetrieveMimeEmail(t *testing.T) { function TestMessageSummary (line 143) | func TestMessageSummary(t *testing.T) { function BenchmarkImportText (line 184) | func BenchmarkImportText(b *testing.B) { function BenchmarkImportMime (line 196) | func BenchmarkImportMime(b *testing.B) { function TestInlineImageContentIdHandling (line 209) | func TestInlineImageContentIdHandling(t *testing.T) { function TestRegularAttachmentHandling (line 239) | func TestRegularAttachmentHandling(t *testing.T) { function TestMixedAttachmentHandling (line 273) | func TestMixedAttachmentHandling(t *testing.T) { FILE: internal/storage/notifications.go function BroadcastMailboxStats (line 16) | func BroadcastMailboxStats() { FILE: internal/storage/reindex.go function ReindexAll (line 20) | func ReindexAll() { function chunkBy (line 139) | func chunkBy[T any](items []T, chunkSize int) (chunks [][]T) { FILE: internal/storage/schemas.go function dbApplySchemas (line 20) | func dbApplySchemas() error { function dataMigrations (line 147) | func dataMigrations() { FILE: internal/storage/schemas/1.0.0.sql type tenant (line 2) | CREATE TABLE IF NOT EXISTS {{ tenant "mailbox" }} ( type "idx_id" (line 11) | CREATE UNIQUE INDEX IF NOT EXISTS {{ tenant "idx_id" }} ON {{ tenant "ma... type "idx_read" (line 12) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_read" }} ON {{ tenant "mailbox... FILE: internal/storage/schemas/1.1.0.sql type "idx_tags" (line 3) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_tags" }} ON {{ tenant "mailbox... FILE: internal/storage/schemas/1.2.0.sql type tenant (line 2) | CREATE TABLE IF NOT EXISTS {{ tenant "mailboxtmp" }} ( type "idx_id" (line 29) | CREATE UNIQUE INDEX IF NOT EXISTS {{ tenant "idx_id" }} ON {{ tenant "ma... type "idx_message_id" (line 30) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_message_id" }} ON {{ tenant "m... type "idx_subject" (line 31) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_subject" }} ON {{ tenant "mail... type "idx_size" (line 32) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_size" }} ON {{ tenant "mailbox... type "idx_inline" (line 33) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_inline" }} ON {{ tenant "mailb... type "idx_attachments" (line 34) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_attachments" }} ON {{ tenant "... type "idx_read" (line 35) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_read" }} ON {{ tenant "mailbox... type "idx_tags" (line 36) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_tags" }} ON {{ tenant "mailbox... FILE: internal/storage/schemas/1.21.8.sql type tenant (line 9) | CREATE TABLE IF NOT EXISTS {{ tenant "message_tags" }} ( type "idx_message_tags_tagid" (line 16) | CREATE INDEX IF NOT EXISTS {{ tenant "idx_message_tags_tagid" }} ON {{ t... FILE: internal/storage/schemas/1.4.0.sql type tenant (line 2) | CREATE TABLE IF NOT EXISTS {{ tenant "tags" }} ( FILE: internal/storage/schemas/1.5.0.sql type tenant (line 2) | CREATE TABLE IF NOT EXISTS {{ tenant "settings" }} ( FILE: internal/storage/search.go function Search (line 24) | func Search(search, timezone string, start int, beforeTS int64, limit in... function SearchUnreadCount (line 102) | func SearchUnreadCount(search, timezone string, beforeTS int64) (int64, ... function DeleteSearch (line 137) | func DeleteSearch(search, timezone string) error { function SetSearchReadStatus (line 258) | func SetSearchReadStatus(search, timezone string, read bool) error { function searchQueryBuilder (line 299) | func searchQueryBuilder(searchString, timezone string) *sqlf.Stmt { function sizeToBytes (line 519) | func sizeToBytes(v string) uint64 { FILE: internal/storage/search_test.go function TestSearch (line 13) | func TestSearch(t *testing.T) { function TestSearchDelete100 (line 107) | func TestSearchDelete100(t *testing.T) { function TestSearchDelete1100 (line 155) | func TestSearchDelete1100(t *testing.T) { function TestEscPercentChar (line 189) | func TestEscPercentChar(t *testing.T) { function TestSizeToBytes (line 205) | func TestSizeToBytes(t *testing.T) { FILE: internal/storage/settings.go function SettingGet (line 12) | func SettingGet(k string) string { function SettingPut (line 28) | func SettingPut(k, v string) error { function getDeletedSize (line 38) | func getDeletedSize() uint64 { function totalMessagesSize (line 54) | func totalMessagesSize() uint64 { function addDeletedSize (line 68) | func addDeletedSize(v uint64) { FILE: internal/storage/structs.go type Message (line 11) | type Message struct type Attachment (line 54) | type Attachment struct type MessageSummary (line 79) | type MessageSummary struct type MailboxStats (line 113) | type MailboxStats struct type Metadata (line 120) | type Metadata struct type ListUnsubscribe (line 131) | type ListUnsubscribe struct FILE: internal/storage/tagfilters.go type TagFilter (line 15) | type TagFilter struct function LoadTagFilters (line 27) | func LoadTagFilters() { function tagFilterMatches (line 60) | func tagFilterMatches(id string) []string { FILE: internal/storage/tags.go function SetMessageTags (line 26) | func SetMessageTags(id string, tags []string) ([]string, error) { function addMessageTag (line 75) | func addMessageTag(id, name string) (string, error) { function deleteMessageTag (line 130) | func deleteMessageTag(id, name string) error { function GetAllTags (line 142) | func GetAllTags() []string { function GetAllTagsCount (line 160) | func GetAllTagsCount() map[string]int64 { function RenameTag (line 182) | func RenameTag(from, to string) error { function DeleteTag (line 223) | func DeleteTag(tag string) error { function pruneUnusedTags (line 255) | func pruneUnusedTags() error { function findTagsInRawMessage (line 298) | func findTagsInRawMessage(message *[]byte) []string { method tagsFromPlusAddresses (line 315) | func (d Metadata) tagsFromPlusAddresses() []string { function getMessageTags (line 345) | func getMessageTags(id string) []string { function sortedUniqueTags (line 366) | func sortedUniqueTags(s []string) []string { FILE: internal/storage/tags_test.go function TestTags (line 14) | func TestTags(t *testing.T) { function TestUsernameAutoTagging (line 147) | func TestUsernameAutoTagging(t *testing.T) { function deleteAllMessageTags (line 188) | func deleteAllMessageTags(id string) error { FILE: internal/storage/utils.go function AddTempFile (line 24) | func AddTempFile(s string) { function deleteTempFiles (line 29) | func deleteTempFiles() { function addressToSlice (line 38) | func addressToSlice(env *enmime.Envelope, key string) []*mail.Address { function createSearchText (line 49) | func createSearchText(env *enmime.Envelope) string { function cleanString (line 77) | func cleanString(str string) string { function logMessagesDeleted (line 90) | func logMessagesDeleted(n int) { function isFile (line 97) | func isFile(path string) bool { function escPercentChar (line 107) | func escPercentChar(s string) string { FILE: internal/tools/argsparser.go function ArgsParser (line 6) | func ArgsParser(s string) []string { FILE: internal/tools/fs.go function IsFile (line 9) | func IsFile(path string) bool { function IsDir (line 16) | func IsDir(path string) bool { FILE: internal/tools/headers.go function RemoveMessageHeaders (line 16) | func RemoveMessageHeaders(msg []byte, headers []string) ([]byte, error) { function SetMessageHeader (line 64) | func SetMessageHeader(msg []byte, header, value string) ([]byte, error) { function OverrideFromHeader (line 103) | func OverrideFromHeader(msg []byte, address string) ([]byte, error) { FILE: internal/tools/html.go function GetHTMLAttributeVal (line 11) | func GetHTMLAttributeVal(e *html.Node, key string) (string, error) { function SetHTMLAttributeVal (line 22) | func SetHTMLAttributeVal(n *html.Node, key, val string) { function WalkHTML (line 37) | func WalkHTML(n *html.Node, fn func(*html.Node)) { FILE: internal/tools/listunsubscribeparser.go function ListUnsubscribeParser (line 12) | func ListUnsubscribeParser(v string) ([]string, error) { FILE: internal/tools/net.go function IsInternalIP (line 15) | func IsInternalIP(ip net.IP) bool { function IsValidLinkURL (line 25) | func IsValidLinkURL(str string) bool { FILE: internal/tools/snippets.go function CreateSnippet (line 12) | func CreateSnippet(text, html string) string { function truncate (line 49) | func truncate(s string, n int) string { FILE: internal/tools/tags.go function CleanTag (line 24) | func CleanTag(s string) string { function SetTagCasing (line 40) | func SetTagCasing(s []string) []string { FILE: internal/tools/tools_test.go function TestArgsParser (line 8) | func TestArgsParser(t *testing.T) { function TestCleanTag (line 29) | func TestCleanTag(t *testing.T) { function TestSnippets (line 48) | func TestSnippets(t *testing.T) { function TestListUnsubscribeParser (line 74) | func TestListUnsubscribeParser(t *testing.T) { FILE: internal/tools/unixsocket.go function UnixSocket (line 15) | func UnixSocket(address string) (string, fs.FileMode, bool) { function PrepareSocket (line 36) | func PrepareSocket(address string) error { FILE: internal/tools/utils.go function Plural (line 10) | func Plural(total int, singular, plural string) string { function InArray (line 19) | func InArray(k string, arr []string) bool { function Normalize (line 30) | func Normalize(s string) string { function SafeUint64 (line 41) | func SafeUint64(i any) uint64 { FILE: main.go function main (line 13) | func main() { FILE: sendmail/cmd/cmd.go function init (line 44) | func init() { function Run (line 66) | func Run() { function HelpTemplate (line 189) | func HelpTemplate(args []string) string { function socketAddress (line 212) | func socketAddress(address string) (string, bool) { FILE: sendmail/cmd/smtp.go function Send (line 20) | func Send(addr string, from string, to []string, msg []byte) error { function sendMail (line 76) | func sendMail(addr string, a smtp.Auth, from string, to []string, msg []... function validateLine (line 148) | func validateLine(line string) error { FILE: sendmail/main.go function main (line 5) | func main() { FILE: server/apiv1/api.go function fourOFour (line 16) | func fourOFour(w http.ResponseWriter) { function httpError (line 25) | func httpError(w http.ResponseWriter, msg string) { function httpJSONError (line 34) | func httpJSONError(w http.ResponseWriter, msg string) { function getStartLimit (line 47) | func getStartLimit(req *http.Request) (start int, beforeTS int64, limit ... function GetOptions (line 76) | func GetOptions(w http.ResponseWriter, _ *http.Request) { FILE: server/apiv1/application.go function AppInfo (line 14) | func AppInfo(w http.ResponseWriter, _ *http.Request) { function WebUIConfig (line 37) | func WebUIConfig(w http.ResponseWriter, _ *http.Request) { FILE: server/apiv1/chaos.go function GetChaos (line 11) | func GetChaos(w http.ResponseWriter, _ *http.Request) { function SetChaos (line 42) | func SetChaos(w http.ResponseWriter, r *http.Request) { FILE: server/apiv1/message.go function GetMessage (line 16) | func GetMessage(w http.ResponseWriter, r *http.Request) { function GetHeaders (line 62) | func GetHeaders(w http.ResponseWriter, r *http.Request) { function DownloadAttachment (line 115) | func DownloadAttachment(w http.ResponseWriter, r *http.Request) { function DownloadRaw (line 167) | func DownloadRaw(w http.ResponseWriter, r *http.Request) { FILE: server/apiv1/messages.go type MessagesSummary (line 13) | type MessagesSummary struct function GetMessages (line 43) | func GetMessages(w http.ResponseWriter, r *http.Request) { function SetReadStatus (line 87) | func SetReadStatus(w http.ResponseWriter, r *http.Request) { function DeleteMessages (line 168) | func DeleteMessages(w http.ResponseWriter, r *http.Request) { function Search (line 209) | func Search(w http.ResponseWriter, r *http.Request) { function DeleteSearch (line 266) | func DeleteSearch(w http.ResponseWriter, r *http.Request) { FILE: server/apiv1/other.go function HTMLCheck (line 19) | func HTMLCheck(w http.ResponseWriter, r *http.Request) { function LinkCheck (line 84) | func LinkCheck(w http.ResponseWriter, r *http.Request) { function SpamAssassinCheck (line 142) | func SpamAssassinCheck(w http.ResponseWriter, r *http.Request) { FILE: server/apiv1/release.go function ReleaseMessage (line 21) | func ReleaseMessage(w http.ResponseWriter, r *http.Request) { FILE: server/apiv1/send.go function SendMessageHandler (line 21) | func SendMessageHandler(w http.ResponseWriter, r *http.Request) { method Send (line 74) | func (d sendMessageParams) Send(remoteAddr string, httpAuthUser *string)... FILE: server/apiv1/swaggerParams.go type setChaosParams (line 12) | type setChaosParams struct type attachmentParams (line 18) | type attachmentParams struct type downloadRawParams (line 33) | type downloadRawParams struct type getMessageParams (line 42) | type getMessageParams struct type getHeadersParams (line 51) | type getHeadersParams struct type getMessagesParams (line 60) | type getMessagesParams struct type setReadStatusParams (line 81) | type setReadStatusParams struct type deleteMessagesParams (line 114) | type deleteMessagesParams struct type searchParams (line 127) | type searchParams struct type deleteSearchParams (line 160) | type deleteSearchParams struct type htmlCheckParams (line 177) | type htmlCheckParams struct type linkCheckParams (line 187) | type linkCheckParams struct type releaseMessageParams (line 203) | type releaseMessageParams struct type sendMessageParams (line 222) | type sendMessageParams struct type setTagsParams (line 320) | type setTagsParams struct type renameTagParams (line 338) | type renameTagParams struct type deleteTagParams (line 357) | type deleteTagParams struct type getMessageHTMLParams (line 366) | type getMessageHTMLParams struct type getMessageTextParams (line 386) | type getMessageTextParams struct type spamAssassinCheckParams (line 395) | type spamAssassinCheckParams struct type thumbnailParams (line 404) | type thumbnailParams struct FILE: server/apiv1/swaggerResponses.go type binaryResponse (line 16) | type binaryResponse type textResponse (line 20) | type textResponse type htmlResponse (line 24) | type htmlResponse type errorResponse (line 29) | type errorResponse type notFoundResponse (line 33) | type notFoundResponse type okResponse (line 37) | type okResponse type arrayResponse (line 41) | type arrayResponse type jsonErrorResponse (line 45) | type jsonErrorResponse struct type webUIConfigurationResponse (line 58) | type webUIConfigurationResponse struct type appInfoResponse (line 103) | type appInfoResponse struct type chaosResponse (line 112) | type chaosResponse struct type messageHeadersResponse (line 121) | type messageHeadersResponse type messagesSummaryResponse (line 125) | type messagesSummaryResponse struct type sendMessageResponse (line 133) | type sendMessageResponse struct FILE: server/apiv1/tags.go function GetAllTags (line 13) | func GetAllTags(w http.ResponseWriter, _ *http.Request) { function SetMessageTags (line 36) | func SetMessageTags(w http.ResponseWriter, r *http.Request) { function RenameTag (line 84) | func RenameTag(w http.ResponseWriter, r *http.Request) { function DeleteTag (line 128) | func DeleteTag(w http.ResponseWriter, r *http.Request) { FILE: server/apiv1/testing.go function GetMessageHTML (line 20) | func GetMessageHTML(w http.ResponseWriter, r *http.Request) { function GetMessageText (line 107) | func GetMessageText(w http.ResponseWriter, r *http.Request) { function linkInlineImages (line 152) | func linkInlineImages(msg *storage.Message) string { FILE: server/apiv1/thumbnails.go function Thumbnail (line 26) | func Thumbnail(w http.ResponseWriter, r *http.Request) { function blankImage (line 105) | func blankImage(a *enmime.Part, w http.ResponseWriter) { FILE: server/cors.go function asciiFoldString (line 22) | func asciiFoldString(s string) string { function toLowerASCIIFold (line 32) | func toLowerASCIIFold(c byte) byte { function corsOriginAccessControl (line 40) | func corsOriginAccessControl(r *http.Request) bool { function setCORSOrigins (line 74) | func setCORSOrigins() { function extractOrigins (line 98) | func extractOrigins(str string) []string { FILE: server/cors_test.go function TestExtractOrigins (line 8) | func TestExtractOrigins(t *testing.T) { function TestCorsOriginAccessControl (line 69) | func TestCorsOriginAccessControl(t *testing.T) { FILE: server/embed.go function embedController (line 22) | func embedController(w http.ResponseWriter, r *http.Request) { function contentType (line 54) | func contentType(p string) string { FILE: server/handlers/k8healthz.go function HealthzHandler (line 6) | func HealthzHandler(w http.ResponseWriter, _ *http.Request) { FILE: server/handlers/k8sready.go function ReadyzHandler (line 11) | func ReadyzHandler(isReady *atomic.Value) http.HandlerFunc { FILE: server/handlers/messages.go function RedirectToLatestMessage (line 13) | func RedirectToLatestMessage(w http.ResponseWriter, r *http.Request) { FILE: server/handlers/proxy.go constant maxProxyBodySize (line 29) | maxProxyBodySize = 50 * 1024 * 1024 type MessageAssets (line 43) | type MessageAssets struct function init (line 51) | func init() { function ProxyHandler (line 71) | func ProxyHandler(w http.ResponseWriter, r *http.Request) { function getAssets (line 244) | func getAssets(id string) ([]string, error) { function absoluteURL (line 318) | func absoluteURL(link, baseURL string) (string, error) { function httpError (line 352) | func httpError(w http.ResponseWriter, msg string) { function supportedProxyContentType (line 362) | func supportedProxyContentType(ct string) bool { function safeDialContext (line 393) | func safeDialContext(dialer *net.Dialer) func(ctx context.Context, netwo... FILE: server/server.go type contextKey (line 43) | type contextKey constant skipUIAuthKey (line 45) | skipUIAuthKey contextKey = iota function Listen (line 48) | func Listen() { function apiRoutes (line 168) | func apiRoutes() *mux.Router { function basicAuthResponse (line 218) | func basicAuthResponse(w http.ResponseWriter) { function sendAPIAuthMiddleware (line 228) | func sendAPIAuthMiddleware(fn http.HandlerFunc) http.HandlerFunc { type gzipResponseWriter (line 262) | type gzipResponseWriter struct method Write (line 267) | func (w gzipResponseWriter) Write(b []byte) (int, error) { function middleWareFunc (line 273) | func middleWareFunc(fn http.HandlerFunc) http.HandlerFunc { function addSlashToWebroot (line 344) | func addSlashToWebroot(w http.ResponseWriter, r *http.Request) { function apiWebsocket (line 350) | func apiWebsocket(w http.ResponseWriter, r *http.Request) { function swaggerBasePath (line 356) | func swaggerBasePath(w http.ResponseWriter, _ *http.Request) { function index (line 374) | func index(w http.ResponseWriter, r *http.Request) { FILE: server/server_test.go function TestAPIv1Messages (line 43) | func TestAPIv1Messages(t *testing.T) { function TestAPIv1ToggleReadStatus (line 104) | func TestAPIv1ToggleReadStatus(t *testing.T) { function TestAPIv1Search (line 188) | func TestAPIv1Search(t *testing.T) { function TestAPIv1Send (line 219) | func TestAPIv1Send(t *testing.T) { function TestSendAPIAuthMiddleware (line 331) | func TestSendAPIAuthMiddleware(t *testing.T) { function setup (line 495) | func setup() { function assertStatsEqual (line 509) | func assertStatsEqual(t *testing.T, uri string, unread, total int) { function assertSearchEqual (line 527) | func assertSearchEqual(t *testing.T, uri, query string, count int) { function insertEmailData (line 547) | func insertEmailData(t *testing.T) { function fetchMessage (line 583) | func fetchMessage(url string) (storage.Message, error) { function fetchMessages (line 598) | func fetchMessages(url string) (apiv1.MessagesSummary, error) { function clientGet (line 613) | func clientGet(url string) ([]byte, error) { function clientDelete (line 629) | func clientDelete(url, body string) ([]byte, error) { function clientPut (line 654) | func clientPut(url, body string) ([]byte, error) { function clientPost (line 679) | func clientPost(url, body string) ([]byte, error) { function clientPostWithAuth (line 704) | func clientPostWithAuth(url, body, username, password string) ([]byte, e... function clientGetWithAuth (line 731) | func clientGetWithAuth(url, username, password string) ([]byte, error) { function assertEqual (line 757) | func assertEqual(t *testing.T, a any, b any, message string) { FILE: server/ui-src/mixins/CommonMixins.js class BootstrapElement (line 9) | class BootstrapElement { method hide (line 10) | hide() {} method show (line 11) | show() {} method data (line 19) | data() { method copyToClipboardSupported (line 28) | copyToClipboardSupported() { method resolve (line 34) | resolve(u) { method searchURI (line 38) | searchURI(s) { method getFileSize (line 42) | getFileSize(bytes) { method formatNumber (line 50) | formatNumber(nr) { method messageDate (line 54) | messageDate(d) { method secondsToRelative (line 58) | secondsToRelative(d) { method tagEncodeURI (line 62) | tagEncodeURI(tag) { method getSearch (line 70) | getSearch() { method getPaginationParams (line 84) | getPaginationParams() { method modal (line 99) | modal(id) { method hideNav (line 109) | hideNav() { method get (line 124) | get(url, values, callback, errorCallback, hideLoader) { method post (line 153) | post(url, data, callback) { method delete (line 174) | delete(url, data, callback) { method put (line 195) | put(url, data, callback) { method handleError (line 210) | handleError(error) { method allAttachments (line 229) | allAttachments(message) { method isImage (line 247) | isImage(a) { method attachmentIcon (line 251) | attachmentIcon(a) { method colorHash (line 293) | colorHash(s) { method copyToClipboard (line 303) | copyToClipboard(text) { FILE: server/ui-src/mixins/MessagesMixins.js method data (line 8) | data() { method "mailbox.refresh" (line 17) | "mailbox.refresh"(v) { method reloadMailbox (line 27) | reloadMailbox() { method loadMessages (line 32) | loadMessages() { FILE: server/webhook/webhook.go function Send (line 32) | func Send(msg any) { FILE: server/websockets/client.go constant writeWait (line 18) | writeWait = 10 * time.Second constant pongWait (line 21) | pongWait = 60 * time.Second constant pingPeriod (line 24) | pingPeriod = (pongWait * 9) / 10 type Client (line 45) | type Client struct method readPump (line 56) | func (c *Client) readPump() { method writePump (line 77) | func (c *Client) writePump() { function ServeWs (line 117) | func ServeWs(hub *Hub, w http.ResponseWriter, r *http.Request) { function basicAuthResponse (line 147) | func basicAuthResponse(w http.ResponseWriter) { FILE: server/websockets/hub.go type Hub (line 13) | type Hub struct method Run (line 44) | func (h *Hub) Run() { type WebsocketNotification (line 28) | type WebsocketNotification struct function NewHub (line 34) | func NewHub() *Hub { function Broadcast (line 72) | func Broadcast(t string, msg any) { function BroadCastClientError (line 95) | func BroadCastClientError(severity, errorType, ip, message string) {