Go library implementing Dovecot authentication protocol 1.1. The library is based on emersion/go-sasl.
- Specification: https://wiki.dovecot.org/Design/AuthProtocol
s, err := net.Dial("unix", "/var/lib/dovecot/sasl.sock") if err != nil { // Handle error. } cl := dovecotsasl.NewClient(s) err := cl.Do("SMTP", sasl.NewPlainClient("", "foxcpp", "1234"), dovecotsasl.RemoteIP(net.IPv4(1,2,3,4)), dovecotsasl.Secured, ) if err != nil { // Nope! } // Authenticated!
l, err := net.Listen("unix", "/var/lib/maddy/sasl.sock") if err != nil { // Handle error. } var authenticator sasl.PlainAuthenticator = func(_, user, pass string) error { if user == "foxcpp" && pass == "1234" { return nil } return errors.New("nope!") } s := NewServer() s.AddMechanism("PLAIN", dovecotsasl.Mechanism{}, func(*dovecotsasl.AuthReq) sasl.Server { return sasl.NewPlainServer(authenticator) }) go s.Serve(l)
MIT.