I spend about 2 or 3 hours last night hacking the James email server. Why was I doing this? Because I want to send and receive email of course. But I also want to be able to programmatically manipulate how the mail is processed - in Java. James seems to be about the only real option for this, so that is what I am using.
I have been using James for some time on my home machine to receive emails. Here is a posting on that:
sanfrancisco.tribe.net/thread...7a46f1c
Sending mail has always proven to be a bit harder for me though, unless I turn on authentication. I don't want to have to turn on authentication though, I just want to be able to send email that originates from the machine the server is running on - a feature that James should support out of the box. But alas, on the Mac it does not.
So I went into the James code to figure out why it doesn't work on a Mac, and by the end of the night it was fixed. Here is a play by play of what happened:
daflink.net/cgi-bin/trac.../JamesHacking
If you don't wanna read all that, the punchline was that this line of code doesn't work:
return org.xbill.DNS.Address.getByName(allowIPLiteral(host));
And this line does:
return java.net.InetAddress.getByName(allowIPLiteral(host));
2 hours, and one code change later, voila!
I have been using James for some time on my home machine to receive emails. Here is a posting on that:
sanfrancisco.tribe.net/thread...7a46f1c
Sending mail has always proven to be a bit harder for me though, unless I turn on authentication. I don't want to have to turn on authentication though, I just want to be able to send email that originates from the machine the server is running on - a feature that James should support out of the box. But alas, on the Mac it does not.
So I went into the James code to figure out why it doesn't work on a Mac, and by the end of the night it was fixed. Here is a play by play of what happened:
daflink.net/cgi-bin/trac.../JamesHacking
If you don't wanna read all that, the punchline was that this line of code doesn't work:
return org.xbill.DNS.Address.getByName(allowIPLiteral(host));
And this line does:
return java.net.InetAddress.getByName(allowIPLiteral(host));
2 hours, and one code change later, voila!