14 Jun 2010

Testing of the DNSBL

This is going to be an interesting experiment... I am going to publish an email address in this blog, it is the ONLY place where it will be published (for the time being anyway).

I want to test the new DNSBL functionality of the GoESMTP server. Hopefully the address below will get harvested and some unsolicited email will come my way and also get blocked by the DNSBL.

So here it is: contact@goinbox.net

It looks innocent enough...

14 Jun 2010

Committed revision 48 - Added support for DNSBL

Revision 48 is now in SVN. The two biggest changes are:

1) Better checking and logging when reading from the configuration file.

2) Support for DNSBL.

To use a DNSBL add a line like this to the goesmtp.cfg file (in the smtp section):

dnsbl=dnsbl.sorbs.net

OR

dnsbl=zen.spamhaus.org


When the mail server receives a connection from a remote server a DNS check is made by:

1. Taking the remote server's IP address—say, 192.168.42.23—and reversing the order of octets, yielding 23.42.168.192.

2. Appending the DNSBL's domain name: 23.42.168.192.dnsbl.sorbs.net

3. Looking up this name. If a match is found it means that the remote server is listed as a spam server and so the connection is dropped immediately and an entry added to the log file.

11 Jun 2010

Revision r42 out - Move to SQLite complete

The move the SQLite (away from MySQL) is complete. This new code has been committed to SVN: http://code.google.com/p/goesmtp/source/detail?r=42

The way to build GoESMTP has now changed:

1) The MySQL package is no longer needed.

2) The gosqlite.googlecode.com/hg/sqlite is now needed from http://code.google.com/p/gosqlite/

3) To build gosqlite.googlecode.com/hg/sqlite:

cd $GOROOT/src/pkg
mkdir gosqlite.googlecode.com/hg
hg clone http://gosqlite.googlecode.com/hg \
gosqlite.googlecode.com/hg
cd gosqlite.googlecode.com/hg/sqlite
make install

4) GoESMTP can then be built using the source code from http://code.google.com/p/goesmtp

5) All the table creation and configuration is now handled by the server and no additional configuration (as far as the DB is concerned) is needed.

6) If you want to empty your message store and start fresh with this build you should use the following command:

$ sudo ./goesmtp purge

7 Jun 2010

GoESMTP on freshmeat

GoESMTP now has a project page at freshmeat: http://freshmeat.net/projects/goesmtp

Freshmeat maintains the Web's largest index of Unix and cross-platform software, which are preferably released under an open source license.

5 Jun 2010

Moving away from MySQL to internal database

When I started developing GoESMTP, using MySQL was a quick path to getting DB services working without much headache (thanks to Phils great GoMySQL library)... However the time has come to move away from MySQL and start using a dedicated specialist internal DB.

The reasons for this are:

1) Installation and configuration of GoESMTP is unnecessarily complex with the additional steps to configure MySQL (create DB, create tables, add users etc).

2) There has always been the question of performance. Although I have never done any performance testing I am assuming that using a another server process to handle the DB is inherently slower than using an internal DB.

3) From time to time I am still getting "#2027 Malformed Packet" errors from the GoMySQL library and this is causing message loss. As they are rare it is hard to track them down. So I will use the time and energy, I would use in finding the problem, in writing my own internal DB.

The upshot of all this is that the next revision of GoESMTP will be a while off while I hack the entire system to use the new internal (oh, and I will write the internal DB as well!).

5 Jun 2010

r39 available in SVN; Server now thinks and acts as a system level service

Committed revision 39 which changes the way the server thinks and acts. Previously the server ran in any directory and used the current working directory as the message store.

The GoESMTP server has now grown up and thinks and acts as a system level service. Now the configuration file is /etc/goesmtp.cfg and /var/spool/goesmtp is used for the message store.

Logging has also been changed to log directly to log files in /var/log/goesmtp. If you want to see the logging on the terminal as well use "goesmtp -c".

Also the passwords/accounts file is now store at /var/spool/goesmtp/passwords.txt

As a background task I am looking at getting the right shell scripts together for starting GoESMTP at start-up etc. But these scripts are different for OS X, Linux and FreeBSD. Also the different Linux variants use different start-up systems... Any advice from anyone about this would be great...

3 Jun 2010

CRAM-MD5 Implemented

Revision 37 (http://code.google.com/p/goesmtp/source/detail?r=37) has code for CRAM-MD5 SMTP authentication.

This was implemented mainly in preparation for added smart-host support (allowing GoESMTP to act as a smart host and to let GoESMTP use smart-host for relaying emails).

The new smart-host functionality will negate the need for a node type of local. Previously I thought to have a shadow copy of the master node (which would be on the Internet) on a local server and hence the node type local. But know I favour keeping the master and slaves behind the firewall and using a smart-host (which in this case will also be a GoESMTP server in smart host mode).

1 Jun 2010

GoESMTP r35 out with initial support for multiple recipients and more

GoESMTP r35 is now available, changes include:

- Support for multiple recipients (something that was sorely missing)
- Better logging at the MIN level
- Create a non delivery notification when messages are rejected due to SPAM filtering (specifically for Yahoo and Google)

31 May 2010

GoMySQL Version 0.2.0-beta2 out; Mandatory update for running GoESMTP

GoMySQL Version 0.2.0-beta2 out which addresses some issues GoESMTP was having with the GoMySQL library.

This should be considered a mandatory update for running GoESMTP. You can get it from here: http://github.com/Philio/GoMySQL

31 May 2010

Revision 33 of GoESMTP available

While GoESMTP remains in the EXPERIMENTAL phase, releases of the software will simply be referred to by their SVN revision number... In this case r33: http://code.google.com/p/goesmtp/source/detail?r=33

Changed message store structure and fixed a bug when fetching a message (requested over POP3) from another node in the cluster.

Gary Sims's Space

Gary Sims is the lead developer of GoESMTP.