static void Main(string[] args) { var client = new DnsClient(); var log = new Log(); var config = ServiceConfigurationReader.Read(); var container = new Container(new DependencyRegistry(config)); var smtpServerSessionConfiguration = new SmtpServerSessionConfiguration { TempDirectory = config.TempDirectory }; Func<ISession> smtpSessionFactory = () => new SmtpServerSession(new SmtpServerCommandHandler(container), log, smtpServerSessionConfiguration); var serverConfiguration = new ServerConfiguration() { Port = 25 }; var smtpServer = new Server(smtpSessionFactory, log, serverConfiguration); var smtpRunTask = smtpServer.RunAsync(); Func<ISession> pop3SessionFactory = () => new Pop3ServerSession(new Pop3ServerCommandHandler(container), log, new Pop3ServerSessionConfiguration()); var pop3ServerConfiguration = new ServerConfiguration() { Port = 110 }; var deliverer = new MessageDeliverer(container); var delivererTask = deliverer.RunAsync(); var pop3Server = new Server(pop3SessionFactory, log, pop3ServerConfiguration); var pop3RunTask = pop3Server.RunAsync(); log.LogApplicationInfo("Server running..."); Console.WriteLine("Press any key to exit"); Console.ReadLine(); log.LogApplicationInfo("Shutting down"); var smtpStopTask = smtpServer.StopAsync(); var pop3StopTask = pop3Server.StopAsync(); }