Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Feb 2011 02:19:05 GMT
From:      Aragon Gouveia <aragon@phat.za.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/154924: [patch] mail/ssmtp upgrade to 2.64
Message-ID:  <201102210219.p1L2J5aO041164@red.freebsd.org>
Resent-Message-ID: <201102210220.p1L2K9Fv073032@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         154924
>Category:       ports
>Synopsis:       [patch] mail/ssmtp upgrade to 2.64
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Mon Feb 21 02:20:09 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Aragon Gouveia
>Release:        8.1-STABLE
>Organization:
>Environment:
FreeBSD igor.geek.sh 8.1-STABLE FreeBSD 8.1-STABLE #0: Sat Jul 24 19:06:08 SAST 2010     toor@igor.geek.sh:/usr/obj/usr/src/sys/IGOR  amd64

>Description:
Attached patch updates mail/ssmtp to latest stable version, 2.64.

Other changes:

* Restyle port to use options framework plus other style changes.
* Remove MD5 authentication knob - enabled by default now.
* Add X-Originating-IP knob with patch from upstream.
* Add ssmtp.conf.5 man page to installation.

>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -uNr ssmtp/Makefile ssmtp.new/Makefile
--- ssmtp/Makefile	2010-07-09 21:13:47.000000000 +0200
+++ ssmtp.new/Makefile	2011-02-21 04:10:28.000000000 +0200
@@ -6,46 +6,48 @@
 #
 
 PORTNAME=	ssmtp
-PORTVERSION=	2.62.3
+PORTVERSION=	2.64
 CATEGORIES=	mail ipv6
 MASTER_SITES=	${MASTER_SITE_DEBIAN_POOL}
-DISTNAME=	${PORTNAME}_2.62.orig
+DISTFILES=	${PORTNAME}_${PORTVERSION}.orig${EXTRACT_SUFX}
 
 MAINTAINER=	aragon@phat.za.net
 COMMENT=	Extremely simple MTA to get mail off the system to a mail hub
 
-WRKSRC=		${WRKDIR}/${PORTNAME}
-
+USE_BZIP2=	yes
 USE_OPENSSL=	yes
-
 GNU_CONFIGURE=	yes
 USE_GMAKE=	yes
+GROUPS=		ssmtp
+SHAREGRP=	ssmtp
+BINMODE=	2555
+SHAREMODE=	640
+BINGRP=		ssmtp
+
+SUB_FILES+=	pkg-message
+PKGMESSAGE=	${WRKDIR}/pkg-message
+CONFIGURE_ARGS=	--enable-ssl --enable-md5auth
 MAKE_ENV+=	TARGET_ARCH=
-
-SSMTP_GROUP=	ssmtp
-SSMTP_GID=	916
-
-SUB_FILES=	pkg-install pkg-deinstall pkg-message
-SUB_LIST+=	SSMTP_GROUP="${SSMTP_GROUP}" \
-		SSMTP_GID="${SSMTP_GID}" \
-		ETCDIR="${ETCDIR}" \
-		CHOWN="${CHOWN}" CHMOD="${CHMOD}" PW="${PW}"
-
-CONFIGURE_ARGS=	--enable-ssl
 CFLAGS+=	-I${OPENSSLINC}
 LDFLAGS+=	-L${OPENSSLLIB}
 MAILERCONF=	/etc/mail/mailer.conf
 
 MAN8=		ssmtp.8
+MAN5=		ssmtp.conf.5
+
+OPTIONS=	LOGFILE		"Enable log file" off \
+		IPV6		"Enable IPv6 support" on \
+		USERPREFS	"Enable user defined revaliases" on \
+		XORIGIP		"Add X-Originating-IP header" on \
 
-.include <bsd.port.pre.mk>
+.include <bsd.port.options.mk>
 
 .if defined(WITH_LOGFILE)
 CONFIGURE_ARGS+=	--enable-logfile
 .endif
 
-.if defined(WITH_MD5AUTH)
-CONFIGURE_ARGS+=	--enable-md5auth
+.if defined(WITH_XORIGIP)
+EXTRA_PATCHES=	${FILESDIR}/remote-addr.patch
 .endif
 
 .if !defined(WITHOUT_IPV6)
