Going slightly off topic and ranting a bit...
I looked at postfix and qmail and they have the same problem that sendmail
(and qpopper actually) have and that is I'd have to patch them to get them
working, which means getting into the insides and risking breaking
something else. This is the age of the shared library and I'm firmly of the
opinion that every app should base this sort of thing (ie. authentication,
mailbox locating and any other procedures that might vary per site and
can't be reasonably handled by a config file) on shared libraries.
I should be able to compile my MTA with no inbuilt support for any
particular auth method or database support, in the knowledge that I can
compile a .so file, implementing one or more functions (which have a
standard interface) that will handle my way of doing things.
A good example of this is perdition,
http://www.us.vergenet.net/linux/perdition/ this is a POP and IMAP proxy.
When a request comes in to the perdition server, it figures out which POP
server the user's account lives on and then acts as a tunnel between the
user and the server, useful for distributing mail across multiple servers.
The server doesn't have any inbuilt methods of figuring out where someone's
account is, the config file has a section like this
# map_library /usr/lib/perditiondb_gdbm.so
map_library /usr/lib/libperditiondb_posix_regex.so
# map_library /usr/lib/perditiondb_mysql.so
and when a request comes in, it calls the dbserver_get function in your
chosen library.
The great thing is that if you write your own library, you don't have to
keep your patches up to date as new versions of perdition are released, you
don't even have to recompile your code. PAM also works like this, will drop
in authentication modules, selected in a config file. It's the way things
should be but in the vast majority of cases, it's not the way things are :-(
What do the qpopper maintainers think of this?
My patch is based on replacing calls to getpwnam by calls to fake_getpwnam
which goes and gets the info from mysql but pretends it came from the
passwd file. What are the chances of including a new authentication option
called "shared", which if selected loads a .so file and passes all
/etc/passwd querying to a routine in there? It'd save lots of people
keeping their patches up to date and you could gradually migrate all the
auth code into .so files, leaving all the shared code (eg logging a failed
login) in one place instead of many places.
Fergal
At 18:06 07/09/00, Jack Sasportas wrote:
>I beleive your best option is postfix, I have been researching and postfix is
>FAST, and WELL documented, so it's much better then sendmail, then you can
>make
>it work with whatever popper you want. I don't know enought to help, I
>actually
>wanted to hire someone to do it for me because I don't have the time to get
>involved in it....