summaryrefslogtreecommitdiff
path: root/package/ssmtp
diff options
context:
space:
mode:
authorwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
committerwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
commit219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch)
treeb9c0f3c43aebba2fcfef777592d0add39f2072f4 /package/ssmtp
Initial import
Diffstat (limited to 'package/ssmtp')
-rw-r--r--package/ssmtp/Config.in13
-rw-r--r--package/ssmtp/Makefile30
-rw-r--r--package/ssmtp/ipkg/ssmtp.conffiles2
-rw-r--r--package/ssmtp/ipkg/ssmtp.control4
-rw-r--r--package/ssmtp/patches/500-debian-subset-2.61-2.patch248
-rw-r--r--package/ssmtp/patches/901-strftime_space_padding.patch12
6 files changed, 309 insertions, 0 deletions
diff --git a/package/ssmtp/Config.in b/package/ssmtp/Config.in
new file mode 100644
index 000000000..b4bff1c34
--- /dev/null
+++ b/package/ssmtp/Config.in
@@ -0,0 +1,13 @@
+config ADK_PACKAGE_SSMTP
+ prompt "ssmtp............................. A minimal and secure mail sender"
+ tristate
+ default n
+ help
+ A secure, effective and simple way of getting mail off a system to your
+ mail hub. It contains no suid-binaries or other dangerous things - no
+ mail spool to poke around in, and no daemons running in the background.
+ Mail is simply forwarded to the configured mailhost. Extremely easy
+ configuration.
+
+ http://packages.debian.org/stable/mail/ssmtp
+
diff --git a/package/ssmtp/Makefile b/package/ssmtp/Makefile
new file mode 100644
index 000000000..54db35b66
--- /dev/null
+++ b/package/ssmtp/Makefile
@@ -0,0 +1,30 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${TOPDIR}/rules.mk
+
+PKG_NAME:= ssmtp
+PKG_VERSION:= 2.61
+PKG_RELEASE:= 1
+PKG_MD5SUM:= 957e6fff08625fe34f4fc33d0925bbc9
+MASTER_SITES:= http://ftp.debian.org/debian/pool/main/s/ssmtp/
+DISTFILES:= ${PKG_NAME}_${PKG_VERSION}.orig.tar.gz
+
+include ${TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,SSMTP,ssmtp,${PKG_VERSION}-${PKG_RELEASE},${ARCH}))
+
+CONFIGURE_STYLE:= gnu
+BUILD_STYLE:= auto
+
+do-install:
+ ${INSTALL_DIR} ${IDIR_SSMTP}/etc/ssmtp
+ ${INSTALL_DIR} ${IDIR_SSMTP}/usr/sbin
+ ${INSTALL_DATA} ${WRKBUILD}/ssmtp.conf ${IDIR_SSMTP}/etc/ssmtp/
+ ${INSTALL_DATA} ${WRKBUILD}/revaliases ${IDIR_SSMTP}/etc/ssmtp/
+ ${INSTALL_BIN} ${WRKBUILD}/ssmtp ${IDIR_SSMTP}/usr/sbin/
+ ln -sf ssmtp ${IDIR_SSMTP}/usr/sbin/sendmail
+
+include ${TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/ssmtp/ipkg/ssmtp.conffiles b/package/ssmtp/ipkg/ssmtp.conffiles
new file mode 100644
index 000000000..d1da3e179
--- /dev/null
+++ b/package/ssmtp/ipkg/ssmtp.conffiles
@@ -0,0 +1,2 @@
+/etc/ssmtp/ssmtp.conf
+/etc/ssmtp/revaliases
diff --git a/package/ssmtp/ipkg/ssmtp.control b/package/ssmtp/ipkg/ssmtp.control
new file mode 100644
index 000000000..ec9360059
--- /dev/null
+++ b/package/ssmtp/ipkg/ssmtp.control
@@ -0,0 +1,4 @@
+Package: ssmtp
+Priority: optional
+Section: net
+Description: A minimal and secure mail sender
diff --git a/package/ssmtp/patches/500-debian-subset-2.61-2.patch b/package/ssmtp/patches/500-debian-subset-2.61-2.patch
new file mode 100644
index 000000000..f682c97a1
--- /dev/null
+++ b/package/ssmtp/patches/500-debian-subset-2.61-2.patch
@@ -0,0 +1,248 @@
+--- ssmtp-2.61.orig/ssmtp.conf
++++ ssmtp-2.61/ssmtp.conf
+@@ -36,3 +36,8 @@
+
+ # Use this RSA certificate.
+ #TLSCert=/etc/ssl/certs/ssmtp.pem
++
++# Get enhanced (*really* enhanced) debugging information in the logs
++# If you want to have debugging of the config file parsing, move this option
++# to the top of the config file and uncomment
++#Debug=YES
+--- ssmtp-2.61.orig/ssmtp.c
++++ ssmtp-2.61/ssmtp.c
+@@ -93,6 +93,7 @@
+ static char hextab[]="0123456789abcdef";
+ #endif
+
++ssize_t outbytes;
+
+ /*
+ log_event() -- Write event to syslog (or log file if defined)
+@@ -129,7 +130,7 @@
+ #endif
+ }
+
+-void smtp_write(int fd, char *format, ...);
++ssize_t smtp_write(int fd, char *format, ...);
+ int smtp_read(int fd, char *response);
+ int smtp_read_all(int fd, char *response);
+ int smtp_okay(int fd, char *response);
+@@ -150,7 +151,7 @@
+ if(isatty(fileno(stdin))) {
+ if(log_level > 0) {
+ log_event(LOG_ERR,
+- "stdin is a TTY - not saving to %s/dead.letter, pw->pw_dir");
++ "stdin is a TTY - not saving to %s/dead.letter", pw->pw_dir);
+ }
+ return;
+ }
+@@ -964,6 +965,17 @@
+ log_event(LOG_INFO, "Set AuthMethod=\"%s\"\n", auth_method);
+ }
+ }
++ else if (strcasecmp(p, "Debug") == 0)
++ {
++ if (strcasecmp(q, "YES") == 0)
++ {
++ log_level = 1;
++ }
++ else
++ {
++ log_level = 0;
++ }
++ }
+ else {
+ log_event(LOG_INFO, "Unable to set %s=\"%s\"\n", p, q);
+ }
+@@ -1232,10 +1244,11 @@
+ /*
+ smtp_write() -- A printf to an fd and append <CR/LF>
+ */
+-void smtp_write(int fd, char *format, ...)
++ssize_t smtp_write(int fd, char *format, ...)
+ {
+ char buf[(BUF_SZ + 1)];
+ va_list ap;
++ ssize_t outbytes = 0;
+
+ va_start(ap, format);
+ if(vsnprintf(buf, (BUF_SZ - 2), format, ap) == -1) {
+@@ -1252,7 +1265,9 @@
+ }
+ (void)strcat(buf, "\r\n");
+
+- (void)fd_puts(fd, buf, strlen(buf));
++ outbytes = fd_puts(fd, buf, strlen(buf));
++
++ return (outbytes >= 0) ? outbytes : 0;
+ }
+
+ /*
+@@ -1282,6 +1297,8 @@
+ int i, sock;
+ uid_t uid;
+
++ outbytes = 0;
++
+ uid = getuid();
+ if((pw = getpwuid(uid)) == (struct passwd *)NULL) {
+ die("Could not find password entry for UID %d", uid);
+@@ -1335,10 +1352,10 @@
+
+ /* If user supplied username and password, then try ELHO */
+ if(auth_user) {
+- smtp_write(sock, "EHLO %s", hostname);
++ outbytes += smtp_write(sock, "EHLO %s", hostname);
+ }
+ else {
+- smtp_write(sock, "HELO %s", hostname);
++ outbytes += smtp_write(sock, "HELO %s", hostname);
+ }
+ (void)alarm((unsigned) MEDWAIT);
+
+@@ -1354,7 +1371,7 @@
+ }
+
+ if(strcasecmp(auth_method, "cram-md5") == 0) {
+- smtp_write(sock, "AUTH CRAM-MD5");
++ outbytes += smtp_write(sock, "AUTH CRAM-MD5");
+ (void)alarm((unsigned) MEDWAIT);
+
+ if(smtp_read(sock, buf) != 3) {
+@@ -1369,7 +1386,7 @@
+ #endif
+ memset(buf, 0, sizeof(buf));
+ to64frombits(buf, auth_user, strlen(auth_user));
+- smtp_write(sock, "AUTH LOGIN %s", buf);
++ outbytes += smtp_write(sock, "AUTH LOGIN %s", buf);
+
+ (void)alarm((unsigned) MEDWAIT);
+ if(smtp_read(sock, buf) != 3) {
+@@ -1381,7 +1398,7 @@
+ #ifdef MD5AUTH
+ }
+ #endif
+- smtp_write(sock, "%s", buf);
++ outbytes += smtp_write(sock, "%s", buf);
+ (void)alarm((unsigned) MEDWAIT);
+
+ if(smtp_okay(sock, buf) == False) {
+@@ -1390,7 +1407,7 @@
+ }
+
+ /* Send "MAIL FROM:" line */
+- smtp_write(sock, "MAIL FROM:<%s>", uad);
++ outbytes += smtp_write(sock, "MAIL FROM:<%s>", uad);
+
+ (void)alarm((unsigned) MEDWAIT);
+
+@@ -1408,7 +1425,7 @@
+
+ while(rt->next) {
+ p = rcpt_remap(rt->string);
+- smtp_write(sock, "RCPT TO:<%s>", p);
++ outbytes += smtp_write(sock, "RCPT TO:<%s>", p);
+
+ (void)alarm((unsigned)MEDWAIT);
+
+@@ -1425,7 +1442,7 @@
+ while(p) {
+ /* RFC822 Address -> "foo@bar" */
+ q = rcpt_remap(addr_parse(p));
+- smtp_write(sock, "RCPT TO:<%s>", q);
++ outbytes += smtp_write(sock, "RCPT TO:<%s>", q);
+
+ (void)alarm((unsigned) MEDWAIT);
+
+@@ -1439,7 +1456,7 @@
+ }
+
+ /* Send DATA */
+- smtp_write(sock, "DATA");
++ outbytes += smtp_write(sock, "DATA");
+ (void)alarm((unsigned) MEDWAIT);
+
+ if(smtp_read(sock, buf) != 3) {
+@@ -1447,45 +1464,45 @@
+ die("%s", buf);
+ }
+
+- smtp_write(sock,
++ outbytes += smtp_write(sock,
+ "Received: by %s (sSMTP sendmail emulation); %s", hostname, arpadate);
+
+ if(have_from == False) {
+- smtp_write(sock, "From: %s", from);
++ outbytes += smtp_write(sock, "From: %s", from);
+ }
+
+ if(have_date == False) {
+- smtp_write(sock, "Date: %s", arpadate);
++ outbytes += smtp_write(sock, "Date: %s", arpadate);
+ }
+
+ #ifdef HASTO_OPTION
+ if(have_to == False) {
+- smtp_write(sock, "To: postmaster");
++ outbytes += smtp_write(sock, "To: postmaster");
+ }
+ #endif
+
+ ht = &headers;
+ while(ht->next) {
+- smtp_write(sock, "%s", ht->string);
++ outbytes += smtp_write(sock, "%s", ht->string);
+ ht = ht->next;
+ }
+
+ (void)alarm((unsigned) MEDWAIT);
+
+ /* End of headers, start body */
+- smtp_write(sock, "");
++ outbytes += smtp_write(sock, "");
+
+ while(fgets(buf, sizeof(buf), stdin)) {
+ /* Trim off \n, double leading .'s */
+ standardise(buf);
+
+- smtp_write(sock, "%s", buf);
++ outbytes += smtp_write(sock, "%s", buf);
+
+ (void)alarm((unsigned) MEDWAIT);
+ }
+ /* End of body */
+
+- smtp_write(sock, ".");
++ outbytes += smtp_write(sock, ".");
+ (void)alarm((unsigned) MAXWAIT);
+
+ if(smtp_okay(sock, buf) == 0) {
+@@ -1495,11 +1512,12 @@
+ /* Close conection */
+ (void)signal(SIGALRM, SIG_IGN);
+
+- smtp_write(sock, "QUIT");
++ outbytes += smtp_write(sock, "QUIT");
+ (void)smtp_okay(sock, buf);
+ (void)close(sock);
+
+- log_event(LOG_INFO, "Sent mail for %s (%s)", from_strip(uad), buf);
++ log_event(LOG_INFO, "Sent mail for %s (%s) uid=%d username=%s outbytes=%d",
++ from_strip(uad), buf, uid, pw->pw_name, outbytes);
+
+ return(0);
+ }
+--- ssmtp-2.61.orig/configure.in
++++ ssmtp-2.61/configure.in
+@@ -24,8 +24,8 @@
+ AC_STRUCT_TM
+
+ dnl Checks for libraries.
+-AC_CHECK_LIB(nsl, gethostname)
+-AC_CHECK_LIB(socket, socket)
++AC_SEARCH_LIBS(gethostname, nsl)
++AC_SEARCH_LIBS(socket, socket)
+
+ dnl Checks for library functions.
+ AC_TYPE_SIGNAL
diff --git a/package/ssmtp/patches/901-strftime_space_padding.patch b/package/ssmtp/patches/901-strftime_space_padding.patch
new file mode 100644
index 000000000..dd0b9b116
--- /dev/null
+++ b/package/ssmtp/patches/901-strftime_space_padding.patch
@@ -0,0 +1,12 @@
+diff -ruN ssmtp-2.60-old/arpadate.c ssmtp-2.60-new/arpadate.c
+--- ssmtp-2.60-old/arpadate.c 2002-12-08 18:30:11.000000000 +0100
++++ ssmtp-2.60-new/arpadate.c 2004-05-23 18:54:32.000000000 +0200
+@@ -79,7 +79,7 @@
+ time_t now;
+
+ /* RFC822 format string borrowed from GNU shellutils date.c */
+- const char *format = "%a, %_d %b %Y %H:%M:%S %z";
++ const char *format = "%a, %d %b %Y %H:%M:%S %z";
+
+ now = time(NULL);
+