@@ -73,14 +75,15 @@
 	@${ECHO_CMD} "hoststat	/usr/bin/true" >> ${MAILERCONF}
 	@${ECHO_CMD} "purgestat	/usr/bin/true" >> ${MAILERCONF}
 
-pre-su-install:
-	@${SETENV} ${SCRIPTS_ENV} PKG_PREFIX=${PREFIX} \
-		${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL
-
-post-install:
-	@${SETENV} ${SCRIPTS_ENV} PKG_PREFIX=${PREFIX} \
-		${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
-
+do-install:
+	@${INSTALL_PROGRAM} ${WRKSRC}/ssmtp ${PREFIX}/sbin/ssmtp
+	@${MKDIR} ${PREFIX}/etc/ssmtp
+	@${CHMOD} 750 ${PREFIX}/etc/ssmtp
+	@${CHGRP} ${SHAREGRP} ${PREFIX}/etc/ssmtp
+	@${INSTALL_DATA} ${WRKSRC}/revaliases ${PREFIX}/etc/ssmtp/revaliases.sample
+	@${INSTALL_DATA} ${WRKSRC}/ssmtp.conf ${PREFIX}/etc/ssmtp/ssmtp.conf.sample
+	@${INSTALL_MAN} ${WRKSRC}/ssmtp.8 ${MANPREFIX}/man/man8/ssmtp.8
+	@${INSTALL_MAN} ${WRKSRC}/ssmtp.conf.5 ${MANPREFIX}/man/man5/ssmtp.conf.5
 	@${CAT} ${PKGMESSAGE}
 
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff -uNr ssmtp/distinfo ssmtp.new/distinfo
--- ssmtp/distinfo	2011-01-26 12:56:30.000000000 +0200
+++ ssmtp.new/distinfo	2011-02-21 01:43:51.000000000 +0200
@@ -1,2 +1,2 @@
-SHA256 (ssmtp_2.62.orig.tar.gz) = e2a0a5379cd0bbb0b4b0304abeba7a8f60aa85275982c5d7930c319e7f284ed1
-SIZE (ssmtp_2.62.orig.tar.gz) = 57127
+SHA256 (ssmtp_2.64.orig.tar.bz2) = 22c37dc90c871e8e052b2cab0ad219d010fa938608cd66b21c8f3c759046fa36
+SIZE (ssmtp_2.64.orig.tar.bz2) = 52501
diff -uNr ssmtp/files/patch-Makefile.in ssmtp.new/files/patch-Makefile.in
--- ssmtp/files/patch-Makefile.in	2009-12-04 02:27:58.000000000 +0200
+++ ssmtp.new/files/patch-Makefile.in	1970-01-01 02:00:00.000000000 +0200
@@ -1,22 +0,0 @@
---- Makefile.in.orig	Mon Apr  7 02:22:53 2003
-+++ Makefile.in	Mon Apr  7 02:31:44 2003
-@@ -17,8 +17,8 @@
- CONFIGURATION_FILE=$(SSMTPCONFDIR)/ssmtp.conf
- REVALIASES_FILE=$(SSMTPCONFDIR)/revaliases
- 
--INSTALLED_CONFIGURATION_FILE=$(CONFIGURATION_FILE)
--INSTALLED_REVALIASES_FILE=$(REVALIASES_FILE)
-+INSTALLED_CONFIGURATION_FILE=$(CONFIGURATION_FILE).sample
-+INSTALLED_REVALIASES_FILE=$(REVALIASES_FILE).sample
- 
- # Programs
- GEN_CONFIG=$(srcdir)/generate_config
-@@ -51,7 +51,7 @@
- 	$(INSTALL) -m 644 $(srcdir)/ssmtp.8 $(mandir)/ssmtp.8
- 	$(INSTALL) -d -m 755 $(SSMTPCONFDIR)
- 	$(INSTALL) -m 644 $(srcdir)/revaliases $(INSTALLED_REVALIASES_FILE)
--	$(GEN_CONFIG) $(INSTALLED_CONFIGURATION_FILE)
-+	$(INSTALL) -m 644 $(srcdir)/ssmtp.conf $(INSTALLED_CONFIGURATION_FILE)
- 
- 
- .PHONY: install-sendmail
diff -uNr ssmtp/files/patch-md5auth-hmac_md5.c ssmtp.new/files/patch-md5auth-hmac_md5.c
--- ssmtp/files/patch-md5auth-hmac_md5.c	2009-12-04 02:28:06.000000000 +0200
+++ ssmtp.new/files/patch-md5auth-hmac_md5.c	2011-02-21 02:27:53.000000000 +0200
@@ -1,12 +1,11 @@
---- md5auth/hmac_md5.c.orig	2009-11-01 23:54:54.000000000 +0200
-+++ md5auth/hmac_md5.c	2009-11-01 23:55:07.000000000 +0200
+--- md5auth/hmac_md5.c.orig	2009-11-23 11:45:41.000000000 +0200
++++ md5auth/hmac_md5.c	2011-02-21 02:27:21.000000000 +0200
 @@ -1,7 +1,7 @@
- #include "global.h"
--#include "md5.h"
  #include <string.h>
  #include <sys/types.h>
+ #include "global.h"
+-#include "md5.h"
 +#include <md5.h>
  
  /*
  ** Function: hmac_md5 (RFC 2104)
-
diff -uNr ssmtp/files/patch-ssmtp.c ssmtp.new/files/patch-ssmtp.c
--- ssmtp/files/patch-ssmtp.c	2009-12-07 23:49:51.000000000 +0200
+++ ssmtp.new/files/patch-ssmtp.c	2011-02-21 02:59:13.000000000 +0200
@@ -1,14 +1,5 @@
---- ssmtp.c.orig	2008-03-06 22:01:22.000000000 +0200
-+++ ssmtp.c	2009-12-04 02:22:14.000000000 +0200
-@@ -10,7 +10,7 @@
-  See COPYRIGHT for the license
- 
- */
--#define VERSION "2.62"
-+#define VERSION "2.62.3"
- #define _GNU_SOURCE
- 
- #include <sys/socket.h>
+--- ssmtp.c.orig	2009-11-23 11:55:11.000000000 +0200
++++ ssmtp.c	2011-02-21 02:56:10.000000000 +0200
 @@ -25,6 +25,7 @@
  #include <string.h>
  #include <ctype.h>
@@ -111,48 +102,16 @@
  	}
  	(void)strip_post_ws(p);
  
-@@ -347,28 +366,26 @@
- /*
- standardise() -- Trim off '\n's and double leading dots
- */
--void standardise(char *str)
-+bool_t standardise(char *str, bool_t *linestart)
- {
- 	size_t sl;
- 	char *p;
--
--	if((p = strchr(str, '\n'))) {
--		*p = (char)NULL;
--	}
-+	bool_t leadingdot = False;
- 
- 	/* Any line beginning with a dot has an additional dot inserted;
--	not just a line consisting solely of a dot. Thus we have to slide
--	the buffer down one */
--	sl = strlen(str);
-+	not just a line consisting solely of a dot. Thus we have to move
-+	the buffer start up one */
- 
--	if(*str == '.') {
--		if((sl + 2) > BUF_SZ) {
--			die("standardise() -- Buffer overflow");
--		}
--		(void)memmove((str + 1), str, (sl + 1));	/* Copy trailing \0 */
-+	if(*linestart && *str == '.') {
-+		leadingdot = True;
-+	}
-+	*linestart = False;
+@@ -363,7 +382,7 @@
+ 	*linestart = False;
  
--		*str = '.';
-+	if((p = strchr(str, '\n'))) {
+ 	if((p = strchr(str, '\n'))) {
+-		*p = (char)NULL;
 +		*p = '\0';
-+		*linestart = True;
+ 		*linestart = True;
  	}
-+	return(leadingdot);
- }
- 
- /*
-@@ -386,7 +403,7 @@
+ 	return(leadingdot);
+@@ -384,7 +403,7 @@
  		while(fgets(buf, sizeof(buf), fp)) {
  			/* Make comments invisible */
  			if((p = strchr(buf, '#'))) {
@@ -161,19 +120,7 @@
  			}
  
  			/* Ignore malformed lines and comments */
-@@ -485,6 +502,11 @@
- 				die("from_format() -- snprintf() failed");
- 			}
- 		}
-+		else {
-+			if(snprintf(buf, BUF_SZ, "%s", str) == -1) {
-+				die("from_format() -- snprintf() failed");
-+			}
-+		}
- 	}
- 
- #if 0
-@@ -516,11 +538,11 @@
+@@ -519,11 +543,11 @@
  #endif
  
  	/* Ignore missing usernames */
