SYMBOL INDEX (87 symbols across 12 files) FILE: aliases.go type AliasMap (line 11) | type AliasMap function AliasLoadFile (line 17) | func AliasLoadFile(file string) (AliasMap, error) { function LoadAliases (line 59) | func LoadAliases(filename string) error { FILE: aliases_test.go function init (line 11) | func init() { function TestAliasLoadFile (line 16) | func TestAliasLoadFile(t *testing.T) { function TestLoadAliases (line 111) | func TestLoadAliases(t *testing.T) { function TestLoadAliases_EmptyFile (line 144) | func TestLoadAliases_EmptyFile(t *testing.T) { function TestLoadAliases_UpdatesExistingAliases (line 165) | func TestLoadAliases_UpdatesExistingAliases(t *testing.T) { function TestAliasLoadFile_MultipleSpaces (line 218) | func TestAliasLoadFile_MultipleSpaces(t *testing.T) { function TestAliasLoadFile_TabSeparated (line 244) | func TestAliasLoadFile_TabSeparated(t *testing.T) { function TestAliasLoadFile_DuplicateKeys (line 267) | func TestAliasLoadFile_DuplicateKeys(t *testing.T) { function TestAliasLoadFile_OnlyWhitespace (line 294) | func TestAliasLoadFile_OnlyWhitespace(t *testing.T) { FILE: auth.go type AuthUser (line 16) | type AuthUser struct function AuthLoadFile (line 22) | func AuthLoadFile(file string) error { function AuthReady (line 33) | func AuthReady() bool { function splitstr (line 39) | func splitstr(s string, sep rune) []string { function parseLine (line 43) | func parseLine(line string) *AuthUser { function AuthFetch (line 63) | func AuthFetch(username string) (*AuthUser, error) { function AuthCheckPassword (line 91) | func AuthCheckPassword(username string, secret string) error { FILE: auth_test.go function stringsEqual (line 7) | func stringsEqual(a, b []string) bool { function TestParseLine (line 19) | func TestParseLine(t *testing.T) { FILE: config.go function localAuthRequired (line 68) | func localAuthRequired() bool { function remoteCertAndKeyReadable (line 72) | func remoteCertAndKeyReadable() bool { function setupAliases (line 102) | func setupAliases() { function setupAllowedNetworks (line 115) | func setupAllowedNetworks() { function setupAllowedPatterns (line 138) | func setupAllowedPatterns() { function setupRemotes (line 162) | func setupRemotes() { type protoAddr (line 182) | type protoAddr struct function splitProto (line 187) | func splitProto(s string) protoAddr { function setupListeners (line 200) | func setupListeners() { function setupTimeouts (line 215) | func setupTimeouts() { function ConfigLoad (line 258) | func ConfigLoad() { function IniParser (line 313) | func IniParser(r io.Reader, set func(name, value string) error) error { FILE: config_test.go function TestSplitProto (line 7) | func TestSplitProto(t *testing.T) { FILE: logger.go function setupLogger (line 19) | func setupLogger() { function closeLogger (line 81) | func closeLogger() { FILE: main.go function connectionChecker (line 20) | func connectionChecker(peer smtpd.Peer) error { function addrAllowed (line 41) | func addrAllowed(addr string, allowedAddrs []string) bool { function senderChecker (line 84) | func senderChecker(peer smtpd.Peer, addr string) error { function recipientChecker (line 126) | func recipientChecker(peer smtpd.Peer, addr string) error { function authChecker (line 144) | func authChecker(peer smtpd.Peer, username string, password string) error { function mailHandler (line 157) | func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error { function generateUUID (line 269) | func generateUUID() string { function getTLSConfig (line 283) | func getTLSConfig() *tls.Config { function watchAliasFile (line 303) | func watchAliasFile() { function main (line 368) | func main() { function handleSignals (line 484) | func handleSignals() { FILE: main_test.go function TestAddrAllowedNoDomain (line 7) | func TestAddrAllowedNoDomain(t *testing.T) { function TestAddrAllowedSingle (line 14) | func TestAddrAllowedSingle(t *testing.T) { function TestAddrAllowedDifferentCase (line 25) | func TestAddrAllowedDifferentCase(t *testing.T) { function TestAddrAllowedLocal (line 40) | func TestAddrAllowedLocal(t *testing.T) { function TestAddrAllowedMulti (line 51) | func TestAddrAllowedMulti(t *testing.T) { function TestAddrAllowedSingleDomain (line 64) | func TestAddrAllowedSingleDomain(t *testing.T) { function TestAddrAllowedMixed (line 74) | func TestAddrAllowedMixed(t *testing.T) { FILE: remotes.go type Remote (line 9) | type Remote struct function ParseRemote (line 30) | func ParseRemote(remoteURL string) (*Remote, error) { FILE: remotes_test.go function AssertRemoteUrlEquals (line 10) | func AssertRemoteUrlEquals(t *testing.T, expected *Remote, remotUrl stri... function TestValidRemoteUrls (line 28) | func TestValidRemoteUrls(t *testing.T) { function TestMissingScheme (line 110) | func TestMissingScheme(t *testing.T) { FILE: smtp.go type Client (line 33) | type Client struct method Close (line 78) | func (c *Client) Close() error { method hello (line 83) | func (c *Client) hello() error { method Hello (line 99) | func (c *Client) Hello(localName string) error { method cmd (line 111) | func (c *Client) cmd(expectCode int, format string, args ...any) (int,... method helo (line 124) | func (c *Client) helo() error { method ehlo (line 132) | func (c *Client) ehlo() error { method StartTLS (line 155) | func (c *Client) StartTLS(config *tls.Config) error { method TLSConnectionState (line 172) | func (c *Client) TLSConnectionState() (state tls.ConnectionState, ok b... method Verify (line 184) | func (c *Client) Verify(addr string) error { method Auth (line 198) | func (c *Client) Auth(a smtp.Auth) error { method Mail (line 246) | func (c *Client) Mail(from string) error { method Rcpt (line 269) | func (c *Client) Rcpt(to string) error { method Data (line 292) | func (c *Client) Data() (io.WriteCloser, error) { method Extension (line 430) | func (c *Client) Extension(ext string) (bool, string) { method Reset (line 444) | func (c *Client) Reset() error { method Noop (line 454) | func (c *Client) Noop() error { method Quit (line 463) | func (c *Client) Quit() error { function Dial (line 54) | func Dial(addr string) (*Client, error) { function NewClient (line 65) | func NewClient(conn net.Conn, host string) (*Client, error) { type dataCloser (line 277) | type dataCloser struct method Close (line 282) | func (d *dataCloser) Close() error { function SendMail (line 323) | func SendMail(r *Remote, from string, to []string, msg []byte) error { function validateLine (line 473) | func validateLine(line string) error { type loginAuth (line 481) | type loginAuth struct method Start (line 489) | func (a *loginAuth) Start(server *smtp.ServerInfo) (string, []byte, er... method Next (line 493) | func (a *loginAuth) Next(fromServer []byte, more bool) ([]byte, error) { function LoginAuth (line 485) | func LoginAuth(username, password string) smtp.Auth {