--- /dev/null
+package main
+
+import (
+ "fmt"
+ "net"
+
+ "src.bluestatic.org/mailpopbox/smtp"
+)
+
+func runSMTPServer(config Config) <-chan error {
+ server := smtpServer{
+ config: config,
+ rc: make(chan error),
+ }
+ go server.run()
+ return server.rc
+}
+
+type smtpServer struct {
+ config Config
+ rc chan error
+}
+
+func (server *smtpServer) run() {
+ l, err := net.Listen("tcp", fmt.Sprintf(":%d", server.config.SMTPPort))
+ if err != nil {
+ server.rc <- err
+ return
+ }
+
+ for {
+ conn, err := l.Accept()
+ if err != nil {
+ server.rc <- err
+ return
+ }
+
+ go smtp.AcceptConnection(conn, server)
+ }
+}
+
+func (server *smtpServer) OnEHLO() error {
+ return nil
+}
+
+func (server *smtpServer) OnMessageDelivered() error {
+ return nil
+}