@@ -187,7 +134,7 @@
  		die("rcpt_save() -- strdup() failed");
  	}
  
-@@ -545,7 +567,7 @@
+@@ -548,7 +572,7 @@
  	(void)fprintf(stderr, "*** rcpt_parse(): str = [%s]\n", str);
  #endif
  
@@ -196,7 +143,7 @@
  		die("rcpt_parse(): strdup() failed");
  	}
  	q = p;
-@@ -573,7 +595,7 @@
+@@ -576,7 +600,7 @@
  		}
  
  		/* End of string? */
@@ -205,7 +152,7 @@
  			got_addr = True;
  		}
  
-@@ -581,7 +603,7 @@
+@@ -584,7 +608,7 @@
  		if((*q == ',') && (in_quotes == False)) {
  			got_addr = True;
  
@@ -214,7 +161,7 @@
  		}
  
  		if(got_addr) {
-@@ -665,7 +687,7 @@
+@@ -668,7 +692,7 @@
  	(void)fprintf(stderr, "header_save(): str = [%s]\n", str);
  #endif
  
@@ -223,7 +170,7 @@
  		die("header_save() -- strdup() failed");
  	}
  	ht->string = p;
-@@ -673,7 +695,7 @@
+@@ -676,7 +700,7 @@
  	if(strncasecmp(ht->string, "From:", 5) == 0) {
  #if 1
  		/* Hack check for NULL From: line */
@@ -232,7 +179,7 @@
  			return;
  		}
  #endif
