On Wednesday, July 23, 2003, at 07:46 AM, Russell Nelson wrote:
I have no idea how to make this work with vpopmail. I don't use
vpopmail, nor do I recommend that anybody else use it. I've read the code
for vpopmail, and although it's written to industry standards, it's crap.
Total and unmitigated crap. Fixed-length buffers
everywhere, #ifdef every time you turn around, null-terminated strings
instead of counted strings, it's crap; crap, crap, crap. I understand
that not everybody can afford a custom-crafted solution from Crynwr
Software, but sometimes you only get what you pay for in the open
source world.

I can't really disagree with him. I've done a lot of work on the qmailadmin source recently, and I'm getting into the vpopmail source now.

It is poorly written code. There are opportunities for buffer overflows in many places. Code is duplicated where it should be replaced with functions. Some of the code is very inefficient. There are a lot of static, fixed-length buffers that could be replaced by dynamically-allocated buffers of the proper size. It uses global variables. It isn't well documented.

But, it works. It works surprisingly well and I think it's a great way to do virtual domains with qmail.

I see this as an opportunity for improvement. One of my goals of contributing to the vpopmail/qmailadmin projects is to clean the up. Make them more efficient and more secure. I'm hoping that by doing so, others will take an interest and be encouraged to contribute patches that fix large sections of code, instead of just adding ugly band-aids on already ugly code.

Tom Collins
http://sniffter.com/ - info on the Sniffter hand-held Network Tester

Reply via email to