Thursday, 01 July 2004, 23:11:40 EDT

I will start of this month with an über-geek post. If you have no interest in shell scripts or mail servers you should just quit reading now :)

Earlier today, my friend Jason sent me a message saying he needed an email account. Well, I just happen to run my own mail server so I decided to reconfigure it so that people other than me can use it. But, I don't want just anyone using it to spam the world so I needed to secure it as best I could. I settled on replacing my current installation of Exim with Exim-tls. This allowed me to set up an encrypted SMTP AUTH system; since I am not an Exim guru I found a couple web pages to help me out. The first was excellent for setting up the TLS portion and the second clearly explained how to get Exim to authenticate through PAM. So, if someone wants to send email remotely through my machine they have to have a local account and their client must send STARTTLS after sending HELO.

Email wouldn't complete without being able to retrieve it from the remote server though now would it? I did a quick apt-search and came up with ipopd-ssl to serve as a POP3 server. It was a really straight forward setup and allowed me to choose the ports I wanted it to listen to. Since I was trying to make the email system as secure as possible I opted to only listen on port 995 via SSL.

After setting everything up I sent an email through the system and monitored it with Ethereal. Everything checked out well. After the STARTTLS command was sent nothing was sent across the line in plain text as a normal email would have been. So, mission successful.

Completely unrelated to email, I had a need to capitalize a lot of filenames tonight and really didn't want to do it by hand as there is about eighty files. So, I went on a little hunt to figure out how to automate this process and learned another new utility. I discovered the `tr` utility; a simple little four line script and I had renamed all the files I needed to rename. The script? Well, "for f in *; do; mv $f `echo $f | tr a-z A-Z`; done". Not too difficult and quite handy. You can do quite a bit more complex tasks with it but I will let you do that.