-@@ -736,19 +758,19 @@
+@@ -739,19 +763,19 @@
  void header_parse(FILE *stream)
  {
  	size_t size = BUF_SZ, len = 0;
@@ -256,7 +203,7 @@
  				die("header_parse() -- realloc() failed");
  			}
  			q = (p + len);
-@@ -773,9 +795,9 @@
+@@ -776,9 +800,9 @@
  						in_header = False;
  
  				default:
@@ -268,7 +215,7 @@
  						}
  						header_save(p);
  
-@@ -806,9 +828,9 @@
+@@ -809,9 +833,9 @@
  						in_header = False;
  
  				default:
@@ -280,7 +227,7 @@
  						}
  						header_save(p);
  
-@@ -873,11 +895,11 @@
+@@ -876,11 +900,11 @@
  		char *rightside;
  		/* Make comments invisible */
  		if((p = strchr(buf, '#'))) {
@@ -294,7 +241,7 @@
  
  		/* Parse out keywords */
  		p=firsttok(&begin, "= \t\n");
-@@ -887,7 +909,7 @@
+@@ -890,7 +914,7 @@
  		}
  		if(p && q) {
  			if(strcasecmp(p, "Root") == 0) {
@@ -303,16 +250,16 @@
  					die("parse_config() -- strdup() failed");
  				}
  
-@@ -896,7 +918,7 @@
+@@ -904,7 +928,7 @@
+ 					port = atoi(r);
  				}
- 			}
- 			else if(strcasecmp(p, "MailHub") == 0) {
+ 
 -				if((mailhost = strdup(q)) == (char *)NULL) {
 +				if((mailhost = strdup(q)) == NULL) {
  					die("parse_config() -- strdup() failed");
  				}
  
-@@ -946,7 +968,7 @@
+@@ -949,7 +973,7 @@
  					mail_domain = strdup(q);
  				}
  
@@ -321,7 +268,7 @@
  					die("parse_config() -- strdup() failed");
  				}
  				rewrite_domain = True;
-@@ -1022,7 +1044,7 @@
+@@ -1025,7 +1049,7 @@
  				}
  			}
  			else if(strcasecmp(p, "TLSCert") == 0) {
@@ -330,7 +277,7 @@
  					die("parse_config() -- strdup() failed");
  				}
  
-@@ -1033,7 +1055,7 @@
+@@ -1036,7 +1060,7 @@
  #endif
  			/* Command-line overrides these */
  			else if(strcasecmp(p, "AuthUser") == 0 && !auth_user) {
@@ -339,7 +286,7 @@
  					die("parse_config() -- strdup() failed");
  				}
  
