Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Oct 2015 23:31:47 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r289123 - in head: contrib/dma contrib/dma/debian libexec/dma
Message-ID:  <201510102331.t9ANVlkY089138@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Sat Oct 10 23:31:47 2015
New Revision: 289123
URL: https://svnweb.freebsd.org/changeset/base/289123

Log:
  Update Dragonfly Mail Agent to v0.10

Deleted:
  head/contrib/dma/BSDmakefile
  head/contrib/dma/debian/
Modified:
  head/contrib/dma/LICENSE
  head/contrib/dma/README.markdown
  head/contrib/dma/TODO
  head/contrib/dma/VERSION
  head/contrib/dma/aliases_parse.y
  head/contrib/dma/aliases_scan.l
  head/contrib/dma/conf.c
  head/contrib/dma/dma-mbox-create.c
  head/contrib/dma/dma.8
  head/contrib/dma/dma.c
  head/contrib/dma/dma.h
  head/contrib/dma/dns.c
  head/contrib/dma/get-version.sh
  head/contrib/dma/local.c
  head/contrib/dma/mail.c
  head/contrib/dma/net.c
  head/contrib/dma/spool.c
  head/contrib/dma/util.c
  head/libexec/dma/Makefile.inc
Directory Properties:
  head/contrib/dma/   (props changed)

Modified: head/contrib/dma/LICENSE
==============================================================================
--- head/contrib/dma/LICENSE	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/LICENSE	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,5 +1,5 @@
+Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
 Copyright (c) 2008 The DragonFly Project.
-Copyright (c) 2008-2011, Simon Schubert <2@0x2c.org>.
 All rights reserved.
 
 This code is derived from software contributed to The DragonFly Project
@@ -37,7 +37,7 @@ OF THE USE OF THIS SOFTWARE, EVEN IF ADV
 SUCH DAMAGE.
 
 
-Copyright (c) 1995-2001 Kungliga Tekniska Högskolan
+Copyright (c) 1995-2001 Kungliga Tekniska Högskolan
 (Royal Institute of Technology, Stockholm, Sweden).
 All rights reserved.
 

Modified: head/contrib/dma/README.markdown
==============================================================================
--- head/contrib/dma/README.markdown	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/README.markdown	Sat Oct 10 23:31:47 2015	(r289123)
@@ -15,8 +15,13 @@ incoming connections.
 Building
 --------
 
+In Linux:
+
 	make
 
+In BSD:
+
+	cd bsd && make
 
 Installation
 ------------

Modified: head/contrib/dma/TODO
==============================================================================
--- head/contrib/dma/TODO	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/TODO	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,5 +1,4 @@
 - unquote/handle quoted local recipients
-- use proper sysexit codes
 - handle/use ESMTP extensions
 - .forward support
 - suggest way to run a queue flush on boot

Modified: head/contrib/dma/VERSION
==============================================================================
--- head/contrib/dma/VERSION	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/VERSION	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1 +1 @@
-v0.9
+v0.10

Modified: head/contrib/dma/aliases_parse.y
==============================================================================
--- head/contrib/dma/aliases_parse.y	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/aliases_parse.y	Sat Oct 10 23:31:47 2015	(r289123)
@@ -7,8 +7,6 @@
 
 extern int yylineno;
 static void yyerror(const char *);
-int yywrap(void);
-int yylex(void);
 
 static void
 yyerror(const char *msg)

Modified: head/contrib/dma/aliases_scan.l
==============================================================================
--- head/contrib/dma/aliases_scan.l	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/aliases_scan.l	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,11 +1,11 @@
 %{
 
 #include <string.h>
+#include "dma.h"
 #include "aliases_parse.h"
 
 #define YY_NO_INPUT
 
-int yylex(void);
 %}
 
 %option yylineno

