From: Sunil S. <sh...@bo...> - 2005-12-14 10:02:50
|
Quoting from Matthias Andree's mail on Tue, Dec 13, 2005: > Well, one thing that astonished me a bit is that on one hand the input > side is clearly encapsulated with object-oriented practices, while the > output side (SMTP/LMTP; MDA; BSMTP) is not nearly as clearly separated. > On the other hand, we use POP3 sibling "protocols" where a distinction > per "authentication" would be sufficient. ... > Sending bounce messages is a sore spot. AFAIR, no bounce messages are > ever sent if bogofilter is in MDA mode. MDA mode doesn't work for > multidrop, as you'll probably recall from past discussions over at > fetchmail-friends. I don't know about BSMTP restrictions. I had worked on splitting up sink.c. I gave up when there were too many local changes and not even read access to the repository then. Also, by the time I had almost finished, a new version of fetchmail had come out which had too many changes in sink.c. One thing that had stumped me then was the FALLBACK_MDA feature. After splitting, implementing FALLBACK_MDA would be difficult (but not impossible). Should this feature be continued to be supported? Once splitting is completed, making MDA work in multidrop should not be a problem. Here would be the aim of this development: - Split sink.c into sink-smtp.c, sink-bsmtp.c, sink-mda.c (and possibly, sink-lmtp.c). - Make a structure (similar to struct method) to handle the sending of messages. - Make the mda code handle the exit code in accordance with <sysexits.h>. - Make the mda code work in multidrop mode. - Make the parser accept options per sink. - Make all sink options (like esmtpname) per sink. - Make FALLBACK_MDA work. Potential issues involved: - Cross platform: * Does <sysexits.h> exists on all platforms? * Do all platforms have at least EX_OK, EX__BASE, EX__MAX? * Do all platforms have the common exit codes that need to be handled specially (like EX_NOUSER)? - How to specify options per smtphost? - Any other issues? Any comments on this? -- Sunil Shetye. |