The SMTP code is complete. I am now working on blocking access from certain hosts. Last week I started to research APR. I'm very interested in the pools, tables and arrays it provides. My code tries to do minimal mallocing by doubling array sizes. Link lists require a malloc for every item. I still need to work on the server code so that it will dynamically allocate/dealloate children. I also want to support DSO's to allow modules to particpate in any part of the STMP transaction. I'll add that feature later.
Well, I have the pre-forking server all set. I haven't made up my mind if I'll make it a true daemon. There's something elegant about just printing to stderr for logging. I'll have to look into qmail's daemons tools further. I've also started implementing SMTP into the server. I've done helo, and mail. For mail I've pretty much followed the RFCs. I notice that sendmail is a little bit more flexible in what it will handle.
I'll have to get back to the server code though, as I don't don't grow or shrink according to demand yet.
Well, Stevens' latest edition of UNP is much different than the previous edition I read. Lots of IPV6 stuff. However, there are system calls that Redhat 6.2 doesn't have like getaddrinfo. So I grabbed my Comer/Stevens book. He doesn't actually have a code example for the preforking server, but his code seems to focus in IPV4 stuff. Looks like I'll have to mix and match stuff from both books to get what I want.
I've been looking into serval MTAs. None seem to have the
feauture of having the MDA as a shared object. All seem to
use IPC or fork the MDA. What I'm looking for is something
that loads a shared object and that shared object does the
local delivery. This way there is no forking or IPC
First I need to create a pre-forking server that listens on a socket. Time to pull out my Steven's book.
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!