-@@ -1042,7 +1064,7 @@
+@@ -1045,7 +1069,7 @@
  				}
  			}
  			else if(strcasecmp(p, "AuthPass") == 0 && !auth_pass) {
@@ -348,7 +295,7 @@
  					die("parse_config() -- strdup() failed");
  				}
  
-@@ -1051,7 +1073,7 @@
+@@ -1054,7 +1078,7 @@
  				}
  			}
  			else if(strcasecmp(p, "AuthMethod") == 0 && !auth_method) {
@@ -357,7 +304,7 @@
  					die("parse_config() -- strdup() failed");
  				}
  
-@@ -1104,11 +1126,11 @@
+@@ -1107,11 +1131,11 @@
  #ifdef INET6
  	struct addrinfo hints, *ai0, *ai;
  	char servname[NI_MAXSERV];
@@ -366,12 +313,12 @@
  #else
  	struct sockaddr_in name;
  	struct hostent *hent;
--	int s, namelen;
-+	int s = -1, namelen;
+-	int i, s, namelen;
++	int i, s = -1, namelen;
  #endif
  
  #ifdef HAVE_SSL
-@@ -1301,7 +1323,7 @@
+@@ -1310,7 +1334,7 @@
  			buf[i++] = c;
  		}
  	}
@@ -380,43 +327,7 @@
  
  	return(buf);
  }