Modified: head/contrib/dma/conf.c
==============================================================================
--- head/contrib/dma/conf.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/conf.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -64,7 +64,7 @@ trim_line(char *line)
 	if (line[0] == '.') {
 		if ((linelen + 2) > 1000) {
 			syslog(LOG_CRIT, "Cannot escape leading dot.  Buffer overflow");
-			exit(1);
+			exit(EX_DATAERR);
 		}
 		memmove((line + 1), line, (linelen + 1));
 		line[0] = '.';
@@ -101,7 +101,7 @@ parse_authfile(const char *path)
 
 	a = fopen(path, "r");
 	if (a == NULL) {
-		errlog(1, "can not open auth file `%s'", path);
+		errlog(EX_NOINPUT, "can not open auth file `%s'", path);
 		/* NOTREACHED */
 	}
 
@@ -121,7 +121,7 @@ parse_authfile(const char *path)
 
 		au = calloc(1, sizeof(*au));
 		if (au == NULL)
-			errlog(1, "calloc failed");
+			errlog(EX_OSERR, NULL);
 
 		data = strdup(line);
 		au->login = strsep(&data, "|");
@@ -131,8 +131,7 @@ parse_authfile(const char *path)
 		if (au->login == NULL ||
 		    au->host == NULL ||
 		    au->password == NULL) {
-			errlogx(1, "syntax error in authfile %s:%d",
-				path, lineno);
+			errlogx(EX_CONFIG, "syntax error in authfile %s:%d", path, lineno);
 			/* NOTREACHED */
 		}
 
@@ -160,7 +159,7 @@ parse_conf(const char *config_path)
 		/* Don't treat a non-existing config file as error */
 		if (errno == ENOENT)
 			return;
-		errlog(1, "can not open config `%s'", config_path);
+		errlog(EX_NOINPUT, "can not open config `%s'", config_path);
 		/* NOTREACHED */
 	}
 
@@ -211,7 +210,7 @@ parse_conf(const char *config_path)
 			} else {
 				host = data;
 			}
- 			if (host && *host == 0)
+			if (host && *host == 0)
 				host = NULL;
                         if (user && *user == 0)
                                 user = NULL;
@@ -232,13 +231,13 @@ parse_conf(const char *config_path)
 		else if (strcmp(word, "NULLCLIENT") == 0 && data == NULL)
 			config.features |= NULLCLIENT;
 		else {
-			errlogx(1, "syntax error in %s:%d", config_path, lineno);
+			errlogx(EX_CONFIG, "syntax error in %s:%d", config_path, lineno);
 			/* NOTREACHED */
 		}
 	}
 
 	if ((config.features & NULLCLIENT) && config.smarthost == NULL) {
-		errlogx(1, "%s: NULLCLIENT requires SMARTHOST", config_path);
+		errlogx(EX_CONFIG, "%s: NULLCLIENT requires SMARTHOST", config_path);
 		/* NOTREACHED */
 	}
 

Modified: head/contrib/dma/dma-mbox-create.c
==============================================================================
--- head/contrib/dma/dma-mbox-create.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/dma-mbox-create.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2010 Simon Schubert <2@0x2c.org>
+ * Copyright (c) 2010-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
+ * by Simon Schubert <2@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -54,7 +54,7 @@
 
 
 static void
-logfail(const char *fmt, ...)
+logfail(int exitcode, const char *fmt, ...)
 {
 	int oerrno = errno;
 	va_list ap;
@@ -73,7 +73,7 @@ logfail(const char *fmt, ...)
 	else
 		syslog(LOG_ERR, errno ? "%m" : "unknown error");
 
-	exit(1);
+	exit(exitcode);
 }
 
 /*
@@ -98,21 +98,21 @@ main(int argc, char **argv)
 	errno = 0;
 	gr = getgrnam(DMA_GROUP);
 	if (!gr)
-		logfail("cannot find dma group `%s'", DMA_GROUP);
+		logfail(EX_CONFIG, "cannot find dma group `%s'", DMA_GROUP);
 
 	mail_gid = gr->gr_gid;
 
 	if (setgid(mail_gid) != 0)
-		logfail("cannot set gid to %d (%s)", mail_gid, DMA_GROUP);
+		logfail(EX_NOPERM, "cannot set gid to %d (%s)", mail_gid, DMA_GROUP);
 	if (getegid() != mail_gid)
-		logfail("cannot set gid to %d (%s), still at %d", mail_gid, DMA_GROUP, getegid());
+		logfail(EX_NOPERM, "cannot set gid to %d (%s), still at %d", mail_gid, DMA_GROUP, getegid());
 
 	/*
 	 * We take exactly one argument: the username.
 	 */
 	if (argc != 2) {
 		errno = 0;
-		logfail("no arguments");
+		logfail(EX_USAGE, "no arguments");
 	}
 	user = argv[1];
 
