cat /dev/DiBona/brain: What About E-mail Security?
Ever used driftnet? I go to a lot of conferences, and one thing I find myself doing while speaking is checking how engaged the audience is by sniffing the 802.11b traffic in the room. Whether this is a measure of how absorbing I am or, to put it delicately, how self-absorbed the conference attendee is, is an open question. That said, it always is surprising to me how little encrypted traffic is flowing on the very open Internet.
Does anyone use Telnet anymore? I hope not. We have better tools now; SSH and SCP are the way most sane people hop around systems on which they might have accounts. In addition, the days of unreliable and patent-encumbered SSH are gone, and we now have the luxury of using OpenSSH for shelling around.
For Web browsing, no one in his or her right mind would transmit important information over an insecure link. Secure sites for bank, shopping and other applications are the norm, with poorly secured sites being exceptions.
One mode of communicating over the Internet, however, is done shockingly, overwhelmingly in the clear. I'm talking about e-mail. It doesn't have to be this way, though. With all the excitement about SPF and other mail authentication methods, it struck me that people haven't done even the base work to secure their communications--myself included. If one can eavesdrop on communications, one can spoof those communications. In my mind, authentication schemes are going to be of dubious value without an attendant amount of effort spent securing the line as well.
Hence this article. TLS is a great way to do the basics of securing your e-mail against this very basic kind of snooping. You can use the same certificates you use to secure your Web site. Many people find using unsigned certificates works okay too, although it offers no guarantees for security or reliability regarding the exchange of mail.
TLS is an acronym for Transport Layer Security, and it simply encrypts your mail server to mail server traffic with other TLS-enabled sites. I recently implemented this for a client site and thought it really was in my interest to implement it for my personal e-mail, as well. So I decided to implement it on DiBona.com.
I made a quick trip to FreeSSL.com to pick up a certificate. Thirty-nice dollars and an automated phone call later, I had it. I highly recommend FreeSSL. Clear instructions on how to create the certificate on any competently setup Linux box, straightforward processes and a smart phone system make for a great way to get a solid certificate without any worries. FreeSSL has terrific phone support as well, in the event you make a mistake or need a little bit more hand holding, as I did for a chained certificate some months ago.
I ran this article by Uriah Welcome and Marc Merlin. Marc reminded me that you don't have to get a signed certificate, as most mail systems are configured to not care so much about the chain of trust. If you think about it, when your chain of trust ends at network solutions, it's not so trustworthy, but let's not go there. Uriah wanted me to make sure that people don't forget to protect the certificate files properly, don't chmod 666 then and so on.
Setting up TLS with your mail server can be difficult, depending on your setup. An exim installation is too simple for words. Once you have generated the key, you simply need to add the following three lines to the top of you exim.conf file:
tls_certificate = /pathtocert/dibona.crt tls_privatekey = /pathtokey /dibona.key tls_advertise_hosts = *
Please note that I used the exim-exiscan rpm.
For Sendmail users, here is an oldish Linux Journal article on the topic; I haven't installed it yet for Sendmail, so I can't vouch. Same with this postfix install. I expect users reading this install have better links than these, so check the comments for more on those servers.
Note the 250 Starttls line. That means I'm ostensibly ready to trade encrypted e-mail with other hosts. Life isn't perfect yet--I need to implement SPF--but I feel much more secure in my e-mail.