Hi,

for some admittedly special and braindead setup I needed to relay
outgoing mail via another MTA running on localhost:25. In order to
bypass some of the mail loop safety catches, I exteded inet_interfaces
to accept "none".
In case someone might find this useful, I'll publish the path (against
2.8.2) here, including a documentation note strongly discouraging the
use of the new option.


diff -Nru postfix-2.8.2.orig//proto/postconf.proto 
postfix-2.8.2/proto/postconf.proto
--- postfix-2.8.2.orig//proto/postconf.proto    2011-01-20 13:10:33.000000000 
+0100
+++ postfix-2.8.2/proto/postconf.proto  2011-04-05 09:01:19.000000000 +0200
@@ -1837,8 +1837,10 @@
 <p> The network interface addresses that this mail system receives
 mail on. Specify "all" to receive mail on all network
 interfaces (default), and "loopback-only" to receive mail
-on loopback network interfaces only (Postfix version 2.2 and later).  The
-parameter also controls delivery of mail to <tt>user@[ip.address]</tt>.
+on loopback network interfaces only (Postfix version 2.2 and later). Setting
+this parameter to "none" will disable all loop checks and is therefore
+strongly discouraged. The parameter also controls delivery of mail to
+<tt>user@[ip.address]</tt>.
 </p>
 
 <p>
diff -Nru postfix-2.8.2.orig//src/global/mail_params.h 
postfix-2.8.2/src/global/mail_params.h
--- postfix-2.8.2.orig//src/global/mail_params.h        2011-03-14 
18:59:09.000000000 +0100
+++ postfix-2.8.2/src/global/mail_params.h      2011-04-05 08:20:49.000000000 
+0200
@@ -152,6 +152,7 @@
 #define VAR_INET_INTERFACES    "inet_interfaces"       /* listen addresses */
 #define INET_INTERFACES_ALL    "all"
 #define INET_INTERFACES_LOCAL  "loopback-only"
+#define INET_INTERFACES_NONE   "none"
 #define DEF_INET_INTERFACES    INET_INTERFACES_ALL
 extern char *var_inet_interfaces;
 
diff -Nru postfix-2.8.2.orig//src/global/own_inet_addr.c 
postfix-2.8.2/src/global/own_inet_addr.c
--- postfix-2.8.2.orig//src/global/own_inet_addr.c      2006-06-15 
20:07:15.000000000 +0200
+++ postfix-2.8.2/src/global/own_inet_addr.c    2011-04-05 08:38:21.000000000 
+0200
@@ -124,6 +124,14 @@
     }
 
     /*
+     * If we are configured to explicitely ignore all local interfaces,
+     * there's noting left to do
+     */
+    else if (strcmp(var_inet_interfaces, INET_INTERFACES_NONE) == 0) {
+       return;
+    }
+
+    /*
      * If we are supposed to be listening only on specific interface
      * addresses (virtual hosting), look up the addresses of those
      * interfaces.


Regards,
Christoph

-- 
Spare Space

Reply via email to