@@ -121,7 +121,7 @@ main(int argc, char **argv)
 	/* the username may not contain a pathname separator */
 	if (strchr(user, '/')) {
 		errno = 0;
-		logfail("path separator in username `%s'", user);
+		logfail(EX_DATAERR, "path separator in username `%s'", user);
 		exit(1);
 	}
 
@@ -129,7 +129,7 @@ main(int argc, char **argv)
 	errno = 0;
 	pw = getpwnam(user);
 	if (!pw)
-		logfail("cannot find user `%s'", user);
+		logfail(EX_NOUSER, "cannot find user `%s'", user);
 
 	user_uid = pw->pw_uid;
 
@@ -137,20 +137,20 @@ main(int argc, char **argv)
 	if (error < 0 || (size_t)error >= sizeof(fn)) {
 		if (error >= 0) {
 			errno = 0;
-			logfail("mbox path too long");
+			logfail(EX_USAGE, "mbox path too long");
 		}
-		logfail("cannot build mbox path for `%s/%s'", _PATH_MAILDIR, user);
+		logfail(EX_CANTCREAT, "cannot build mbox path for `%s/%s'", _PATH_MAILDIR, user);
 	}
 
 	f = open(fn, O_RDONLY|O_CREAT, 0600);
 	if (f < 0)
-		logfail("cannot open mbox `%s'", fn);
+		logfail(EX_NOINPUT, "cannt open mbox `%s'", fn);
 
 	if (fchown(f, user_uid, mail_gid))
-		logfail("cannot change owner of mbox `%s'", fn);
+		logfail(EX_OSERR, "cannot change owner of mbox `%s'", fn);
 
 	if (fchmod(f, 0620))
-		logfail("cannot change permissions of mbox `%s'", fn);
+		logfail(EX_OSERR, "cannot change permissions of mbox `%s'", fn);
 
 	/* file should be present with the right owner and permissions */
 

Modified: head/contrib/dma/dma.8
==============================================================================
--- head/contrib/dma/dma.8	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/dma.8	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,4 +1,5 @@
 .\"
+.\" Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
 .\" Copyright (c) 2008
 .\"	The DragonFly Project.  All rights reserved.
 .\"

Modified: head/contrib/dma/dma.c
==============================================================================
--- head/contrib/dma/dma.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/dma.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
+ * by Simon Schubert <2@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -247,7 +248,7 @@ go_background(struct queue *queue)
 
 	if (daemonize && daemon(0, 0) != 0) {
 		syslog(LOG_ERR, "can not daemonize: %m");
-		exit(1);
+		exit(EX_OSERR);
 	}
 	daemonize = 0;
 
@@ -264,7 +265,7 @@ go_background(struct queue *queue)
 		switch (pid) {
 		case -1:
 			syslog(LOG_ERR, "can not fork: %m");
-			exit(1);
+			exit(EX_OSERR);
 			break;
 
 		case 0:
@@ -286,11 +287,11 @@ retit:
 				break;
 			case 1:
 				if (doqueue)
-					exit(0);
+					exit(EX_OK);
 				syslog(LOG_WARNING, "could not lock queue file");
-				exit(1);
+				exit(EX_SOFTWARE);
 			default:
-				exit(1);
+				exit(EX_SOFTWARE);
 			}
 			dropspool(queue, it);
 			return (it);
@@ -306,7 +307,7 @@ retit:
 	}
 
 	syslog(LOG_CRIT, "reached dead code");
-	exit(1);
+	exit(EX_SOFTWARE);
 }
 
 static void
@@ -331,12 +332,12 @@ retry:
 	case 0:
 		delqueue(it);
 		syslog(LOG_INFO, "delivery successful");
