dccm userdirs and "mailer"

Vernon Schryver vjs@calcite.rhyolite.com
Thu Jun 12 01:50:17 UTC 2003

> From: Spike Ilacqua <spike@indra.com>

> The -U option to dccm uses the form "userdirs/mailer/addr" for the users
> whitelist file and log directory.  I'm curious as to why "mailer" is
> used.  I'm thinking of changing it, but first I want to understand it.

To allow users with mailboxes on some other machine to have whitelists
on this machine, and without colliding with usernames on this machine.
I.e. to deal with aliases, mailertables, etc.

> I'm working on a version of the CGIs that doesn't require web accounts
> to be created in advance.  Instead you use some form of system
> authentication, mod_auth_sys, mod_auth_ldap, mod_auth_radius, etc, and
> the CGI automatically creates the appropriate directory.  That way if
> you are not trying to manage separate Web accounts for your users.
> "mailer" seems to always be "local" for anything but a forwarded
> address, so I could probably get away with using that.  However, I'm
> also thinking about hashing the userdirs.  On a big system you could
> potentially have thousands of user directoris, and that can bog down.

Many years ago I complained about the effects of 1000s of entries per
file directory and was known to grumble about people who couldn't tell
the difference between a filesystem and database.  Since then good
file systems can handle 100s of 1000s of names in a single file
directory without breathing hard (or being slow).

Note changing where dccm and dccifd expect to find per-user whitelists
involves making a long term commitment to maintaining the change,
unless you convince me to put it in the official source.

For example, I'm finally making some progress on 1.1.37 (including
checksum changes and poll() on Solaris).  You'll need to integrate any
changes to the client whitelist library.

> I'm thinking of using the simple hash scheme some mailers use.  The user
> directories would go into subdirectories based on the first to letters
> of the account, i.e. "spike" -> "userdirs/s/p/spike".  Single letter
> accounts are handled by putting them in first directory for that letter
> i.e "a" -> "userdirs/a/a/a".

That seems reasonable.
A weak argumenet can be made that 2 levels costs more in kernel file
directory fiddling than it saves.  A single level should chop the size
of directories by a factor of 10.  If you have more than 1000s of
usernames, you might want something more sophisticated.


More information about the DCC mailing list

Contact vjs@rhyolite.com by mail or use the form.