The Serverside .Net上有一篇介绍如何用.NET技术构建邮件服务器的文章，值得一读。记得自己原来写过的那个SMailer（C++ Wrapped Classes For Mail Sending），所以看到这篇文章就觉得很亲切，不少内容当时我都有所涉及，只是所用技术不同而已。
轻松驾驭Socket — 一个简单的.NET电子邮件服务器（Riding on Sockets - A Simple .NET Email Server）
Sometimes, it's necessary to remember the roots, the place where it all began. The World Wide Web and electronic mail have become very common to our life, and it's our duty to tell the story behind their creation to our children and grandchildren. More importantly, as the importance of a technology increases, so does its usage--and thus the need that we'll need to understand what's happening at the protocol level in order to debug and/or diagnose problems. To do that, we need to understand how to work with sockets at the most primitive level, and to speak and understand the SMTP and HTTP protocols "in the raw". Fortunately, Internet protocols aren't all that hard to understand. As I took a closer look at SMTP and HTTP for the first time, I was surprised how simple they are.
You might be a bit scared of such low-level exploration. Maybe you know the Z39.50 protocol, which often is used by libraries to offer an interface for searching their inventory of books and articles. This protocol is very tricky and almost completely incomprehensible. However, internet protocols are deliberately written to be human readable, making it relatively easy to know their basics. The .NET Framework is a very good friend to explore the mysteries of these socket based protocols. Going through an email server sample will address both sides: SMTP basics and .NET Framework programming.
The following email server will be able to handle multiple connections for receiving emails. In order to keep it simple, only a subset of SMTP commands will be implemented, but it’s easy to extend and finish the software.