-		exit(0);
+		exit(EX_OK);
 
 	case 1:
 		if (stat(it->queuefn, &st) != 0) {
 			syslog(LOG_ERR, "lost queue file `%s'", it->queuefn);
-			exit(1);
+			exit(EX_SOFTWARE);
 		}
 		if (gettimeofday(&now, NULL) == 0 &&
 		    (now.tv_sec - st.st_mtim.tv_sec > MAX_TIMEOUT)) {
@@ -438,16 +439,16 @@ main(int argc, char **argv)
 		pw = getpwnam(DMA_ROOT_USER);
 		if (pw == NULL) {
 			if (errno == 0)
-				errx(1, "user '%s' not found", DMA_ROOT_USER);
+				errx(EX_CONFIG, "user '%s' not found", DMA_ROOT_USER);
 			else
-				err(1, "cannot drop root privileges");
+				err(EX_OSERR, "cannot drop root privileges");
 		}
 
 		if (setuid(pw->pw_uid) != 0)
-			err(1, "cannot drop root privileges");
+			err(EX_OSERR, "cannot drop root privileges");
 
 		if (geteuid() == 0 || getuid() == 0)
-			errx(1, "cannot drop root privileges");
+			errx(EX_OSERR, "cannot drop root privileges");
 	}
 
 	atexit(deltmp);
@@ -460,15 +461,15 @@ main(int argc, char **argv)
 		argv++; argc--;
 		showq = 1;
 		if (argc != 0)
-			errx(1, "invalid arguments");
+			errx(EX_USAGE, "invalid arguments");
 		goto skipopts;
 	} else if (strcmp(argv[0], "newaliases") == 0) {
 		logident_base = "dma";
 		setlogident("%s", logident_base);
 
 		if (read_aliases() != 0)
-			errx(1, "could not parse aliases file `%s'", config.aliases);
-		exit(0);
+			errx(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases);
+		exit(EX_OK);
 	}
 
 	opterr = 0;
@@ -547,7 +548,7 @@ main(int argc, char **argv)
 
 		default:
 			fprintf(stderr, "invalid argument: `-%c'\n", optopt);
-			exit(1);
+			exit(EX_USAGE);
 		}
 	}
 	argc -= optind;
@@ -555,10 +556,10 @@ main(int argc, char **argv)
 	opterr = 1;
 
 	if (argc != 0 && (showq || doqueue))
-		errx(1, "sending mail and queue operations are mutually exclusive");
+		errx(EX_USAGE, "sending mail and queue operations are mutually exclusive");
 
 	if (showq + doqueue > 1)
-		errx(1, "conflicting queue operations");
+		errx(EX_USAGE, "conflicting queue operations");
 
 skipopts:
 	if (logident_base == NULL)
@@ -578,7 +579,7 @@ skipopts:
 
 	if (showq) {
 		if (load_queue(&queue) < 0)
-			errlog(1, "can not load queue");
+			errlog(EX_NOINPUT, "can not load queue");
 		show_queue(&queue);
 		return (0);
 	}
@@ -586,38 +587,38 @@ skipopts:
 	if (doqueue) {
 		flushqueue_signal();
 		if (load_queue(&queue) < 0)
-			errlog(1, "can not load queue");
+			errlog(EX_NOINPUT, "can not load queue");
 		run_queue(&queue);
 		return (0);
 	}
 
 	if (read_aliases() != 0)
-		errlog(1, "could not parse aliases file `%s'", config.aliases);
+		errlog(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases);
 
 	if ((sender = set_from(&queue, sender)) == NULL)
-		errlog(1, "set_from failed");
+		errlog(EX_SOFTWARE, NULL);
 
 	if (newspoolf(&queue) != 0)
-		errlog(1, "can not create temp file in `%s'", config.spooldir);
+		errlog(EX_CANTCREAT, "can not create temp file in `%s'", config.spooldir);
 
 	setlogident("%s", queue.id);
 
 	for (i = 0; i < argc; i++) {
 		if (add_recp(&queue, argv[i], EXPAND_WILDCARD) != 0)
-			errlogx(1, "invalid recipient `%s'", argv[i]);
+			errlogx(EX_DATAERR, "invalid recipient `%s'", argv[i]);
 	}
 
 	if (LIST_EMPTY(&queue.queue) && !recp_from_header)
-		errlogx(1, "no recipients");
+		errlogx(EX_NOINPUT, "no recipients");
 
 	if (readmail(&queue, nodot, recp_from_header) != 0)
-		errlog(1, "can not read mail");
+		errlog(EX_NOINPUT, "can not read mail");
 
 	if (LIST_EMPTY(&queue.queue))
