diff -r 000000000000 -r c045670f36e9 README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Thu Nov 01 14:46:11 2007 +0100 @@ -0,0 +1,105 @@ +queue-fix 1.4 +19990314 +Copyright 1999 +Eric Huss +e-huss@netmeridian.com + +This is a small utility for checking and repairing the qmail queue +structure. It will fix uid/gid settings and permissions. It will +rename the message files to match their inodes. It will even create +directories and files that don't exist that should be there (you can +even create a queue from scratch). It will also print warnings for +any files it finds that should not exist. + +Compiling: +1) Extract the tar file. +2) Edit conf-cc and conf-ld for your compiler. +3) If you changed conf-split when you compiled qmail, edit queue-fix.c +and change SPLIT_NUM to this value. +4) Type make. + +This will produce the "queue-fix" executable. + +How to use: + queue-fix [-i | -N] queue_directory + +Use the -i option to go into interactive mode. In interactive mode, +it will prompt for confirmation before it begins a task. +Alternatively, you may use the -N option to go into test mode. +In test mode, queue-fix will print to standard output all the actions +queue-fix would normally do, but does not actually call them. +queue_directory is the location of the queue to fix. + +For your safety, you should always make a backup of your queue before +running queue-fix. + +Examples: + +1) Moving your queue. + a) Shut down qmail-send. Wait for exiting to show up in the log. + Shut down qmail-smptd: + - if inetd, comment out of /etc/inetd.conf and send inetd + a HUP. + - if supervise, use svc -d to bring it down + Shut down any processes which may run qmail-queue. This includes, + but is not limited to qmqpd, pop, imapd, etc. + b) Choose the location for the new home of your queue. In this + example: originally in /var/qmail/queue + moving to /other/qmail/queue + c) cd /var/qmail + d) mv queue /other/qmail + e) queue-fix -i /other/qmail/queue + f) Run queue-fix again just to make sure it worked. If it prints + anything other than finished, then something is seriously + wrong. + g) Either make a link to the new queue location, or recompile + qmail with the new queue location. + h) Restart qmail and test it. + +2) Reconstructing the file system. + a) Shut down qmail-send. Wait for exiting to show up in the log. + Shut down qmail-smptd: + - if inetd, comment out of /etc/inetd.conf and send inetd + a HUP. + - if supervise, use svc -d to bring it down + Shut down any processes which may run qmail-queue. This includes, + but is not limited to qmqpd, pop, imapd, etc. + b) Do whatever file system changes that you need to do. + c) queue-fix -i /var/qmail/queue + d) Run queue-fix again just to make sure it worked. If it prints + anything other than finished, then something is seriously + wrong. + e) Restart qmail and test it. + +Extra Safety: + +You must ensure that no other program modifies the queue while queue-fix +is running. If you are unsure whether or not something will try to use +the queue, type: + + chmod 0 /var/qmail/bin/qmail-queue + +before running queue-fix. This will assume that MUA's and other applications +that inject mail will recognize the failure to run qmail-queue. +Once you are done, type: + + chmod 4711 /var/qmail/bin/qmail-queue + +to get it going again. + +Known faults: + +- The error messages are not very descriptive of the problem. +- Responding "no" during interactive mode results in a confusing + error message. +- queue-fix checks for special files to exist in the queue, but does + not check their type (for example, a regular file existing where + there should be a named pipe). + +Epilogue: + +If you have problems, please let me know. I make no guarantees about +the quality of this program. + +This utility as an experiment uses the libraries written by D. J. +Bernstein. Thanks!