-@@ -1356,12 +1378,12 @@
- */
- ssize_t smtp_write(int fd, char *format, ...)
- {
--	char buf[(BUF_SZ + 1)];
-+	char buf[(BUF_SZ + 2)];
- 	va_list ap;
- 	ssize_t outbytes = 0;
- 
- 	va_start(ap, format);
--	if(vsnprintf(buf, (BUF_SZ - 2), format, ap) == -1) {
-+	if(vsnprintf(buf, (BUF_SZ - 1), format, ap) == -1) {
- 		die("smtp_write() -- vsnprintf() failed");
- 	}
- 	va_end(ap);
-@@ -1399,16 +1421,18 @@
- */
- int ssmtp(char *argv[])
- {
--	char buf[(BUF_SZ + 1)], *p, *q;
-+	char b[(BUF_SZ + 2)], *buf = b+1, *p, *q;
- #ifdef MD5AUTH
- 	char challenge[(BUF_SZ + 1)];
- #endif
- 	struct passwd *pw;
- 	int i, sock;
- 	uid_t uid;
--	bool_t minus_v_save;
-+	bool_t minus_v_save, leadingdot, linestart = True;
- 	int timeout = 0;
-+	int bufsize = sizeof(b)-1;
- 
-+	b[0] = '.';
- 	outbytes = 0;
- 	ht = &headers;
- 
-@@ -1423,14 +1447,14 @@
+@@ -1434,14 +1458,14 @@
  	}
  
  	if((p = strtok(pw->pw_gecos, ";,"))) {
@@ -433,7 +344,7 @@
  		uad = append_domain(pw->pw_name);
  	}
  
-@@ -1478,7 +1502,7 @@
+@@ -1489,7 +1513,7 @@
  	/* Try to log in if username was supplied */
  	if(auth_user) {
  #ifdef MD5AUTH
@@ -442,93 +353,7 @@
  			auth_pass = strdup("");
  		}
  
-@@ -1491,12 +1515,12 @@
- 			}
- 			strncpy(challenge, strchr(buf,' ') + 1, sizeof(challenge));
- 
--			memset(buf, 0, sizeof(buf));
-+			memset(buf, 0, bufsize);
- 			crammd5(challenge, auth_user, auth_pass, buf);
- 		}
- 		else {
- #endif
--		memset(buf, 0, sizeof(buf));
-+		memset(buf, 0, bufsize);
- 		to64frombits(buf, auth_user, strlen(auth_user));
- 		if (use_oldauth) {
- 			outbytes += smtp_write(sock, "AUTH LOGIN %s", buf);
-@@ -1508,7 +1532,7 @@
- 				die("Server didn't like our AUTH LOGIN (%s)", buf);
- 			}
- 			/* we assume server asked us for Username */
--			memset(buf, 0, sizeof(buf));
-+			memset(buf, 0, bufsize);
- 			to64frombits(buf, auth_user, strlen(auth_user));
- 			outbytes += smtp_write(sock, buf);
- 		}
-@@ -1517,7 +1541,7 @@
- 		if(smtp_read(sock, buf) != 3) {
- 			die("Server didn't accept AUTH LOGIN (%s)", buf);
- 		}
--		memset(buf, 0, sizeof(buf));
-+		memset(buf, 0, bufsize);
- 
- 		to64frombits(buf, auth_pass, strlen(auth_pass));
- #ifdef MD5AUTH
-@@ -1626,28 +1650,40 @@
- 	  stdio functions like fgets in the first place */
- 	fcntl(STDIN_FILENO,F_SETFL,O_NONBLOCK);
- 
--	/* don't hang forever when reading from stdin */
--	while(!feof(stdin) && timeout < MEDWAIT) {
--		if (!fgets(buf, sizeof(buf), stdin)) {
-+	while(!feof(stdin)) {
-+		if (!fgets(buf, bufsize, stdin)) {
- 			/* if nothing was received, then no transmission
- 			 * over smtp should be done */
- 			sleep(1);
--			timeout++;
-+			/* don't hang forever when reading from stdin */
-+			if (++timeout >= MEDWAIT) {
-+				log_event(LOG_ERR, "killed: timeout on stdin while reading body -- message saved to dead.letter.");
-+				die("Timeout on stdin while reading body");
-+			}
- 			continue;
- 		}
- 		/* Trim off \n, double leading .'s */
--		standardise(buf);
--
--		outbytes += smtp_write(sock, "%s", buf);
-+		leadingdot = standardise(buf, &linestart);
- 
-+		if (linestart || feof(stdin)) {
-+			linestart = True;
-+			outbytes += smtp_write(sock, "%s", leadingdot ? b : buf);
-+		} else {
-+			if (log_level > 0) {
-+				log_event(LOG_INFO, "Sent a very long line in chunks");
-+			}
-+			if (leadingdot) {
-+				outbytes += fd_puts(sock, b, sizeof(b));
-+			} else {
-+				outbytes += fd_puts(sock, buf, bufsize);
-+			}
-+		}
- 		(void)alarm((unsigned) MEDWAIT);
- 	}
--	/* End of body */
--
--	if (timeout >= MEDWAIT) {
--		log_event(LOG_ERR, "killed: timeout on stdin while reading body -- message saved to dead.letter.");
--		die("Timeout on stdin while reading body");
-+	if(!linestart) {
-+		smtp_write(sock, "");
- 	}
-+	/* End of body */
- 
- 	outbytes += smtp_write(sock, ".");
- 	(void)alarm((unsigned) MAXWAIT);
-@@ -1714,7 +1750,7 @@
+@@ -1737,7 +1761,7 @@
  		j = 0;
  
  		add = 1;
@@ -537,7 +362,7 @@
  			switch(argv[i][j]) {
  #ifdef INET6
  			case '6':
-@@ -1732,14 +1768,14 @@
+@@ -1755,14 +1779,14 @@
  					if((!argv[i][(j + 1)])
  						&& argv[(i + 1)]) {
  						auth_user = strdup(argv[i+1]);
@@ -554,7 +379,7 @@
  							die("parse_options() -- strdup() failed");
  						}
  					}
-@@ -1749,14 +1785,14 @@
+@@ -1772,14 +1796,14 @@
  					if((!argv[i][(j + 1)])
  						&& argv[(i + 1)]) {
  						auth_pass = strdup(argv[i+1]);
@@ -571,7 +396,7 @@
  							die("parse_options() -- strdup() failed");
  						}
  					}
-@@ -1847,14 +1883,14 @@
+@@ -1870,14 +1894,14 @@
  			case 'F':
  				if((!argv[i][(j + 1)]) && argv[(i + 1)]) {
  					minus_F = strdup(argv[(i + 1)]);
@@ -588,7 +413,7 @@
  						die("parse_options() -- strdup() failed");
  					}
  				}
-@@ -1866,14 +1902,14 @@
+@@ -1889,14 +1913,14 @@
  			case 'r':
  				if((!argv[i][(j + 1)]) && argv[(i + 1)]) {
  					minus_f = strdup(argv[(i + 1)]);
diff -uNr ssmtp/files/pkg-deinstall.in ssmtp.new/files/pkg-deinstall.in
--- ssmtp/files/pkg-deinstall.in	2009-12-04 02:27:58.000000000 +0200
+++ ssmtp.new/files/pkg-deinstall.in	1970-01-01 02:00:00.000000000 +0200
@@ -1,21 +0,0 @@
-#!/bin/sh
-PATH="/bin:/sbin:/usr/bin:/usr/sbin"
-
-SSMTP_GROUP=%%SSMTP_GROUP%%
-
-PW=%%PW%%
-
-if [ "$2" = "DEINSTALL" ]; then
-
-	if ${PW} groupshow ${SSMTP_GROUP} 2>/dev/null 1>&2; then
-		if ${PW} groupdel -n ${SSMTP_GROUP}; then
-			echo "=> Removed group \"${SSMTP_GROUP}\"."
-		else
-			echo "=> Removal of group \"${SSMTP_GROUP}\" failed..."
-			exit 1
-		fi
-	fi
-
-fi
-
-exit 0
diff -uNr ssmtp/files/pkg-install.in ssmtp.new/files/pkg-install.in
--- ssmtp/files/pkg-install.in	2009-12-04 02:27:58.000000000 +0200
+++ ssmtp.new/files/pkg-install.in	1970-01-01 02:00:00.000000000 +0200
@@ -1,33 +0,0 @@
-#!/bin/sh
-PATH="/bin:/sbin:/usr/bin:/usr/sbin"
-
-SSMTP_GROUP=%%SSMTP_GROUP%%
-GID=%%SSMTP_GID%%
-
-ETCDIR=%%ETCDIR%%
-CHOWN=%%CHOWN%%
-CHMOD=%%CHMOD%%
-PW=%%PW%%
-
-if [ "$2" = "PRE-INSTALL" ]; then
-
-	if ! ${PW} groupshow ${SSMTP_GROUP} 2>/dev/null 1>&2; then
-		if ${PW} groupadd ${SSMTP_GROUP} -g $GID; then
-			echo "=> Added group \"${SSMTP_GROUP}\"."
-		else
-			echo "=> Adding group \"${SSMTP_GROUP}\" failed..."
-			exit 1
-		fi
-	fi
-
-elif [ "$2" = "POST-INSTALL" ]; then
-
-	${CHOWN} root:${SSMTP_GROUP} ${PKG_PREFIX}/sbin/ssmtp
-	${CHMOD} g+s ${PKG_PREFIX}/sbin/ssmtp
-	${CHOWN} -R root:${SSMTP_GROUP} ${ETCDIR}
-	${CHMOD} 750 ${ETCDIR}
-	${CHMOD} 640 ${ETCDIR}/*
-
-fi
-
-exit 0
diff -uNr ssmtp/files/remote-addr.patch ssmtp.new/files/remote-addr.patch
--- ssmtp/files/remote-addr.patch	1970-01-01 02:00:00.000000000 +0200
+++ ssmtp.new/files/remote-addr.patch	2011-02-21 03:03:15.000000000 +0200
@@ -0,0 +1,26 @@
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=557741
+
+Patch by Victor Sudakov <sudakov@sibptus.tomsk.ru>
+Modified by Anibal Monsalve Salazar <anibal@debian.org>
+
+--- ssmtp.c.orig	2009-11-23 20:55:11.000000000 +1100
++++ ssmtp.c	2009-11-24 13:27:58.000000000 +1100
+@@ -1409,6 +1409,7 @@
+ int ssmtp(char *argv[])
+ {
+ 	char b[(BUF_SZ + 2)], *buf = b+1, *p, *q;
++	char *remote_addr;
+ #ifdef MD5AUTH
+ 	char challenge[(BUF_SZ + 1)];
+ #endif
+@@ -1612,6 +1613,10 @@
+ 		outbytes += smtp_write(sock, "From: %s", from);
+ 	}
+ 
++	if(remote_addr=getenv("REMOTE_ADDR")) {
++		outbytes += smtp_write(sock, "X-Originating-IP: %s", remote_addr);
++	}
++
+ 	if(have_date == False) {
+ 		outbytes += smtp_write(sock, "Date: %s", arpadate);
+ 	}


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102210219.p1L2J5aO041164>