added IMAP, LetsEncrypt, update layout
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package imapserver
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
|
||||
goimapserver "github.com/emersion/go-imap/v2/imapserver"
|
||||
)
|
||||
|
||||
func newSessionFunc(backend *Backend) func(*goimapserver.Conn) (goimapserver.Session, *goimapserver.GreetingData, error) {
|
||||
return func(c *goimapserver.Conn) (goimapserver.Session, *goimapserver.GreetingData, error) {
|
||||
return backend.NewSession(), nil, nil
|
||||
}
|
||||
}
|
||||
|
||||
// NewPlainServer mirrors smtpserver.NewPlainServer: no TLS at all, so STARTTLS is
|
||||
// never offered. InsecureAuth is required here or LOGIN would always fail with
|
||||
// [PRIVACYREQUIRED] on this listener.
|
||||
func NewPlainServer(backend *Backend) *goimapserver.Server {
|
||||
return goimapserver.New(&goimapserver.Options{
|
||||
NewSession: newSessionFunc(backend),
|
||||
InsecureAuth: true,
|
||||
})
|
||||
}
|
||||
|
||||
// NewTLSServer mirrors smtpserver.NewTLSServer: implicit TLS, the whole connection is
|
||||
// encrypted from the first byte. Call ListenAndServeTLS (not ListenAndServe) to run
|
||||
// it — TLSConfig here only takes effect for that method.
|
||||
func NewTLSServer(backend *Backend, tlsConfig *tls.Config) *goimapserver.Server {
|
||||
return goimapserver.New(&goimapserver.Options{
|
||||
NewSession: newSessionFunc(backend),
|
||||
TLSConfig: tlsConfig,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user