]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.0.15 v2.0.15
authorWietse Venema <wietse@porcupine.org>
Fri, 5 Sep 2003 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 15:51:48 +0000 (15:51 +0000)
postfix/HISTORY
postfix/conf/main.cf
postfix/conf/sample-pcre-access.cf
postfix/conf/sample-pcre-body.cf
postfix/conf/sample-pcre-header.cf
postfix/html/faq.html
postfix/html/uce.html
postfix/src/global/mail_version.h
postfix/src/util/timed_read.c
postfix/src/util/timed_write.c

index 390a0860acce18bcbd9426cd115e795d4caf62b9..87eef918a79b8ac303d95ab568bc6992788125a0 100644 (file)
@@ -7865,6 +7865,13 @@ Apologies for any names omitted.
        formatted numerical port.  Files:  util/find_inet.c,
        smtp/smtp_connect.c, lmtp/lmtp_connect.c.
 
+20030905
+
+       Workaround: Solaris 8 select() claims that a non-blocking
+       socket is readable and then read() fails with EAGAIN. Files:
+       util/timed_read.c and as precautionary measure,
+       util/timed_write.c.
+
 Open problems:
 
        Doc: mention the proxy_interfaces parameter everywhere the
index fd7a99836fc4557bcd9d5307680dab071432614d..032c10ed41fb8b37fcd401a08663bec87132acd5 100644 (file)
@@ -147,6 +147,9 @@ mail_owner = postfix
 # a name matches a lookup key (the right-hand side is ignored).
 # Continue long lines by starting the next line with whitespace.
 #
+# DO NOT LIST RELAY DESTINATIONS IN MYDESTINATION.
+# SPECIFY RELAY DESTINATIONS IN RELAY_DOMAINS.
+#
 # See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
 #
 #mydestination = $myhostname, localhost.$mydomain
index 83df35673ddda58bed9207ddeb4aa2e0a9c4a000..36f610b1fca36f65ed7d67172be1679709915474 100644 (file)
@@ -9,9 +9,6 @@
 #      the forward slash is used). The regular expression can contain
 #      whitespace.
 #
-#      When the regular expression is prefixed by `!', the pattern
-#      succeeds when it does not match.
-#
 #      By default, matching is case-INsensitive, although following
 #      the second slash with an 'i' will reverse this. Other flags are
 #      supported, but the only other useful one is 'U', which makes
index 2e5a0122eaf95f46bbb738da412c6bde0ef789e9..1374f74f6dec6168c8ef9a8f1ef6e12bcf81e890 100644 (file)
@@ -11,9 +11,6 @@
 #      the forward slash is used). The regular expression can contain
 #      whitespace.
 #
-#      When the regular expression is prefixed by `!', the pattern
-#      succeeds when it does not match.
-#
 #      By default, matching is case-INsensitive, although following
 #      the second slash with an 'i' will reverse this. Other flags are
 #      supported, but the only other useful one is 'U', which makes
index 0d9f2a3e5b0335d799437f61578dba0a148eea2b..6becd9269b3ad72cbc0d16125fe9d75a3c1a41fa 100644 (file)
@@ -12,9 +12,6 @@
 #      the forward slash is used). The regular expression can contain
 #      whitespace.
 #
-#      When the regular expression is prefixed by `!', the pattern
-#      succeeds when it does not match.
-#
 #      By default, matching is case-INsensitive, although following
 #      the second slash with an 'i' will reverse this. Other flags are
 #      supported, but the only other useful one is 'U', which makes
index f88124f4e436aa9b54580d401e47f59b9b197144..8892637f0da6e7278205da3124860357b53dccf9 100644 (file)
@@ -1441,7 +1441,20 @@ the address does resolve to a name.
 <p>
 
 You run the Postfix SMTP server inside a <b>chroot</b> jail for
-extra security, but some configuration files are missing. In order
+extra security, but some configuration files are missing or have
+incorrect information. The command "postfix check" will report
+what files may have incorrect information. For example:
+
+<blockquote>
+<pre>
+warning: /var/spool/postfix/etc/resolv.conf and /etc/resolv.conf differ
+warning: /var/spool/postfix/etc/localtime and /etc/localtime differ
+</pre>
+</blockquote>
+
+<p>
+
+In order
 to run inside a chroot jail, the Postfix SMTP client and server
 need copies of system configuration files inside the Postfix queue
 directory.  The exact list of files is very system dependent, but
@@ -1776,7 +1789,8 @@ for the <b>/etc/resolv.conf</b> file.
 Check out your Postfix <b>master.cf</b> file. If the SMTP client
 runs chrooted, then it needs a bunch of files inside the Postfix
 queue directory.  Examples are in the source distribution in the
-<b>examples</b> subdirectory.
+<b>examples</b> subdirectory. See also the other FAQ entry on 
+<a href="#numerical_log">name service trouble</a>.
 
 </ul>
 
index e78b933f48e435bf57da6bdd27632ebc2568d3fe..b039002ca713c2955e34f5f8afa8e3b9b5c3fca5 100644 (file)
@@ -348,8 +348,8 @@ reject_rbl_client relays.mail-abuse.org</b> (paid service)
 <dd> <b>smtpd_client_restrictions = hash:/etc/postfix/access,
 reject_rbl_client relays.ordb.org</b> (free service)
 