-		errlogx(1, "no recipients");
+		errlogx(EX_NOINPUT, "no recipients");
 
 	if (linkspool(&queue) != 0)
-		errlog(1, "can not create spools");
+		errlog(EX_CANTCREAT, "can not create spools");
 
 	/* From here on the mail is safe. */
 

Modified: head/contrib/dma/dma.h
==============================================================================
--- head/contrib/dma/dma.h	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/dma.h	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de> and
+ * by Simon Schubert <2@0x2c.org> and
  * Matthias Schmidt <matthias@dragonflybsd.org>.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,6 +44,7 @@
 #include <arpa/inet.h>
 #include <openssl/ssl.h>
 #include <netdb.h>
+#include <sysexits.h>
 
 #define VERSION	"DragonFly Mail Agent " DMA_VERSION
 
@@ -173,6 +175,8 @@ extern char errmsg[ERRMSG_SIZE];
 
 /* aliases_parse.y */
 int yyparse(void);
+int yywrap(void);
+int yylex(void);
 extern FILE *yyin;
 
 /* conf.c */

Modified: head/contrib/dma/dns.c
==============================================================================
--- head/contrib/dma/dns.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/dns.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
+ * by Simon Schubert <2@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -67,7 +68,6 @@ add_host(int pref, const char *host, int
 	char servname[10];
 	struct mx_hostentry *p;
 	const int count_inc = 10;
-	int err;
 
 	memset(&hints, 0, sizeof(hints));
 	hints.ai_family = PF_UNSPEC;
@@ -75,9 +75,26 @@ add_host(int pref, const char *host, int
 	hints.ai_protocol = IPPROTO_TCP;
 
 	snprintf(servname, sizeof(servname), "%d", port);
-	err = getaddrinfo(host, servname, &hints, &res0);
-	if (err)
-		return (err == EAI_AGAIN ? 1 : -1);
+	switch (getaddrinfo(host, servname, &hints, &res0)) {
+	case 0:
+		break;
+	case EAI_AGAIN:
+	case EAI_NONAME:
+		/*
+		 * EAI_NONAME gets returned for:
+		 * SMARTHOST set but DNS server not reachable -> defer
+		 * SMARTHOST set but DNS server returns "host does not exist"
+		 *           -> buggy configuration
+		 *           -> either defer or bounce would be ok -> defer
+		 * MX entry was returned by DNS server but name doesn't resolve
+		 *           -> hopefully transient situation -> defer
+		 * all other DNS problems should have been caught earlier
+		 * in dns_get_mx_list().
+		 */
+		goto out;
+	default:
+		return(-1);
+	}
 
 	for (res = res0; res != NULL; res = res->ai_next) {
 		if (*ps + 1 >= roundup(*ps, count_inc)) {

Modified: head/contrib/dma/get-version.sh
==============================================================================
--- head/contrib/dma/get-version.sh	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/get-version.sh	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,7 +1,9 @@
 #!/bin/sh
 
+tmp=$1
+file=${tmp:=VERSION}
 gitver=$(git describe 2>/dev/null | tr - .)
-filever=$(cat VERSION)
+filever=$(cat ${file} 2>/dev/null)
 
 version=${gitver}
 : ${version:=$filever}

Modified: head/contrib/dma/local.c
==============================================================================
--- head/contrib/dma/local.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/local.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
+ * by Simon Schubert <2@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -81,7 +82,7 @@ create_mbox(const char *name)
 
 		execl(LIBEXEC_PATH "/dma-mbox-create", "dma-mbox-create", name, NULL);
 		syslog(LOG_ERR, "cannot execute "LIBEXEC_PATH"/dma-mbox-create: %m");
-		exit(1);
+		exit(EX_SOFTWARE);
 
 	default:
 		/* parent */

Modified: head/contrib/dma/mail.c
==============================================================================
--- head/contrib/dma/mail.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/mail.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
+ * by Simon Schubert <2@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -51,7 +52,7 @@ bounce(struct qitem *it, const char *rea
 	/* Don't bounce bounced mails */
 	if (it->sender[0] == 0) {
 		syslog(LOG_INFO, "can not bounce a bounce message, discarding");
-		exit(1);
+		exit(EX_SOFTWARE);
 	}
 
 	bzero(&bounceq, sizeof(bounceq));
@@ -132,7 +133,7 @@ bounce(struct qitem *it, const char *rea
 fail:
 	syslog(LOG_CRIT, "error creating bounce: %m");
 	delqueue(it);
-	exit(1);
+	exit(EX_IOERR);
 }
 
 struct parse_state {
@@ -332,10 +333,10 @@ newaddr:
 	ps->pos = 0;
 	addr = strdup(ps->addr);
 	if (addr == NULL)
-		errlog(1, "strdup failed");
+		errlog(EX_SOFTWARE, NULL);
 
 	if (add_recp(queue, addr, EXPAND_WILDCARD) != 0)
-		errlogx(1, "invalid recipient `%s'", addr);
+		errlogx(EX_DATAERR, "invalid recipient `%s'", addr);
 
 	goto again;
 }
@@ -374,7 +375,9 @@ readmail(struct queue *queue, int nodot,
 		if (fgets(line, sizeof(line) - 1, stdin) == NULL)
 			break;
 		if (had_last_line)
-			errlogx(1, "bad mail input format");
+			errlogx(EX_DATAERR, "bad mail input format:"
+				" from %s (uid %d) (envelope-from %s)",
+				username, useruid, queue->sender);
 		linelen = strlen(line);
 		if (linelen == 0 || line[linelen - 1] != '\n') {
 			/*
@@ -405,7 +408,7 @@ readmail(struct queue *queue, int nodot,
 
 			if (parse_state.state != NONE) {
 				if (parse_addrs(&parse_state, line, queue) < 0) {
-					errlogx(1, "invalid address in header\n");
+					errlogx(EX_DATAERR, "invalid address in header\n");
 					/* NOTREACHED */
 				}
 			}
@@ -416,7 +419,7 @@ readmail(struct queue *queue, int nodot,
 					strprefixcmp(line, "Bcc:") == 0)) {
 				parse_state.state = START;
 				if (parse_addrs(&parse_state, line, queue) < 0) {
-					errlogx(1, "invalid address in header\n");
+					errlogx(EX_DATAERR, "invalid address in header\n");
 					/* NOTREACHED */
 				}
 			}

Modified: head/contrib/dma/net.c
==============================================================================
--- head/contrib/dma/net.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/net.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project

Modified: head/contrib/dma/spool.c
==============================================================================
--- head/contrib/dma/spool.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/spool.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
+ * by Simon Schubert <2@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -289,7 +290,7 @@ load_queue(struct queue *queue)
 
 	spooldir = opendir(config.spooldir);
 	if (spooldir == NULL)
-		err(1, "reading queue");
+		err(EX_NOINPUT, "reading queue");
 
 	while ((de = readdir(spooldir)) != NULL) {
 		queuefn = NULL;

Modified: head/contrib/dma/util.c
==============================================================================
--- head/contrib/dma/util.c	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/contrib/dma/util.c	Sat Oct 10 23:31:47 2015	(r289123)
@@ -1,8 +1,9 @@
 /*
+ * Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
  * Copyright (c) 2008 The DragonFly Project.  All rights reserved.
  *
  * This code is derived from software contributed to The DragonFly Project
- * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
+ * by Simon Schubert <2@0x2c.org>.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions

Modified: head/libexec/dma/Makefile.inc
==============================================================================
--- head/libexec/dma/Makefile.inc	Sat Oct 10 23:22:55 2015	(r289122)
+++ head/libexec/dma/Makefile.inc	Sat Oct 10 23:31:47 2015	(r289123)
@@ -7,7 +7,7 @@ DMA_SOURCES=	${.CURDIR}/../../../contrib
 CFLAGS=	-I${DMA_SOURCES} \
 	-DHAVE_REALLOCF -DHAVE_STRLCPY -DHAVE_GETPROGNAME \
 	-DCONF_PATH='"/etc/dma"' \
-	-DLIBEXEC_PATH='"/usr/libexec"' -DDMA_VERSION='"v0.9+"' \
+	-DLIBEXEC_PATH='"/usr/libexec"' -DDMA_VERSION='"v0.10"' \
 	-DDMA_ROOT_USER='"mailnull"' \
 	-DDMA_GROUP='"mail"'
 BINGRP=	mail



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