summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hanselmann <hansmi@gentoo.org>2005-07-14 21:35:24 +0000
committerMichael Hanselmann <hansmi@gentoo.org>2005-07-14 21:35:24 +0000
commit7d9c3c3107b361ab004042603ecead5cb9445b3d (patch)
tree0a00f974fb8499d4f76a538bfe2003f1590680f2 /mail-mta/qmail
parentFix #80617, #98944, add GRUB :root_device support and add a more versatile gr... (diff)
downloadgentoo-2-7d9c3c3107b361ab004042603ecead5cb9445b3d.tar.gz
gentoo-2-7d9c3c3107b361ab004042603ecead5cb9445b3d.tar.bz2
gentoo-2-7d9c3c3107b361ab004042603ecead5cb9445b3d.zip
Added patch from bug 98961.
(Portage version: 2.0.51.22-r1)
Diffstat (limited to 'mail-mta/qmail')
-rw-r--r--mail-mta/qmail/ChangeLog7
-rw-r--r--mail-mta/qmail/files/1.03-r16/virtual-domain-outgoing-IP-address.patch115
-rw-r--r--mail-mta/qmail/qmail-1.03-r16.ebuild6
3 files changed, 125 insertions, 3 deletions
diff --git a/mail-mta/qmail/ChangeLog b/mail-mta/qmail/ChangeLog
index f9da1ab24049..87a0c2d61b24 100644
--- a/mail-mta/qmail/ChangeLog
+++ b/mail-mta/qmail/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for mail-mta/qmail
# Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/mail-mta/qmail/ChangeLog,v 1.49 2005/07/13 10:57:26 hansmi Exp $
+# $Header: /var/cvsroot/gentoo-x86/mail-mta/qmail/ChangeLog,v 1.50 2005/07/14 21:35:24 hansmi Exp $
+
+ 14 Jul 2005; Michael Hanselmann <hansmi@gentoo.org>
+ +files/1.03-r16/virtual-domain-outgoing-IP-address.patch,
+ qmail-1.03-r16.ebuild:
+ Added patch from bug 98961.
13 Jul 2005; Michael Hanselmann <hansmi@gentoo.org>
+files/1.03-r16/invalid-envelope-sender-log.patch, qmail-1.03-r16.ebuild:
diff --git a/mail-mta/qmail/files/1.03-r16/virtual-domain-outgoing-IP-address.patch b/mail-mta/qmail/files/1.03-r16/virtual-domain-outgoing-IP-address.patch
new file mode 100644
index 000000000000..e122b26a46d3
--- /dev/null
+++ b/mail-mta/qmail/files/1.03-r16/virtual-domain-outgoing-IP-address.patch
@@ -0,0 +1,115 @@
+diff -NuarbBw qmail-1.03.orig/qmail-qmqpc.c qmail-1.03/qmail-qmqpc.c
+--- qmail-1.03.orig/qmail-qmqpc.c 1998-06-15 03:53:16.000000000 -0700
++++ qmail-1.03/qmail-qmqpc.c 2005-07-14 01:00:24.000000000 -0700
+@@ -109,7 +109,7 @@
+ qmqpfd = socket(AF_INET,SOCK_STREAM,0);
+ if (qmqpfd == -1) die_socket();
+
+- if (timeoutconn(qmqpfd,&ip,PORT_QMQP,10) != 0) {
++ if (timeoutconn(qmqpfd,&ip, ( struct ip_address * ) 0, PORT_QMQP,10) != 0) { // JAK
+ lasterror = 73;
+ if (errno == error_timeout) lasterror = 72;
+ close(qmqpfd);
+diff -NuarbBw qmail-1.03.orig/qmail-remote.c qmail-1.03/qmail-remote.c
+--- qmail-1.03.orig/qmail-remote.c 2005-07-14 00:50:58.000000000 -0700
++++ qmail-1.03/qmail-remote.c 2005-07-14 01:01:22.000000000 -0700
+@@ -52,6 +52,9 @@
+ stralloc auth_b64_pass = {0};
+ stralloc auth_status = {0};
+
++stralloc smtphost = { 0 }; // JAK
++ipalloc smtpip = { 0 }; // JAK
++
+ saa reciplist = {0};
+
+ struct ip_address partner;
+@@ -902,9 +905,27 @@
+
+ addrmangle(&sender,argv[2],&flagalias,0);
+
++ // 'canonhost' now should contain the canonical name of the sender's host.
++ // Most of the time this is a local domain name, but sometimes the domain
++ // name of a forwarded email.
++
++ stralloc_copy ( &smtphost, &canonhost ); // JAK
++ dns_ip ( &smtpip, &smtphost ); // JAK
++
+ if (!saa_readyplus(&reciplist,0)) temp_nomem();
+ if (ipme_init() != 1) temp_oserr();
+
++ // JAK =>
++ // Check if the obtained SMTP IP address is one of the addresses
++ // on this machine. If it is, set 'helohost' to 'smtphost'.
++
++ if ( ipme_is ( &smtpip.ix -> ip ) )
++ stralloc_copy ( &helohost, &smtphost );
++ else
++ smtpip.ix -> ip.d [ 0 ] = smtpip.ix -> ip.d [ 1 ] = smtpip.ix -> ip.d [ 2 ] = smtpip.ix -> ip.d [ 3 ] = 0;
++
++ // JAK <=
++
+ flagallaliases = 1;
+ recips = argv + 3;
+ while (*recips) {
+@@ -951,7 +972,7 @@
+ if (smtpfd == -1) temp_oserr();
+
+ if (qmtp_priority(ip.ix[i].pref)) {
+- if (timeoutconn(smtpfd,&ip.ix[i].ip,(unsigned int) qmtp_port,timeoutconnect) == 0) {
++ if (timeoutconn(smtpfd,&ip.ix[i].ip, &smtpip.ix -> ip, (unsigned int) port,timeoutconnect) == 0) { // JAK
+ tcpto_err(&ip.ix[i].ip,0);
+ partner = ip.ix[i].ip;
+ qmtp(); /* does not return */
+diff -NuarbBw qmail-1.03.orig/remoteinfo.c qmail-1.03/remoteinfo.c
+--- qmail-1.03.orig/remoteinfo.c 1998-06-15 03:53:16.000000000 -0700
++++ qmail-1.03/remoteinfo.c 2005-07-14 01:00:24.000000000 -0700
+@@ -49,7 +49,7 @@
+ byte_copy(&sin.sin_addr,4,ipl);
+ sin.sin_port = 0;
+ if (bind(s,(struct sockaddr *) &sin,sizeof(sin)) == -1) { close(s); return 0; }
+- if (timeoutconn(s,ipr,113,timeout) == -1) { close(s); return 0; }
++ if (timeoutconn(s,ipr,ipl,113,timeout) == -1) { close(s); return 0; } // JAK
+ fcntl(s,F_SETFL,fcntl(s,F_GETFL,0) & ~O_NDELAY);
+
+ len = 0;
+diff -NuarbBw qmail-1.03.orig/timeoutconn.c qmail-1.03/timeoutconn.c
+--- qmail-1.03.orig/timeoutconn.c 1998-06-15 03:53:16.000000000 -0700
++++ qmail-1.03/timeoutconn.c 2005-07-14 01:00:24.000000000 -0700
+@@ -10,9 +10,10 @@
+ #include "byte.h"
+ #include "timeoutconn.h"
+
+-int timeoutconn(s,ip,port,timeout)
++int timeoutconn(s,ip,smtpip,port,timeout) // JAK
+ int s;
+ struct ip_address *ip;
++struct ip_address *smtpip; // JAK
+ unsigned int port;
+ int timeout;
+ {
+@@ -22,6 +23,25 @@
+ fd_set wfds;
+ struct timeval tv;
+
++ // JAK =>
++ // If 'smtpip' != 0.0.0.0 bind () it as outgoing SMTP IP address.
++
++ if ( ( smtpip != 0 ) &&
++ ( smtpip -> d [ 0 ] != 0 ) &&
++ ( smtpip -> d [ 1 ] != 0 ) &&
++ ( smtpip -> d [ 2 ] != 0 ) &&
++ ( smtpip -> d [ 3 ] != 0 ) )
++ {
++ byte_zero ( &sin, sizeof ( sin ) );
++ byte_copy ( &sin.sin_addr.s_addr, 4, smtpip );
++ sin.sin_family = AF_INET;
++
++ if ( bind ( s, ( struct sockaddr * ) &sin, sizeof ( sin ) ) )
++ return ( -1 );
++ }
++
++ // JAK <=
++
+ byte_zero(&sin,sizeof(sin));
+ byte_copy(&sin.sin_addr,4,ip);
+ x = (char *) &sin.sin_port;
diff --git a/mail-mta/qmail/qmail-1.03-r16.ebuild b/mail-mta/qmail/qmail-1.03-r16.ebuild
index 61dc9cd9ea6c..421942d8327b 100644
--- a/mail-mta/qmail/qmail-1.03-r16.ebuild
+++ b/mail-mta/qmail/qmail-1.03-r16.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/mail-mta/qmail/qmail-1.03-r16.ebuild,v 1.24 2005/07/13 10:57:26 hansmi Exp $
+# $Header: /var/cvsroot/gentoo-x86/mail-mta/qmail/qmail-1.03-r16.ebuild,v 1.25 2005/07/14 21:35:24 hansmi Exp $
inherit toolchain-funcs eutils fixheadtails flag-o-matic
@@ -244,9 +244,11 @@ src_unpack() {
epatch ${FILESDIR}/${PVR}/qmail-1.03-env-servercert.patch
# Log invalid envelope senders (MAIL FROM:)
- EPATCH_SINGLE_MSG="Log invalid envelope senders" \
epatch ${FILESDIR}/${PVR}/invalid-envelope-sender-log.patch
+ # See bug 98961
+ epatch ${FILESDIR}/${PVR}/virtual-domain-outgoing-IP-address.patch
+
# See bug #90631
if use logmail; then
EPATCH_SINGLE_MSG='Enabling logging of all mails via ~alias/.qmail-log' \