-<dd> <b>smtpd_client_restrictions = hash:/etc/postfix/access,
-reject_rhsbl_client dsn.rfc-ignorant.org</b> (free service)
+<dd> <b>smtpd_sender_restrictions = hash:/etc/postfix/access,
+reject_rhsbl_sender dsn.rfc-ignorant.org</b> (free service)
 
 <dd> <b>smtpd_client_restrictions = permit_mynetworks,
 reject_unknown_client</b>
@@ -934,19 +934,19 @@ lookup tables:
 
 <table border="1">
 
-<tr><th>Recipient domain matches <th>Recipient lookup table 
+<tr><th>Recipient domain matches</th> <th>Recipient lookup table</th> 
 
-<tr><td><a href="basic.html#mydestination"> $mydestination</a> or
-<a href="basic.html#inet_interfaces">$inet_interfaces</a> 
-<td>$local_recipient_maps
+</tr><tr><td><a href="basic.html#mydestination"> $mydestination</a> or
+<a href="basic.html#inet_interfaces">$inet_interfaces</a></td> 
+<td>$local_recipient_maps</td>
 
-<tr><td>$virtual_alias_domains <td>$virtual_alias_maps 
+</tr><tr><td>$virtual_alias_domains</td> <td>$virtual_alias_maps</td> 
 
-<tr><td>$virtual_mailbox_domains <td>$virtual_mailbox_maps 
+</tr><tr><td>$virtual_mailbox_domains</td> <td>$virtual_mailbox_maps</td> 
 
-<tr><td>$relay_domains <td>$relay_recipient_maps 
+</tr><tr><td>$relay_domains</td> <td>$relay_recipient_maps</td> 
 
-</table>
+</tr></table>
 
 </blockquote>
 
index c8a3edc0e762ab67cae93900a0cfce407c4ce188..e98fbe4b3c3ff0040b2418cf4edc2f2339e5326d 100644 (file)
   * Patches change the patchlevel and the release date. Snapshots change the
   * release date only, unless they include the same bugfix as a patch release.
   */
-#define MAIL_RELEASE_DATE      "20030812"
+#define MAIL_RELEASE_DATE      "20030905"
 
 #define VAR_MAIL_VERSION       "mail_version"
-#define DEF_MAIL_VERSION       "2.0.14"
+#define DEF_MAIL_VERSION       "2.0.15"
 extern char *var_mail_version;
 
  /*
index 1a29a69f9f52dbe4491c7a0d752a9c8226174ab6..509004ba3a561ad56ce61c66bfb447be6d0ab565 100644 (file)
 
 #include <sys_defs.h>
 #include <unistd.h>
+#include <errno.h>
 
 /* Utility library. */
 
-#include "iostuff.h"
+#include <msg.h>
+#include <iostuff.h>
 
 /* timed_read - read with deadline */
 
 int     timed_read(int fd, void *buf, unsigned len,
                           int timeout, void *unused_context)
 {
+    int     ret;
 
     /*
      * Wait for a limited amount of time for something to happen. If nothing
      * happens, report an ETIMEDOUT error.
+     * 
+     * XXX Solaris 8 read() fails with EAGAIN after read-select() returns
+     * success.
      */
-    if (timeout > 0 && read_wait(fd, timeout) < 0)
-       return (-1);
-    else
-       return (read(fd, buf, len));
+    for (;;) {
+       if (timeout > 0 && read_wait(fd, timeout) < 0)
+           return (-1);
+       if ((ret = read(fd, buf, len)) < 0 && timeout > 0 && errno == EAGAIN) {
+           msg_warn("read() returns EAGAIN on a readable file descriptor!");
+           msg_warn("pausing to avoid going into a tight select/read loop!");
+           sleep(1);
+       } else {
+           return (ret);
+       }
+    }
 }
index 723bf036d35b9d79d996b862638187dd25a09b44..3089a83903205b8aa828e6a69775fb10b3045951 100644 (file)
 
 #include <sys_defs.h>
 #include <unistd.h>
+#include <errno.h>
 
 /* Utility library. */
 
-#include "iostuff.h"
+#include <msg.h>
+#include <iostuff.h>
 
 /* timed_write - write with deadline */
 
 int     timed_write(int fd, void *buf, unsigned len,
                            int timeout, void *unused_context)
 {
+    int     ret;
 
     /*
      * Wait for a limited amount of time for something to happen. If nothing
      * happens, report an ETIMEDOUT error.
+     * 
+     * XXX Solaris 8 read() fails with EAGAIN after read-select() returns
+     * success. The code below exists just in case their write implementation
+     * is equally broken.
+     * 
+     * This condition may also be found on systems where select() returns
+     * success on pipes with less than PIPE_BUF bytes of space, and with
+     * badly designed software where multiple writers are fighting for access
+     * to the same resource.
      */
-    if (timeout > 0 && write_wait(fd, timeout) < 0)
-       return (-1);
-    else
-       return (write(fd, buf, len));
+    for (;;) {
+       if (timeout > 0 && write_wait(fd, timeout) < 0)
+           return (-1);
+       if ((ret = write(fd, buf, len)) < 0 && timeout > 0 && errno == EAGAIN) {
+           msg_warn("write() returns EAGAIN on a writable file descriptor!");
+           msg_warn("pausing to avoid going into a tight select/write loop!");
+           sleep(1);
+       } else {
+           return (ret);
+       }
+    }
 }