Bugs, features that may be added: - Currently "." permitted as a HASHABLE_CH. It may be desirable to convert all "."s to ":"s, to avoid any filename issues. For this reason, the not_hashable function checks that the first character is not ".", since otherwise these files would be hidden or clash with existing files. - Could check user@domain more meaningfully, such that @domain conforms to alphanumeric plus dot plus dash (the standard). - No real consistent exit code strategy at present. Versions: - 0.21: 30-July-2002: - Removed hashqmaillocal.c, a relic from 0.1, 0.11. - Modified qmail-local to turn addresses into lower case before hashing - I thought I'd already done that, but somehow I've missed it. That's, erm, _very_ important, so that mail for POSTMASTER@xyz.com goes to the same place as postmaster@xyz.com. - Modified qmail-local so that if it can't find a mailbox, it then checks whether it can find /maildirs, and then /maildirs/. If not, return a soft error, to indicate that the maildirs are not mounted. - 0.20: 21-May-2001: - The main change for this version is to lose hashqmaillocal; instead, qmail itself is changed (specifically, qmail-local) to incorporate hashing. This means that hashing doesn't break the DTLINE-based loop detection of qmail. Earlier versions of qmail-hashdir did break this loop detection, since it was invoked as a program delivery, for which loop detection is disabled (I think that's right...). Since losing hashqmaillocal is quite a big change, I've jumped up the version number. - Started using Dan's strerr routines, which shrinks the progs (well, at least the source code) considerably. - Started using -I to tell cc to look for headers in qmail dir - Started using Dan's load and compile commands, so the user's conf-cc and conf-ld for qmail should be effective here too. - Changes to text files and comments in various places. - Significant changes to the Makefile. - With putting the hashing in qmail-local, extension addresses are now possible within a hashed user directory. Scary to get the hang of, mind. - 0.11: 21-Apr-2001. Various stupid errors fixed: - Changed from 0.x to 0.xx version numbers, this seems far more sensible, I expect there will be various incremental changes, and I don't want to reach version 1 too soon (before the package matures properly). - Absolute path to maildirmake removed in addhashmaildir, which means that the PATH will have to include the qmail bin directory. Also added a check that the argument is a user (not an alias), which is perhaps overdoing it. - Negative exit codes replaced with positive ones - Solaris 8 was unhappy with these (for ishashuser, also called by listhashaliases). Being paranoid, I also made similar changes to admin_core.c, but I think they're completely unnecessary. Anyway, a number of system functions called in that module return negative values... I think Solaris 8's fussiness is to do with Bourne scripts rather than C. Odd. Or maybe I was just having a bad day. - export USER added in hashop - again this was failing in Solaris 8 - I guess Linux is more forgiving. - "cp -f" lines replaced with "cp -fp" in the Makefile; otherwise the ownership of the executables is wrong, so that when logged in as the hash user, the binaries and scripts are not available (er, whoops). - admin_core "Ownership..." error-message improved. - Some changes in the text files. Some instructions were confusing, and maybe some still are... - 0.1: 30-Oct-2000: Replaces the earlier version, but in fact the only things that have changed are: - the Makefile - this was setting SetUID, so I've removed that to avoid the issue described below. - the text files - to explain how to configure this package to work around the SetUID issue (i.e. run everything as hashuser, or get checkpassword to do the change of UID if necessary). - "qmail-hashing21Aug00": Initial public release. This included setting the SetUID bit on chhashdir, which I later realised meant that if the machine were to be compromised, arbitrary programs could be executed as the hashuser. Not necessarily a major hole, but I don't like it, so along came 0.1, and this earlier version is withdrawn.