andy@jhunix.HCF.JHU.EDU (Andy S Poling) (02/20/91)
I got tired of watching our queue-running sendmail daemon wasting time re-attempting delivery of mail messages which were undeliverable (host down, unreachable, screwed-up, whatever), so I came up with the idea of having "fast" and "slow" queues. The idea is that once delivery of a message has failed, it is considered to be in the slow queue - otherwise it is considered to be in the fast queue. All of the messages stay in the same directory - which queue they belong in is determined by orderq() each time the queue is run. It's easy to determine if delivery of a message has failed: it will have an "M" line in the qf control file. A plus-sign ("+") is printed in the queue-listing to indicate messages which are considered to reside in the slow queue (like the "X" which indicates that the load-avg prevents delivery of that message). The slow queue is run by using the "-Q" option just like the "-q" option, which now runs the fast queue. I originally ran into this problem because we use my SAFE_FORWARDING patch to alias.c which causes messages that will be forwarded to be just queued - this prevents sendmail losing track of the controlling user and their uid/gid. The problem is if we want forwarding to take place quickly, we have to run the queue failrly often. Now we can run the fast queue very often and the slow queue every hour. It took about 20-30 lines of additional code in queue.c to impliment this. If anyone else is interested, I can send them the diffs to queue.c to impliment slow queues. Still trying to make sendmail into what we actually need here... :-) -Andy -- Andy Poling Internet: andy@gollum.hcf.jhu.edu UNIX Systems Programmer Bitnet: ANDY@JHUNIX Homewood Academic Computing Voice: (301)338-8096 Johns Hopkins University UUCP: uunet!mimsy!aplcen!jhunix!andy