Skip to content

Go library implementing client and server side of Dovecot authentication protocol 1.1

License

Notifications You must be signed in to change notification settings

foxcpp/go-dovecot-sasl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-dovecot-sasl

go.dev reference

Go library implementing Dovecot authentication protocol 1.1. The library is based on emersion/go-sasl.

Examples

Client

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!

Server

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)

License

MIT.

About

Go library implementing client and server side of Dovecot authentication protocol 1.1

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages