func runserver(t *testing.T, server *smtpd.Server) (addr string, closer func()) { ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { t.Fatalf("Listen failed: %v", err) } go func() { server.Serve(ln) }() done := make(chan bool) go func() { <-done ln.Close() }() return ln.Addr().String(), func() { done <- true } }