TLS Certificates Modification

May 11, 2010 at 12:10 AM
Hello, I'm currently using your project as the base for another project I'm working on. At the moment, the most immediate fix I had to implement was the Network Password for our Certificate. I added a Setting SSLCertificatePassword, and the following in place of line# 104 in ServerBehavior.cs if (!String.IsNullOrEmpty(Settings.Default.SSLCertificatePassword)) return new X509Certificate(Settings.Default.SSLCertificatePath, Settings.Default.SSLCertificatePassword); else return new X509Certificate(Settings.Default.SSLCertificatePath); Great job on this project man. I'll let you know if there's anything interesting I add to the project that may benefit others, and hopefully it'll be incorporated for anyone that needs to accomplish the same goals as me.
Coordinator
May 11, 2010 at 10:31 AM

Hi KraGiE

Thanks for your suggestion. I will add this feature to the next release.

Rob

Coordinator
May 11, 2010 at 10:35 AM
This discussion has been copied to a work item. Click here to go to the work item and continue the discussion.
May 11, 2010 at 8:22 PM
no problem. I also came across something that may improve the user experience for people that use the application out of the box. One of the key pro's of this application is that it handles the STARTTLS header in a tidy and efficient manner. Another key benefit is that it won't restrict the connections to be Strictly TLS or Clear Text. It allows for the client to determine if TLS will be used or not (which is the correct way the SMTP listener should be). Where I'm going with this is that the UI screen doesn't show if the session was done via TLS, SSL, or Default. By adding additional columns in the session data grid, it might provide a more thorough view. Simple feature: Added a property in SessionViewModel.cs, and added a new databound column for the session datagrid to that new property as a Readonly Checkbox. public bool SecureConnection { get { return Session.SecureConnection; } }
Coordinator
May 11, 2010 at 8:47 PM
This discussion has been copied to a work item. Click here to go to the work item and continue the discussion.
Coordinator
May 11, 2010 at 8:56 PM

Hi KraGiE

Another great suggestion. Both have now been implemented.

Rob

May 19, 2010 at 7:09 AM

I've made some modifications to your tcpClient/Listener/socket implementation.  I'll post the specific changes once I'm sure they're fully stable and scalable.  One change I did make that made huge gains on the overall memory footprint was to adjust the Data property in Message.  It was byte[] Data { get; set; }.  Instead, I made a new property MemoryStream DataStream, and in the DataVerb.cs, instead of newing up a MemoryStream to copy to, I use the DataStream property of the message.  I altered the Data property to be byte[] Data { get { DataStream.ToArray(); } }.  

 

I also noticed that in the Start() of Connection, it could result in an infinite loop.  It's ideal to break out when the command !IsValid && IsEmpty.  In terms of process flow, it doesn't appear to cause any problems in the smtp call, but when I sent in 1000+ emails, my cores were running pretty hot.

else if (command.IsEmpty)
                    {
                    }