From: Thomas W. <to...@to...> - 2005-11-02 15:41:04
|
There has been some discussion about the MDA configuration of fetchmail in the last few days, and I had proposed my configuration: > mda "formail >> ${MAIL-$HOME/Post/Inbox}" or alternatively: > mda "formail -s procmail -p" Jakob Hirsch as well as the fetchmail manual page even suggested to use just procmail alone. Now I've happened to encounter a really serious problem with procmail. It turned out to be what the fetchmail man page calls an "unsafe MDA": > RETRIEVAL FAILURE MODES > The protocols fetchmail uses to talk to mailservers are > next to bulletproof. In normal operation forwarding to > port 25, no message is ever deleted (or even marked for > deletion) on the host until the SMTP listener on the > client side has acknowledged to fetchmail that the message > has been either accepted for delivery or rejected due to a > spam block. > > When forwarding to an MDA, however, there is more possi- > bility of error. Some MDAs are 'safe' and reliably return > a nonzero status on any delivery error, even one due to > temporary resource limits. The well-known procmail(1) > program is like this; so are most programs designed as > mail transport agents, such as sendmail(1), and exim(1). > These programs give back a reliable positive acknowledge- > ment and can be used with the mda option with no risk of > mail loss. Unsafe MDAs, though, may return 0 even on > delivery failure. If this happens, you will lose mail. I had a "disk quota exceeded" condition here which procmail failed to handle properly. It accepted its input, threw it away and just returned success. I heard before that exceeded quota is a known touchstone for proper error handling of software. Obviously procmail has a serious issue here which should be fixed as soon as possible. As long as it is not, fetchmail should no longer recommend using procmail but rather warn from it. Kind regards, Thomas Wolff |