A basic SMTP server.
[mailpopbox.git] / smtp.go
1 package main
2
3 import (
4 "fmt"
5 "net"
6
7 "src.bluestatic.org/mailpopbox/smtp"
8 )
9
10 func runSMTPServer(config Config) <-chan error {
11 server := smtpServer{
12 config: config,
13 rc: make(chan error),
14 }
15 go server.run()
16 return server.rc
17 }
18
19 type smtpServer struct {
20 config Config
21 rc chan error
22 }
23
24 func (server *smtpServer) run() {
25 l, err := net.Listen("tcp", fmt.Sprintf(":%d", server.config.SMTPPort))
26 if err != nil {
27 server.rc <- err
28 return
29 }
30
31 for {
32 conn, err := l.Accept()
33 if err != nil {
34 server.rc <- err
35 return
36 }
37
38 go smtp.AcceptConnection(conn, server)
39 }
40 }
41
42 func (server *smtpServer) Name() string {
43 return server.config.Hostname
44 }
45
46 func (server *smtpServer) OnEHLO() error {
47 return nil
48 }
49
50 func (server *smtpServer) OnMessageDelivered() error {
51 return nil
52 }