title: Good design for Transparent SMTP Proxy server in C#
body: <p>If you were to design a transparent SMTP proxy in C# (.net 4) to meet the following initial requirements </p>
  
  <ul>
  <li>Scales well</li>
  <li>Logs all traffic to a
  database</li>
  <li>Can be extended easily say for virus scanning attachments</li>
  </ul>
  
  <p>Considering these factors broadly speaking how would your design look?  Would you create Listener, Sender and logger concrete classes or something more abstract?  And would you use  callbacks, threads or processes and why?</p>