go get github.com/batpool/golang-smtp-server
package main
import (
"crypto/tls"
"errors"
"fmt"
"log"
"github.com/batpool/golang-smtp-server"
)
func main() {
handler := func(c *smtpsrv.Context) error {
username, password, _ := c.User()
if username != "username" || password != "satya" {
return errors.New("invalid username or password")
}
return nil
}
cert, err := tls.LoadX509KeyPair("server.crt", "server.key")
if err != nil {
log.Println(err)
return
}
config := &tls.Config{
Certificates: []tls.Certificate{cert},
}
cfg := smtpsrv.ServerConfig{
BannerDomain: "mail.batpool.com",
ListenAddr: ":1587",
MaxMessageBytes: 5 * 1024,
Handler: handler,
TLSConfig: config,
}
fmt.Println(smtpsrv.ListenAndServeTLS(&cfg))
}