diff options
-rw-r--r-- | INSTALL | 12 | ||||
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | configure.in | 57 | ||||
-rw-r--r-- | fetchmail.man | 62 |
4 files changed, 90 insertions, 42 deletions
@@ -81,15 +81,13 @@ If you want to build for debugging, will do that. -To enable multilingual support using GNU gettext, +To specify a fallback MUA in case local port 25 doesn't respond, do one of: - configure --enable-nls + configure --enable-fallback=procmail + configure --enable-fallback=sendmail -Note: for this to work, you need gettext to be included in your libc -and libintl.h to be in your system headers. This is the case on -Red Hat Linux 7.0 and up, Debian, and FreeBSD. (The author will *not* -accept patches to include a gettext build in the fetchmail tarball, -as his experience with this path has been horrible.) +A disadvantage of using procmail is that local alias expansion +according to /etc/aliases won't get done if we fall back to it. Advanced configuration: @@ -10,6 +10,7 @@ * Updated French translation. * Yoshihiko SARUMARU's patch to keep Kanji out of Received headers. * Include aclocal.m4 in the tarball (solves some build problems). +* Added HMH's patch to support configuring a specific fallback MUA. fetchmail-5.7.4 (Mon Mar 12 00:02:23 EST 2001), 20323 lines: diff --git a/configure.in b/configure.in index 09631078..0a2af8ec 100644 --- a/configure.in +++ b/configure.in @@ -225,25 +225,56 @@ AC_DEFINE_UNQUOTED(PID_DIR, "$dir") # Sendmail without the -t option to use the message headers will work too, # not just for sendmail itself but for workalikes like exim. # -# Note: it would be a very bad idea to use any MDA that doesn't return +# Note1: A disadvantage of using procmail is that local alias expansion +# according to /etc/aliases won't get done if we fall back. +# +# Note2: it would be a very bad idea to use any MDA that doesn't return # a refuse-to-deliver status on disk- or process-table-full # conditions; mail could get lost that way. Both procmail and # sendmail (and all of the MDAs like exim that might be lurking under # a sendmail alias) do the right thing in this circumstance. # AC_PATH_PROG(procmail, procmail, "", $PATH:/usr/sbin) -if test "$procmail" -then - echo "Found procmail, will use it as a fallback MDA." - AC_DEFINE(FALLBACK_MDA, "$procmail -d %T") -else - AC_PATH_PROG(sendmail, sendmail, "", $PATH:/usr/sbin) - if test "$sendmail" - then - echo "Found sendmail, will use it as a fallback MDA." - AC_DEFINE(FALLBACK_MDA, "$sendmail %T") - fi -fi +AC_PATH_PROG(sendmail, sendmail, "", $PATH:/usr/sbin) + +### use option --disable-fallback to disable fallback MDA +### use option --enable-fallback=procmail or +### --enable-fallback=sendmail to select +AC_ARG_ENABLE(fallback, + [ --enable-fallback=procmail enable procmail as fallback (default) + --enable-fallback=sendmail enable /usr/sbin/sendmail as fallback + --enable-fallback=no disable fallback],,[enable_fallback=auto]) + +case "$enable_fallback" in + sendmail) if test -z "$sendmail" ; then + AC_ERROR([Sendmail selected as fallback, but not found]) + #not reached + fi + AC_DEFINE(FALLBACK_MDA, "$sendmail %T") + echo "Will use $sendmail as fallback MDA." + ;; + procmail) if test -z "$procmail" ; then + AC_ERROR([procmail selected as fallback, but not found]) + #not reached + fi + AC_DEFINE(FALLBACK_MDA, "$procmail -d %T") + echo "Will use $procmail as fallback MDA." + ;; + no|unset) echo "Will not use a fallback MDA" + ;; + auto|yes|set) if test -n "$procmail" ; then + AC_DEFINE(FALLBACK_MDA, "$procmail -d %T") + echo "Will use $procmail as fallback MDA." + elif test -n "$sendmail" ; then + AC_DEFINE(FALLBACK_MDA, "$sendmail %T") + echo "Will use $sendmail as fallback MDA." + else echo "No fallback MDA available." + fi + ;; + *) AC_ERROR([unkown value for --enable-fallback given: $enable_fallback]) + #notreached + ;; +esac AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) diff --git a/fetchmail.man b/fetchmail.man index 0e6c03e3..746acdc1 100644 --- a/fetchmail.man +++ b/fetchmail.man @@ -46,10 +46,14 @@ delivery-control mechanisms (such as \fI.forward\fR files) normally available through your system MDA and local delivery agents will therefore work. .PP -If no port 25 listener is available, but your fetchmail compilation detected -or was told about a local MDA, it will use that MDA for local delivery -instead. At build time, fetchmail looks for executable procmail and -sendmail binaries. +If no port 25 listener is available, but your fetchmail compilation +detected or was told about a reliable local MDA, it will use that MDA +for local delivery instead. At build time, fetchmail normally looks +for executable +.IR procmail (1) +and +.IR sendmail (1) +binaries. .PP If the program .I fetchmailconf @@ -313,16 +317,16 @@ Forces an ssl protocol. Possible values are \&`\fBssl2\fR', `\fBssl3\fR' and Specify a hunt list of hosts to forward mail to (one or more hostnames, comma-separated). In ETRN mode, set the host that the mailserver is asked to ship mail to. Hosts are tried in list order; -the first one that is up becomes the forwarding target for the -current run. Normally, `localhost' is added to the end of the list as -an invisible default. However, when using ETRN mode or Kerberos +the first one that is up becomes the forwarding target for the current +run. Normally, `localhost' is added to the end of the list as an +invisible default. However, when using ETRN or ODMR mode or Kerberos authentication, the FQDN of the machine running fetchmail is added to -the end of the list as an invisible default. Each hostname may have a -port number following the host name. The port number is separated from -the host name by a slash; the default port is 25 (or ``smtp'' under IPv6). -If you specify an absolute pathname (beginning with a /), it will be -interpreted as the name of a UNIX socket accepting LMTP connections -(such as is supported by the Cyrus IMAP daemon) Example: +the end of the list as an invisible default. Each hostname may have a +port number following the host name. The port number is separated +from the host name by a slash; the default port is 25 (or ``smtp'' +under IPv6). If you specify an absolute pathname (beginning with a +/), it will be interpreted as the name of a UNIX socket accepting LMTP +connections (such as is supported by the Cyrus IMAP daemon) Example: --smtphost server1,server2/2525,server3,/var/imap/socket/lmtp @@ -359,7 +363,7 @@ prevents the message from being deleted off the server. If target user while delivering mail through an MDA. Some possible MDAs are "/usr/sbin/sendmail -oem -f %F %T", "/usr/bin/deliver" and "/usr/bin/procmail -d %T" (but the latter is usually redundant as it's -what SMTP listeners usually forward to). Local delivery addresses +what SMTP listeners normally forward to). Local delivery addresses will be inserted into the MDA command wherever you place a %T; the mail message's From address will be inserted where you place an %F. Do \fInot\fR use an MDA invocation like "sendmail -oem -t" that @@ -939,11 +943,24 @@ progress dots are only shown on stdout by default. The protocols \fIfetchmail\fR 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 has acknowledged to \fIfetchmail\fR that the -message has been accepted for delivery or rejected due to a spam -block. When forwarding to an MDA, however, there is more possibility -of error (because there's no way for fetchmail to get a reliable -positive acknowledgement from the MDA). +listener on the client side has acknowledged to \fIfetchmail\fR that +the message has been either accepted for delivery or rejected due to a +spam block. +.PP +When forwarding to an MDA, however, there is more possibility +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 +.IR procmail (1) +program is like this; so are most programs designed as mail transport +agents, such as +.IR sendmail (1), +and +.IR exim (1). +These programs give back a reliable positive acknowledgement 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. .PP The normal mode of \fIfetchmail\fR is to try to download only `new' messages, leaving untouched (and undeleted) messages you have already @@ -1036,11 +1053,12 @@ the message rejected immediately after the headers have been fetched, without reading the message body. Thus, you won't pay for downloading spam message bodies. .PP -Mail that is spam-blocked triggers an RFC1892 bounce message informing -the originator that we do not accept mail from it. +If the \fIspambounce\fR option is on, mail that is spam-blocked +triggers an RFC1892 bounce message informing the originator that we do +not accept mail from it. .SH SMTP/ESMTP ERROR HANDLING -Besides the spam-blocking described above,fetchmail takes special +Besides the spam-blocking described above, fetchmail takes special actions on the following SMTP/ESMTP error responses .TP 5 452 (insufficient system storage) |