summaryrefslogtreecommitdiffstats
path: root/contrib/dma
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2015-10-11 08:26:48 +0000
committerngie <ngie@FreeBSD.org>2015-10-11 08:26:48 +0000
commitf5532a14fee5732f99496a00146658ec19c0fa63 (patch)
tree5de639b2d62549f868026c30efa7c4fbf8038a0b /contrib/dma
parent33c7bf8e7b5beff5a1eb3e2ccf6a661c52360ec6 (diff)
downloadFreeBSD-src-f5532a14fee5732f99496a00146658ec19c0fa63.zip
FreeBSD-src-f5532a14fee5732f99496a00146658ec19c0fa63.tar.gz
Revert r289133; retry the merge
Diffstat (limited to 'contrib/dma')
-rw-r--r--contrib/dma/BSDmakefile28
-rw-r--r--contrib/dma/LICENSE4
-rw-r--r--contrib/dma/README.markdown5
-rw-r--r--contrib/dma/TODO1
-rw-r--r--contrib/dma/VERSION2
-rw-r--r--contrib/dma/aliases_parse.y2
-rw-r--r--contrib/dma/aliases_scan.l2
-rw-r--r--contrib/dma/conf.c17
-rw-r--r--contrib/dma/debian/NEWS29
-rw-r--r--contrib/dma/debian/README.Debian12
-rw-r--r--contrib/dma/debian/changelog297
-rw-r--r--contrib/dma/debian/compat1
-rw-r--r--contrib/dma/debian/control37
-rw-r--r--contrib/dma/debian/copyright91
-rw-r--r--contrib/dma/debian/dma-migrate.dirs2
-rw-r--r--contrib/dma/debian/dma-migrate.install1
-rw-r--r--contrib/dma/debian/dma-migrate.manpages1
-rw-r--r--contrib/dma/debian/dma.dirs4
-rw-r--r--contrib/dma/debian/dma.links6
-rw-r--r--contrib/dma/debian/dma.lintian-overrides8
-rw-r--r--contrib/dma/debian/migrate/Makefile4
-rw-r--r--contrib/dma/debian/migrate/NEWS6
-rw-r--r--contrib/dma/debian/migrate/dma-migrate.898
-rw-r--r--contrib/dma/debian/migrate/dma-migrate.c413
-rwxr-xr-xcontrib/dma/debian/rules49
-rw-r--r--contrib/dma/debian/source/format1
-rw-r--r--contrib/dma/debian/source/options2
-rw-r--r--contrib/dma/dma-mbox-create.c30
-rw-r--r--contrib/dma/dma.81
-rw-r--r--contrib/dma/dma.c59
-rw-r--r--contrib/dma/dma.h6
-rw-r--r--contrib/dma/dns.c27
-rwxr-xr-xcontrib/dma/get-version.sh4
-rw-r--r--contrib/dma/local.c5
-rw-r--r--contrib/dma/mail.c19
-rw-r--r--contrib/dma/net.c1
-rw-r--r--contrib/dma/spool.c5
-rw-r--r--contrib/dma/util.c3
38 files changed, 1170 insertions, 113 deletions
diff --git a/contrib/dma/BSDmakefile b/contrib/dma/BSDmakefile
new file mode 100644
index 0000000..af3a0ac
--- /dev/null
+++ b/contrib/dma/BSDmakefile
@@ -0,0 +1,28 @@
+# $DragonFly: src/libexec/dma/Makefile,v 1.5 2008/09/19 00:36:57 corecode Exp $
+#
+
+version!= sh get-version.sh
+
+CFLAGS+= -I${.CURDIR}
+CFLAGS+= -DHAVE_REALLOCF -DHAVE_STRLCPY -DHAVE_GETPROGNAME
+CFLAGS+= -DLIBEXEC_PATH='"${LIBEXEC}"' -DDMA_VERSION='"${version}"'
+CFLAGS+= -DCONF_PATH='"${CONFDIR}"'
+
+DPADD= ${LIBSSL} ${LIBCRYPTO}
+LDADD= -lssl -lcrypto
+
+PROG= dma
+SRCS= aliases_parse.y aliases_scan.l base64.c conf.c crypto.c
+SRCS+= dma.c dns.c local.c mail.c net.c spool.c util.c
+MAN= dma.8
+
+PREFIX?= /usr/local
+LIBEXEC?= ${PREFIX}/libexec
+CONFDIR?= ${PREFIX}/etc/dma
+
+BINOWN= root
+BINGRP= mail
+BINMODE=2555
+WARNS?= 6
+
+.include <bsd.prog.mk>
diff --git a/contrib/dma/LICENSE b/contrib/dma/LICENSE
index 277b3e4..b89e5bc 100644
--- a/contrib/dma/LICENSE
+++ b/contrib/dma/LICENSE
@@ -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 ADVISED OF THE POSSIBILITY OF
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.
diff --git a/contrib/dma/README.markdown b/contrib/dma/README.markdown
index 3e043de..13ff20c 100644
--- a/contrib/dma/README.markdown
+++ b/contrib/dma/README.markdown
@@ -15,13 +15,8 @@ incoming connections.
Building
--------
-In Linux:
-
make
-In BSD:
-
- cd bsd && make
Installation
------------
diff --git a/contrib/dma/TODO b/contrib/dma/TODO
index e70814c..01de465 100644
--- a/contrib/dma/TODO
+++ b/contrib/dma/TODO
@@ -1,4 +1,5 @@
- unquote/handle quoted local recipients
+- use proper sysexit codes
- handle/use ESMTP extensions
- .forward support
- suggest way to run a queue flush on boot
diff --git a/contrib/dma/VERSION b/contrib/dma/VERSION
index 9097bf9..490a0cd 100644
--- a/contrib/dma/VERSION
+++ b/contrib/dma/VERSION
@@ -1 +1 @@
-v0.10
+v0.9
diff --git a/contrib/dma/aliases_parse.y b/contrib/dma/aliases_parse.y
index 46728e6..a5a9e7b 100644
--- a/contrib/dma/aliases_parse.y
+++ b/contrib/dma/aliases_parse.y
@@ -7,6 +7,8 @@
extern int yylineno;
static void yyerror(const char *);
+int yywrap(void);
+int yylex(void);
static void
yyerror(const char *msg)
diff --git a/contrib/dma/aliases_scan.l b/contrib/dma/aliases_scan.l
index 8130c3e..809d1e1 100644
--- a/contrib/dma/aliases_scan.l
+++ b/contrib/dma/aliases_scan.l
@@ -1,11 +1,11 @@
%{
#include <string.h>
-#include "dma.h"
#include "aliases_parse.h"
#define YY_NO_INPUT
+int yylex(void);
%}
%option yylineno
diff --git a/contrib/dma/conf.c b/contrib/dma/conf.c
index 3e3c7d3..86d72f7 100644
--- a/contrib/dma/conf.c
+++ b/contrib/dma/conf.c
@@ -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(EX_DATAERR);
+ exit(1);
}
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(EX_NOINPUT, "can not open auth file `%s'", path);
+ errlog(1, "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(EX_OSERR, NULL);
+ errlog(1, "calloc failed");
data = strdup(line);
au->login = strsep(&data, "|");
@@ -131,7 +131,8 @@ parse_authfile(const char *path)
if (au->login == NULL ||
au->host == NULL ||
au->password == NULL) {
- errlogx(EX_CONFIG, "syntax error in authfile %s:%d", path, lineno);
+ errlogx(1, "syntax error in authfile %s:%d",
+ path, lineno);
/* NOTREACHED */
}
@@ -159,7 +160,7 @@ parse_conf(const char *config_path)
/* Don't treat a non-existing config file as error */
if (errno == ENOENT)
return;
- errlog(EX_NOINPUT, "can not open config `%s'", config_path);
+ errlog(1, "can not open config `%s'", config_path);
/* NOTREACHED */
}
@@ -210,7 +211,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;
@@ -231,13 +232,13 @@ parse_conf(const char *config_path)
else if (strcmp(word, "NULLCLIENT") == 0 && data == NULL)
config.features |= NULLCLIENT;
else {
- errlogx(EX_CONFIG, "syntax error in %s:%d", config_path, lineno);
+ errlogx(1, "syntax error in %s:%d", config_path, lineno);
/* NOTREACHED */
}
}
if ((config.features & NULLCLIENT) && config.smarthost == NULL) {
- errlogx(EX_CONFIG, "%s: NULLCLIENT requires SMARTHOST", config_path);
+ errlogx(1, "%s: NULLCLIENT requires SMARTHOST", config_path);
/* NOTREACHED */
}
diff --git a/contrib/dma/debian/NEWS b/contrib/dma/debian/NEWS
new file mode 100644
index 0000000..36ed11a
--- /dev/null
+++ b/contrib/dma/debian/NEWS
@@ -0,0 +1,29 @@
+dma (0.0.2010.06.17-3) unstable; urgency=low
+
+ The default delivery mode has been changed to immediate, as it is in
+ the upstream version of dma; the DEFER keyword is now disabled by default
+ in dma.conf.
+
+ -- Peter Pentchev <roam@ringlet.net> Tue, 27 Jul 2010 13:26:48 +0300
+
+dma (0.0.2010.06.17-1) unstable; urgency=low
+
+ The dma spool directory format has changed. The Debian package of dma now
+ recommends a separate package containing the dma-migrate utility; if it is
+ present, it will be invoked at each periodic dma queue flush and attempt to
+ convert the existing old-style queued messages to the new format. In most
+ cases, this should not incur any performance penalties in normal operation,
+ since dma-migrate will scan the spool directory and ignore any new messages
+ (they should already be in the new format); however, if it appears that
+ the periodic queue flush runs take longer than usual to start up, you may
+ remove the dma-migrate package once you have ascertained that your queue
+ directory (/var/spool/dma) only contains files with names beginning with
+ the letters M or Q.
+
+ This version of dma knows how to perform MX lookups, so remote delivery is
+ now possible directly, not through a smarthost. However, a smarthost setup
+ might still be preferred on many systems for various reasons - e.g. dynamic
+ address assignment, a central outgoing mailserver, a roaming laptop, etc.
+
+ -- Peter Pentchev <roam@ringlet.net> Mon, 21 Jun 2010 11:03:57 +0300
+
diff --git a/contrib/dma/debian/README.Debian b/contrib/dma/debian/README.Debian
new file mode 100644
index 0000000..564aaa7
--- /dev/null
+++ b/contrib/dma/debian/README.Debian
@@ -0,0 +1,12 @@
+dma for Debian
+--------------
+
+Smarthost operation by default - needs to be configured!
+
+After first installing dma, you need to configure it for proper operation -
+whether it should deliver all outgoing e-mail messages through a single
+smarthost or attempt to contact the remote mail servers directly. This should
+be configured through the debconf questions, but you may change the setting
+using the SMARTHOST directive in the /etc/dma/dma.conf file.
+
+ -- Simon Schubert <2@0x2c.org> Fri, 29 Oct 2010 00:25:48 +0200
diff --git a/contrib/dma/debian/changelog b/contrib/dma/debian/changelog
new file mode 100644
index 0000000..4d55300
--- /dev/null
+++ b/contrib/dma/debian/changelog
@@ -0,0 +1,297 @@
+dma (0.9) unstable; urgency=low
+
+ [ Ed Maste ]
+ * Be explicit about missing user.
+ * Allow DMA_ROOT_USER & DMA_GROUP to be overridden.
+ * Add compat #ifdef for older OpenSSL
+ * Add CONF_DIR, as in Makefile
+ * More detailed error message for tmp file failure.
+
+ [ Simon Schubert ]
+ * spool.c: bzero contents of pointer
+
+ -- Simon Schubert <2@0x2c.org> Mon, 03 Jun 2013 15:58:44 +0200
+
+dma (0.8) unstable; urgency=low
+
+ [ Gert van den Berg ]
+ * Added some more documentation on compiling
+ * Make Makefile and README consistent with INSTALL
+
+ [ Sascha Wildner ]
+ * dma.8: Fix a few small issues.
+
+ [ Simon Schubert ]
+ * dma.8: we only have 2 config files at the moment
+ * Merge pull request #2 from mohag/master
+ * don't treat -options following -q as argument to it
+ * deliver_remote: propagate back DNS errors
+ * don't complain when we can't lock a queue file during flush
+ * implement queue flushing prod
+
+ -- Simon Schubert <2@0x2c.org> Fri, 30 Mar 2012 12:03:54 +0200
+
+dma (0.7) unstable; urgency=low
+
+ [ Simon Schubert ]
+ * add semicolon before date in Received: header
+ * parse_conf: fix bug with masqueraded domains
+ * clear up warnings found by clang static analysis
+ * mark printf-alike functions
+
+ -- Simon Schubert <2@0x2c.org> Tue, 03 Jan 2012 14:53:43 +0100
+
+dma (0.6) unstable; urgency=low
+
+ [ Simon Schubert ]
+ * deliver_local: quote "From " more liberally
+
+ -- Simon Schubert <2@0x2c.org> Wed, 07 Dec 2011 12:42:22 +0100
+
+dma (0.5) unstable; urgency=low
+
+ [ Simon Schubert ]
+ * implement masquerading using the MASQUERADE config option
+ * access config files at CONF_PATH, add makefile target to install conf files
+ * implement the "*" catch-all alias
+
+ -- Simon Schubert <2@0x2c.org> Wed, 16 Nov 2011 13:34:43 +0100
+
+dma (0.4) unstable; urgency=low
+
+ [ Simon Schubert ]
+ * Makefile: put libraries at the end when linking
+ * LICENSE: add
+ * Merge commit 'refs/merge-requests/3' of git://gitorious.org/dma/dma
+ * Merge commit 'refs/merge-requests/4' of git://gitorious.org/dma/dma
+ * Add symlink for sendmail which is expected by many packages
+ * Makefile: create spool directories in a separate target
+ * Makefile: add symlink for mailq
+ * README: elaborate, use markdown
+
+ [ Peter Pentchev ]
+ * Fix straight SSL/TLS delivery to remote MX's.
+ * Fix a minor memory leak discovered by cppcheck.
+
+ -- Simon Schubert <2@0x2c.org> Wed, 16 Nov 2011 00:08:28 +0100
+
+dma (0.3) unstable; urgency=low
+
+ [ Simon Schubert ]
+ * todo: we create mboxes properly now
+ * dma-mbox-create: group mail only needs to write to mboxes
+ * errlog: preserve errno
+ * dma-mbox-create: add error/status logging
+ * dns_get_mx_list: handle errors properly
+
+ [ Peter Pentchev ]
+ * Make add_host() really return an error code.
+
+ [ Simon Schubert ]
+ * readmail: accept mail without newline at the end
+
+ [ Peter Pentchev ]
+ * In OpenSSL 1.0, TLSv1_client_method() returns a const pointer.
+
+ [ Simon Schubert ]
+ * make dma compile again on DragonFly
+ * parse_addrs: fix parsing for multiple <addresses>
+
+ -- Simon Schubert <2@0x2c.org> Sat, 09 Jul 2011 02:38:05 +0200
+
+dma (0.2) unstable; urgency=low
+
+ * Update to dma 0.2
+ - debian: better mark as UNRELEASED
+ - add ppa makefile recipe
+ - TODO: suggest way to run a queue flush on boot
+ - partially adopt 34-manpage-defaults.patch: AUTHPATH is not set by default
+ - Revert "debian: better mark as UNRELEASED"
+ - setlogident: openlog() wants a static variable
+ - writequeuef: create files with g+rw
+ - drop privileges when run by root
+ - implement mbox creation via setuid helper
+ - debian: build with consistent flags
+ - debian: remove unused files
+ - debian: fix lintian warnings and errors
+ - make ppa: force lower version number
+ - make ppa: proper name
+
+ -- Simon Schubert <2@0x2c.org> Sun, 31 Oct 2010 23:57:50 +0100
+
+dma (0.1) unstable; urgency=low
+
+ * Update dma to 0.1
+
+ -- Simon Schubert <2@0x2c.org> Fri, 29 Oct 2010 00:57:26 +0200
+
+dma (0.0.2010.06.17-6) unstable; urgency=low
+
+ * Add the 37-gnu-hurd patch to really fix the FTBFS on GNU/Hurd.
+ * Convert several shell output assignments from = to :=
+ * Switch to bzip2 compression for the Debian tarball.
+
+ -- Peter Pentchev <roam@ringlet.net> Sun, 17 Oct 2010 00:08:33 +0300
+
+dma (0.0.2010.06.17-5) unstable; urgency=low
+
+ * Only use SA_NOCLDWAIT if available to fix the Hurd FTBFS.
+
+ -- Peter Pentchev <roam@ringlet.net> Thu, 07 Oct 2010 11:42:23 +0300
+
+dma (0.0.2010.06.17-4) unstable; urgency=low
+
+ * Fix an infinite loop in dma-migrate if char is unsigned.
+ Closes: #599172
+ * Switch to Git and point the Vcs-* fields to Gitorious.
+
+ -- Peter Pentchev <roam@ringlet.net> Wed, 06 Oct 2010 17:30:29 +0300
+
+dma (0.0.2010.06.17-3) unstable; urgency=low
+
+ * Update the debconf translations:
+ - French by Steve Petruzzello; Closes: #587883
+ * Bump Standards-Version to 3.9.1 with no changes.
+ * Disable deferred delivery by default, as in the upstream version:
+ - in the 03-debian-locations patch, comment the DEFER keyword in dma.conf,
+ as it is upstream
+ - refresh the 11-double-bounce.patch
+ - reword the README.Debian section on deferred delivery a bit
+ - add a news blurb
+
+ -- Peter Pentchev <roam@ringlet.net> Tue, 27 Jul 2010 13:34:27 +0300
+
+dma (0.0.2010.06.17-2) unstable; urgency=low
+
+ * Quick on the heels of -1 to fix a momentary lapse of reason on my part:
+ in the 03-debian-locations patch, revert part of the 0.0.2010.06.17-1
+ change: do not set a un-overrideable default for the deferred delivery!
+ Closes: #587593
+ * Update the debconf translations:
+ - Japanese by Hideki Yamane; Closes: #587543
+
+ -- Peter Pentchev <roam@ringlet.net> Wed, 30 Jun 2010 11:59:46 +0300
+
+dma (0.0.2010.06.17-1) unstable; urgency=low
+
+ * New upstream version:
+ - no longer reports the remote port number; Closes: #544820
+ - fixes some queue locking problems; Closes: #582593
+ - adapt the rules file to use the GNU Makefile instead of the BSD one
+ - drop pmake from Build-Depends
+ - remove the 01-debian-build patch, overtaken by upstream changes
+ - in the 03-debian-locations patch, make the Debian defaults actual
+ defaults for the dma binary, not just in the dma.conf file
+ - adapt the 04-debian-setgid patch for the GNU Makefile
+ - in the 10-liblockfile patch, change the GNU Makefile, too
+ - enhance the 11-double-bounce patch a bit:
+ - use dma's own delqueue() function instead of a naive unlink() so
+ all the queue files are cleaned up
+ - document the Debian default for DBOUNCEPROG in the manual page
+ - resurrect the 13-hardening patch, correcting a couple of
+ unchecked asprintf(3) and vasprintf(3) invocations
+ - the functionality of the 20-parse-recipient patch was implemented
+ upstream in a different way, so replace it with a small bugfix
+ - remove the 22-openfiles patch, overtaken by upstream changes
+ - in the 24-random-message-id patch, change the GNU Makefile, too
+ - add the 27-int-size patch to cast a variable to the correct type
+ - add the 28-valid-recipient patch to fix parsing recipients out of
+ the message body
+ - add the 29-double-free patch to fix a double-free error
+ - add the 30-ldflags patch to honor LDFLAGS if specified
+ - refresh the 09-typos, 17-mailname, 23-dirent-d_type, and
+ 25-unsupported-starttls patches
+ - teach the dbounce-simple-safecat handler about the M*/Q* spool
+ files scheme
+ * Bump Standards-Version to 3.9.0 with no changes.
+ * Update the copyright file:
+ - bring it up to the latest revision of the DEP 5
+ - update the upstream copyright notices
+ - bump the year on my copyright notice
+ * Remove the diffsrc rules target which was intended for my own
+ internal use, but has outlived its time.
+ * Use dpkg-buildflags from dpkg-dev >= 1.15.7~ to get the default
+ values for CFLAGS, CPPFLAGS, and LDFLAGS; no longer rely on
+ dpkg-buildpackage to set them by default.
+ * Add the dma-migrate utility (in a separate binary package) to convert
+ spool files to the new queue format (M* and Q* files for each message)
+ * Add a dma-migrate invocation to dma.cron.d
+ * Shorten the Vcs-Browser URL.
+ * Add the 31-sigalrm-backoff patch to force a delivery attempt on SIGALRM.
+ * Properly substitute the debconf-supplied values for DBOUNCEPROG and
+ SMARTHOST into dma.conf even if they are empty without generating
+ an invalid dma.conf file.
+ * Remove the smarthost default; dma does MX lookups now, so it doesn't
+ really *need* one anymore.
+ * Reword the debconf relayhost question - dma does not really need
+ a smarthost anymore.
+ * Update the debconf translations:
+ - Bulgarian
+ - Portuguese by Américo Monteiro
+ - German by Helge Kreutzmann; Closes: #586531
+ - Russian by Yuri Kozlov; Closes: #586579
+ - Czech by Michal Simunek; Closes: #586791
+ - Swedish by Martin Bagge; Closes: #586825
+ - Spanish by Francisco Javier Cuadrado; Closes: #587088
+ * Update the smarthost configuration information in README.Debian.
+ * Add the 32-comment-uncomment patch to correct the manual page wording.
+ * Add the 33-opportunistic-tls patch to allow remote connections to proceed
+ even if the STARTTLS negotiation fails.
+ * Fix the 25-unsupported-starttls patch to actually error out if the SSL
+ negotiation fails.
+ * Forward all the non-Debian-specific patches upstream to Simon Schubert.
+ * Add the 34-manpage-defaults patch to properly document what dma will use
+ as default values if not specified in the config file instead of what
+ the default config file specifies. Closes: #544748
+ * Add the 35-delivery-retry patch to try local deliveries a bit more often
+ and to randomize the delivery timeout to avoid locking issues.
+
+ -- Peter Pentchev <roam@ringlet.net> Mon, 28 Jun 2010 23:26:36 +0300
+
+dma (0.0.2009.07.17-3) unstable; urgency=low
+
+ * Really install the files in /etc/dma/ as root/mail/640 and
+ change the ownership of the existing files in the postinst script
+ when upgrading from older versions. Closes: #544664
+ * Install the /usr/bin/mailq and /usr/bin/newaliases symlinks.
+ Closes: #558421
+ * Switch to the 3.0 (quilt) source format.
+ * Update the debconf translations:
+ - add German. Closes: #552754
+ - add Japanese. Closes: #554515
+ - remove a double space and unfuzzy the translations. Closes: #552586
+ * Fix a crash when the SMTP server does not support STARTTLS.
+ Closes: #547594
+ * Always use the user-supplied value from the debconf query for
+ the smarthost and the double-bounce program. This may result in
+ debconf overriding a manually-edited config file, so add a note to
+ dma.conf stating that these values are handled via debconf.
+ Closes: #544663
+ * Fix a misspelling of dma/dbounceprog as dma/defer in the debconf
+ configuration script. Oops.
+
+ -- Peter Pentchev <roam@ringlet.net> Sat, 19 Dec 2009 14:35:10 +0200
+
+dma (0.0.2009.07.17-2) unstable; urgency=low
+
+ * Allow the spool directory to live on a filesystem that does not
+ set the d_type member of the dirent structure, like XFS.
+ Closes: #544357
+ * Randomize the Message-Id a bit more. Closes: #544475
+ * Bump Standards-Version to 3.8.3 with no changes.
+ * Only enable the build hardening wrapper if the "hardening" build
+ option is specified.
+ * Switch the copyright file header from the Wiki to DEP 5.
+ * Remove the manual page ".Dx" patch - the groff version in Squeeze
+ knows about the .Dx mdoc macro. Add a lintian override for
+ the "Unknown DragonFly version" error.
+ * Convert the patch file headers to the DEP 3 format.
+
+ -- Peter Pentchev <roam@ringlet.net> Tue, 01 Sep 2009 13:36:33 +0300
+
+dma (0.0.2009.07.17-1) unstable; urgency=low
+
+ * Initial release
+ (Closes: #511410, #533458, #533614, #533890, #534101, #534860)
+
+ -- Peter Pentchev <roam@ringlet.net> Tue, 11 Aug 2009 16:08:41 +0300
diff --git a/contrib/dma/debian/compat b/contrib/dma/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/contrib/dma/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/contrib/dma/debian/control b/contrib/dma/debian/control
new file mode 100644
index 0000000..6eeea08
--- /dev/null
+++ b/contrib/dma/debian/control
@@ -0,0 +1,37 @@
+Source: dma
+Section: mail
+Priority: optional
+Maintainer: Peter Pentchev <roam@ringlet.net>
+DM-Upload-Allowed: yes
+Build-Depends: debhelper (>= 7.0.50), byacc, dpkg-dev (>= 1.15.7~), flex, hardening-wrapper, libssl-dev, po-debconf
+Standards-Version: 3.9.1
+Homepage: http://devel.ringlet.net/mail/dma/
+Vcs-Git: git://gitorious.org/dma-roam/pkg-debian.git
+Vcs-Browser: http://gitorious.org/dma-roam/pkg-debian
+
+Package: dma
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Provides: mail-transport-agent
+Conflicts: mail-transport-agent
+Replaces: mail-transport-agent
+Recommends: dma-migrate
+Description: lightweight mail transport agent
+ The DragonFly Mail Agent is a small Mail Transport Agent (MTA),
+ designed for home and office use. It accepts mails from local Mail
+ User Agents (MUA) and delivers them either to local mailboxes or
+ remote SMTP servers. Remote delivery includes support for features
+ such as TLS/SSL and SMTP authentication.
+ .
+ dma is not intended as a replacement for full-featured MTAs like
+ Sendmail, Postfix, or Exim. Consequently, dma does not listen on
+ port 25 for incoming connections.
+
+Package: dma-migrate
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Enhances: dma
+Description: migration utility for the DragonFly Mail Agent's spool files
+ The dma-migrate utility examines the DragonFly Mail Agent's mail queue
+ and performs any conversions from old message file formats to the most
+ recent one as needed.
diff --git a/contrib/dma/debian/copyright b/contrib/dma/debian/copyright
new file mode 100644
index 0000000..4ad8fbb
--- /dev/null
+++ b/contrib/dma/debian/copyright
@@ -0,0 +1,91 @@
+Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
+Name: dma
+
+Files: base64.c
+Copyright: Copyright (c) 1995-2001 Kungliga Tekniska Högskolan
+ (Royal Institute of Technology, Stockholm, Sweden).
+ All rights reserved.
+License: BSD-3
+
+Files: conf.c crypto.c net.c
+Copyright: Copyright (c) 2008 The DragonFly Project. All rights reserved.
+ This code is derived from software contributed to The DragonFly Project
+ by Matthias Schmidt <matthias@dragonflybsd.org>, University of Marburg,
+ Germany.
+License: BSD-3
+
+Files: dfcompat.c
+Copyright: Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+ Copyright (c) 1998, M. Warner Losh <imp@freebsd.org> All rights reserved.
+License: BSD-1 BSD-2
+
+Files: dma.8
+Copyright: Copyright (c) 2008 The DragonFly Project. All rights reserved.
+License: BSD-3
+
+Files: dma.c dns.c mail.c spool.c util.c
+Copyright: 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>.
+License: BSD-3
+
+Files: dma.h
+Copyright: 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
+ Matthias Schmidt <matthias@dragonflybsd.org>.
+License: BSD-3
+
+Files: debian/*
+Copyright: Copyright (c) 2009, 2010 Peter Pentchev.
+License: BSD-3
+
+License: BSD-3
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. Neither the name of The DragonFly Project nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific, prior written permission.
+
+License: BSD-1
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+License: BSD-2
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
diff --git a/contrib/dma/debian/dma-migrate.dirs b/contrib/dma/debian/dma-migrate.dirs
new file mode 100644
index 0000000..b174b44
--- /dev/null
+++ b/contrib/dma/debian/dma-migrate.dirs
@@ -0,0 +1,2 @@
+usr/sbin
+usr/share/man/man8
diff --git a/contrib/dma/debian/dma-migrate.install b/contrib/dma/debian/dma-migrate.install
new file mode 100644
index 0000000..1c35b0a
--- /dev/null
+++ b/contrib/dma/debian/dma-migrate.install
@@ -0,0 +1 @@
+debian/migrate/dma-migrate usr/sbin
diff --git a/contrib/dma/debian/dma-migrate.manpages b/contrib/dma/debian/dma-migrate.manpages
new file mode 100644
index 0000000..3629dbe
--- /dev/null
+++ b/contrib/dma/debian/dma-migrate.manpages
@@ -0,0 +1 @@
+debian/migrate/dma-migrate.8
diff --git a/contrib/dma/debian/dma.dirs b/contrib/dma/debian/dma.dirs
new file mode 100644
index 0000000..f10c005
--- /dev/null
+++ b/contrib/dma/debian/dma.dirs
@@ -0,0 +1,4 @@
+etc/dma
+usr/sbin
+usr/share/lintian/overrides
+usr/share/man/man8
diff --git a/contrib/dma/debian/dma.links b/contrib/dma/debian/dma.links
new file mode 100644
index 0000000..d9ac22a
--- /dev/null
+++ b/contrib/dma/debian/dma.links
@@ -0,0 +1,6 @@
+usr/sbin/dma usr/bin/mailq
+usr/sbin/dma usr/bin/newaliases
+usr/sbin/dma usr/sbin/sendmail
+usr/share/man/man8/dma.8 usr/share/man/man8/mailq.8
+usr/share/man/man8/dma.8 usr/share/man/man8/newaliases.8
+usr/share/man/man8/dma.8 usr/share/man/man8/sendmail.8
diff --git a/contrib/dma/debian/dma.lintian-overrides b/contrib/dma/debian/dma.lintian-overrides
new file mode 100644
index 0000000..03f5d6e
--- /dev/null
+++ b/contrib/dma/debian/dma.lintian-overrides
@@ -0,0 +1,8 @@
+dma: manpage-has-errors-from-man *Unknown DragonFly version*
+dma: non-standard-dir-in-var var/mail/
+dma: non-standard-dir-perm var/spool/dma/ 0770 != 0755
+dma: non-standard-dir-perm var/spool/dma/ 2775 != 0755
+dma: non-standard-file-perm etc/dma/auth.conf 0640 != 0644
+dma: no-upstream-changelog
+dma: setgid-binary usr/sbin/dma 2755 root/mail
+dma: setuid-binary usr/lib/dma-mbox-create 4754 root/mail
diff --git a/contrib/dma/debian/migrate/Makefile b/contrib/dma/debian/migrate/Makefile
new file mode 100644
index 0000000..cc7d347
--- /dev/null
+++ b/contrib/dma/debian/migrate/Makefile
@@ -0,0 +1,4 @@
+all: dma-migrate
+
+clean:
+ rm -f dma-migrate dma-migrate.o
diff --git a/contrib/dma/debian/migrate/NEWS b/contrib/dma/debian/migrate/NEWS
new file mode 100644
index 0000000..29dca0dd
--- /dev/null
+++ b/contrib/dma/debian/migrate/NEWS
@@ -0,0 +1,6 @@
+Change log for dma-migrate, the DragonFly Mail Agent queue migration utility.
+
+0.01 not yet ;)
+ - first public release
+
+Comments: Peter Pentchev <roam@ringlet.net>
diff --git a/contrib/dma/debian/migrate/dma-migrate.8 b/contrib/dma/debian/migrate/dma-migrate.8
new file mode 100644
index 0000000..e40acef
--- /dev/null
+++ b/contrib/dma/debian/migrate/dma-migrate.8
@@ -0,0 +1,98 @@
+.\" Copyright (c) 2010 Peter Pentchev
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd May 11, 2009
+.Dt dma-migrate 8
+.Os
+.Sh NAME
+.Nm dma-migrate
+.Nd convert the DragonFly Mail Agent's queue files
+.Sh SYNOPSIS
+.Nm
+.Op Fl v
+.Op Fl d Ar spooldir
+.Nm
+.Op Fl h | Fl V
+.Sh DESCRIPTION
+The
+.Nm
+utility is used to convert the mail queue files in the
+.Xr dma 8
+spool directory to the latest spool directory format supported by
+the installed version of
+.Xr dma 8 .
+Currently it only handles the conversion from a single file containing
+both message and delivery metadata to the M/Q format.
+.Pp
+The following command-line options are available:
+.Bl -tag -width indent
+.It Fl d
+Specify the location of the
+.Xr dma 8
+spool directory, default
+.Pa /var/spool/dma .
+.It Fl h
+Display usage information and exit.
+.It Fl V
+Display program version information and exit.
+.It Fl v
+Verbose output - display diagnostic messages.
+.El
+.Sh ENVIRONMENT
+The operation of the
+.Nm
+utility is currently not influenced by environment variables.
+.Sh FILES
+The
+.Nm
+utility looks for the
+.Xr dma 8
+mail queue files in the
+.Pa /var/spool/dma
+directory, unless another location is specified by the
+.Fl d
+command-line option.
+.Sh EXIT STATUS
+The
+.Nm
+utility will scan the whole spool directory and attempt to convert all
+suitable files there.
+If there are no files to be converted, or if all the conversions are
+successful, it will complete with an exit code of zero.
+If any conversion errors are encountered, a message will be displayed
+to the standard error stream and
+.Nm
+will exit with an exit code of 1 after attempting to convert the rest of
+the suitable files in the spool directory.
+.Sh SEE ALSO
+.Xr dma 8
+.Sh STANDARDS
+No standards documentation was harmed in the process of creating
+.Nm .
+.Sh BUGS
+Please report any bugs in
+.Nm
+to the author.
+.Sh AUTHOR
+.An Peter Pentchev Aq roam@ringlet.net
diff --git a/contrib/dma/debian/migrate/dma-migrate.c b/contrib/dma/debian/migrate/dma-migrate.c
new file mode 100644
index 0000000..56bfa2a
--- /dev/null
+++ b/contrib/dma/debian/migrate/dma-migrate.c
@@ -0,0 +1,413 @@
+/*-
+ * Copyright (c) 2010 Peter Pentchev
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#define _GNU_SOURCE
+
+#include <sys/types.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+
+#include <dirent.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <regex.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#ifndef __printflike
+#ifdef __GNUC__
+#define __printflike(fmtarg, firstvararg) \
+ __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+#else
+#define __printflike(fmtarg, firstvararg)
+#endif
+#endif
+
+#define DEFAULT_SPOOLDIR "/var/spool/dma"
+
+static int verbose = 0;
+static char copybuf[BUFSIZ];
+
+static int dma_migrate(int, const char *);
+
+static int open_locked(const char *, int, ...);
+static void cleanup_file(int, char *);
+
+static void usage(int);
+static void version(void);
+static void debug(const char *, ...) __printflike(1, 2);
+
+int
+main(int argc, char **argv)
+{
+ const char *spooldir;
+ int hflag, Vflag, errs, fd, res;
+ int ch;
+ DIR *d;
+ struct dirent *e;
+ struct stat sb;
+
+ srandom((unsigned long)((time(NULL) ^ getpid()) + ((uintptr_t)argv)));
+
+ hflag = Vflag = 0;
+ spooldir = DEFAULT_SPOOLDIR;
+ while (ch = getopt(argc, argv, "d:hVv"), ch != -1)
+ switch (ch) {
+ case 'd':
+ spooldir = optarg;
+ break;
+
+ case 'h':
+ hflag = 1;
+ break;
+
+ case 'V':
+ Vflag = 1;
+ break;
+
+ case 'v':
+ verbose = 1;
+ break;
+
+ case '?':
+ default:
+ usage(1);
+ /* NOTREACHED */
+ }
+ if (Vflag)
+ version();
+ if (hflag)
+ usage(0);
+ if (hflag || Vflag)
+ exit(0);
+
+ argc -= optind;
+ argv += optind;
+
+ /* Let's roll! */
+ if (chdir(spooldir) == -1)
+ err(1, "Could not change into spool directory %s", spooldir);
+ if (d = opendir("."), d == NULL)
+ err(1, "Could not read spool directory %s", spooldir);
+ errs = 0;
+ while (e = readdir(d), e != NULL) {
+ /* Do we care about this entry? */
+ debug("Read a directory entry: %s\n", e->d_name);
+ if (strncmp(e->d_name, "tmp_", 4) == 0 ||
+ e->d_name[0] == 'M' || e->d_name[0] == 'Q' ||
+ (e->d_type != DT_REG && e->d_type != DT_UNKNOWN))
+ continue;
+ if (e->d_type == DT_UNKNOWN)
+ if (stat(e->d_name, &sb) == -1 || !S_ISREG(sb.st_mode))
+ continue;
+ debug("- want to process it\n");
+
+ /* Try to lock it - skip it if dma is delivering the message */
+ if (fd = open_locked(e->d_name, O_RDONLY|O_NDELAY), fd == -1) {
+ debug("- seems to be locked, skipping\n");
+ continue;
+ }
+
+ /* Okay, convert it to the M/Q schema */
+ res = dma_migrate(fd, e->d_name);
+ close(fd);
+ if (res == -1)
+ errs++;
+ }
+ if (errs)
+ debug("Finished, %d conversion errors\n", errs);
+ else
+ debug("Everything seems to be all right\n");
+ return (errs && 1);
+}
+
+static int
+dma_migrate(int fd, const char *fname)
+{
+ const char *id;
+ char *mname, *qname, *tempname, *sender, *recp, *line, *recpline;
+ int mfd, qfd, tempfd;
+ struct stat sb;
+ FILE *fp, *qfp, *mfp;
+ size_t sz, len;
+ static regex_t *qidreg = NULL;
+
+ mfd = tempfd = qfd = -1;
+ mname = qname = sender = recp = line = NULL;
+ fp = qfp = NULL;
+
+ if (fstat(fd, &sb) == -1) {
+ warn("Could not fstat(%s)", fname);
+ return (-1);
+ }
+ /*
+ * Let's just blithely assume that the queue ID *is* the filename,
+ * since that's the way dma did things so far.
+ * Well, okay, let's check it.
+ */
+ if (qidreg == NULL) {
+ regex_t *nreg;
+
+ if ((nreg = malloc(sizeof(*qidreg))) == NULL) {
+ warn("Could not allocate memory for a regex");
+ return (-1);
+ }
+ if (regcomp(nreg, "^[a-fA-F0-9]\\+\\.[a-fA-F0-9]\\+$", 0)
+ != 0) {
+ warnx("Could not compile a dma queue ID regex");
+ free(nreg);
+ return (-1);
+ }
+ qidreg = nreg;
+ }
+ if (regexec(qidreg, fname, 0, NULL, 0) != 0) {
+ warnx("The name '%s' is not a valid dma queue ID", fname);
+ return (-1);
+ }
+ id = fname;
+ debug(" - queue ID %s\n", id);
+ if (asprintf(&mname, "M%s", id) == -1 ||
+ asprintf(&tempname, "tmp_%s", id) == -1 ||
+ asprintf(&qname, "Q%s", id) == -1 ||
+ mname == NULL || tempname == NULL || qname == NULL)
+ goto fail;
+
+ /* Create the message placeholder early to avoid races */
+ mfd = open_locked(mname, O_CREAT | O_EXCL | O_RDWR, 0600);
+ if (mfd == -1) {
+ warn("Could not create temporary file %s", mname);
+ goto fail;
+ }
+ if (stat(qname, &sb) != -1 || errno != ENOENT ||
+ stat(tempname, &sb) != -1 || errno != ENOENT) {
+ warnx("Some of the queue files for %s already exist", fname);
+ goto fail;
+ }
+ debug(" - mfd %d names %s, %s, %s\n", mfd, mname, tempname, qname);
+
+ fp = fdopen(fd, "r");
+ if (fp == NULL) {
+ warn("Could not reopen the descriptor for %s", fname);
+ goto fail;
+ }
+
+ /* Parse the header of the old-format message file */
+ /* ...sender... */
+ if (getline(&sender, &sz, fp) == -1) {
+ warn("Could not read the initial line from %s", fname);
+ goto fail;
+ }
+ sz = strlen(sender);
+ while (sz > 0 && (sender[sz - 1] == '\n' || sender[sz - 1] == '\r'))
+ sender[--sz] = '\0';
+ if (sz == 0) {
+ warnx("Empty sender line in %s", fname);
+ goto fail;
+ }
+ debug(" - sender %s\n", sender);
+ /* ...recipient(s)... */
+ len = strlen(fname);
+ recpline = NULL;
+ while (1) {
+ if (getline(&line, &sz, fp) == -1) {
+ warn("Could not read a recipient line from %s", fname);
+ goto fail;
+ }
+ sz = strlen(line);
+ while (sz > 0 &&
+ (line[sz - 1] == '\n' || line[sz - 1] == '\r'))
+ line[--sz] = '\0';
+ if (sz == 0) {
+ free(line);
+ line = NULL;
+ break;
+ }
+ if (recp == NULL &&
+ strncmp(line, fname, len) == 0 && line[len] == ' ') {
+ recp = line + len + 1;
+ recpline = line;
+ } else {
+ free(line);
+ }
+ line = NULL;
+ }
+ if (recp == NULL) {
+ warnx("Could not find its own recipient line in %s", fname);
+ goto fail;
+ }
+ /* ..phew, finished with the header. */
+
+ tempfd = open_locked(tempname, O_CREAT | O_EXCL | O_RDWR, 0600);
+ if (tempfd == -1) {
+ warn("Could not create a queue file for %s", fname);
+ goto fail;
+ }
+ qfp = fdopen(tempfd, "w");
+ if (qfp == NULL) {
+ warn("Could not fdopen(%s) for %s", tempname, fname);
+ goto fail;
+ }
+ mfp = fdopen(mfd, "w");
+ if (mfp == NULL) {
+ warn("Could not fdopen(%s) for %s", mname, fname);
+ goto fail;
+ }
+ fprintf(qfp, "ID: %s\nSender: %s\nRecipient: %s\n", id, sender, recp);
+ fflush(qfp);
+ fsync(tempfd);
+
+ /* Copy the message file over to mname */
+ while ((sz = fread(copybuf, 1, sizeof(copybuf), fp)) > 0)
+ if (fwrite(copybuf, 1, sz, mfp) != sz) {
+ warn("Could not copy the message from %s to %s",
+ fname, mname);
+ goto fail;
+ }
+ if (ferror(fp)) {
+ warn("Could not read the full message from %s", fname);
+ goto fail;
+ }
+ fflush(mfp);
+ fsync(mfd);
+
+ if (rename(tempname, qname) == -1) {
+ warn("Could not rename the queue file for %s", fname);
+ goto fail;
+ }
+ qfd = tempfd;
+ tempfd = -1;
+ if (unlink(fname) == -1) {
+ warn("Could not remove the old converted file %s", fname);
+ goto fail;
+ }
+
+ fclose(fp);
+ fclose(qfp);
+ free(sender);
+ free(line);
+ free(recpline);
+ free(mname);
+ free(qname);
+ free(tempname);
+ return (0);
+
+fail:
+ if (fp != NULL)
+ fclose(fp);
+ if (qfp != NULL)
+ fclose(qfp);
+ if (sender != NULL)
+ free(sender);
+ if (line != NULL)
+ free(line);
+ if (recpline != NULL)
+ free(recpline);
+ cleanup_file(mfd, mname);
+ cleanup_file(qfd, qname);
+ cleanup_file(tempfd, tempname);
+ return (-1);
+}
+
+static void
+cleanup_file(int fd, char *fname)
+{
+ if (fd != -1) {
+ close(fd);
+ unlink(fname);
+ }
+ if (fname != NULL)
+ free(fname);
+}
+
+static void
+usage(int ferr)
+{
+ const char *s =
+ "Usage:\tdma-migrate [-hVv] [-d spooldir]\n"
+ "\t-d\tspecify the spool directory (" DEFAULT_SPOOLDIR ")\n"
+ "\t-h\tdisplay program usage information and exit\n"
+ "\t-V\tdisplay program version information and exit\n"
+ "\t-v\tverbose operation - display diagnostic messages";
+
+ if (ferr)
+ errx(1, "%s", s);
+ puts(s);
+}
+
+static void
+version(void)
+{
+ printf("dma-migrate 0.01 (dma 0.0.2010.06.17)\n");
+}
+
+static void
+debug(const char *fmt, ...)
+{
+ va_list v;
+
+ if (verbose < 1)
+ return;
+ va_start(v, fmt);
+ vfprintf(stderr, fmt, v);
+ va_end(v);
+}
+
+static int
+open_locked(const char *fname, int flags, ...)
+{
+ int mode = 0;
+#ifndef O_EXLOCK
+ int fd, save_errno;
+#endif
+
+ if (flags & O_CREAT) {
+ va_list ap;
+ va_start(ap, flags);
+ mode = va_arg(ap, int);
+ va_end(ap);
+ }
+
+#ifndef O_EXLOCK
+ fd = open(fname, flags, mode);
+ if (fd < 0)
+ return(fd);
+ if (flock(fd, LOCK_EX|((flags & O_NONBLOCK)? LOCK_NB: 0)) < 0) {
+ save_errno = errno;
+ close(fd);
+ errno = save_errno;
+ return(-1);
+ }
+ return(fd);
+#else
+ return(open(fname, flags|O_EXLOCK, mode));
+#endif
+}
diff --git a/contrib/dma/debian/rules b/contrib/dma/debian/rules
new file mode 100755
index 0000000..461a0a85
--- /dev/null
+++ b/contrib/dma/debian/rules
@@ -0,0 +1,49 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Debian build rules for dma, the DragonFly mail agent
+
+DDIR= $(CURDIR)/debian
+D= $(DDIR)/dma
+
+BUILDDEFS= DESTDIR=$D PREFIX=/usr
+
+CFLAGS:= $(shell dpkg-buildflags --get CFLAGS)
+CPPFLAGS:= $(shell dpkg-buildflags --get CPPFLAGS)
+LDFLAGS:= $(shell dpkg-buildflags --get LDFLAGS)
+
+CONFFILES= dma.conf auth.conf
+
+ifneq (,$(filter werror,$(DEB_BUILD_OPTIONS)))
+ CFLAGS+= -Werror
+endif
+ifneq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
+ export STRIPFLAG=
+endif
+ifneq (,$(filter hardening,$(DEB_BUILD_OPTIONS)))
+export DEB_BUILD_HARDENING=1
+else
+export DEB_BUILD_HARDENING=0
+endif
+
+export CFLAGS CPPFLAGS LDFLAGS
+
+override_dh_auto_build:
+ $(MAKE) -f Makefile ${BUILDDEFS}
+ $(MAKE) -C $(DDIR)/migrate
+
+override_dh_auto_clean:
+ $(MAKE) -f Makefile clean
+ $(MAKE) -C $(DDIR)/migrate clean
+
+override_dh_auto_install:
+ $(MAKE) -f Makefile ${BUILDDEFS} install sendmail-link mailq-link install-spool-dirs install-etc
+
+override_dh_fixperms:
+ dh_fixperms -Xusr/sbin/dma -Xusr/lib/dma-mbox-create -Xvar/spool/dma -Xetc/dma
+
+override_dh_installchangelogs:
+ dh_installchangelogs -p dma
+ dh_installchangelogs -p dma-migrate debian/migrate/NEWS
+
+%:
+ dh $@
diff --git a/contrib/dma/debian/source/format b/contrib/dma/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/contrib/dma/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/contrib/dma/debian/source/options b/contrib/dma/debian/source/options
new file mode 100644
index 0000000..779dbfd
--- /dev/null
+++ b/contrib/dma/debian/source/options
@@ -0,0 +1,2 @@
+compression = "bzip2"
+compression-level = 9
diff --git a/contrib/dma/dma-mbox-create.c b/contrib/dma/dma-mbox-create.c
index 532a7af..c84652b 100644
--- a/contrib/dma/dma-mbox-create.c
+++ b/contrib/dma/dma-mbox-create.c
@@ -1,9 +1,9 @@
/*
- * Copyright (c) 2010-2014, Simon Schubert <2@0x2c.org>.
+ * Copyright (c) 2010 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 Schubert <2@0x2c.org>.
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
*
* 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(int exitcode, const char *fmt, ...)
+logfail(const char *fmt, ...)
{
int oerrno = errno;
va_list ap;
@@ -73,7 +73,7 @@ logfail(int exitcode, const char *fmt, ...)
else
syslog(LOG_ERR, errno ? "%m" : "unknown error");
- exit(exitcode);
+ exit(1);
}
/*
@@ -98,21 +98,21 @@ main(int argc, char **argv)
errno = 0;
gr = getgrnam(DMA_GROUP);
if (!gr)
- logfail(EX_CONFIG, "cannot find dma group `%s'", DMA_GROUP);
+ logfail("cannot find dma group `%s'", DMA_GROUP);
mail_gid = gr->gr_gid;
if (setgid(mail_gid) != 0)
- logfail(EX_NOPERM, "cannot set gid to %d (%s)", mail_gid, DMA_GROUP);
+ logfail("cannot set gid to %d (%s)", mail_gid, DMA_GROUP);
if (getegid() != mail_gid)
- logfail(EX_NOPERM, "cannot set gid to %d (%s), still at %d", mail_gid, DMA_GROUP, getegid());
+ logfail("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(EX_USAGE, "no arguments");
+ logfail("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(EX_DATAERR, "path separator in username `%s'", user);
+ logfail("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(EX_NOUSER, "cannot find user `%s'", user);
+ logfail("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(EX_USAGE, "mbox path too long");
+ logfail("mbox path too long");
}
- logfail(EX_CANTCREAT, "cannot build mbox path for `%s/%s'", _PATH_MAILDIR, user);
+ logfail("cannot build mbox path for `%s/%s'", _PATH_MAILDIR, user);
}
f = open(fn, O_RDONLY|O_CREAT, 0600);
if (f < 0)
- logfail(EX_NOINPUT, "cannt open mbox `%s'", fn);
+ logfail("cannot open mbox `%s'", fn);
if (fchown(f, user_uid, mail_gid))
- logfail(EX_OSERR, "cannot change owner of mbox `%s'", fn);
+ logfail("cannot change owner of mbox `%s'", fn);
if (fchmod(f, 0620))
- logfail(EX_OSERR, "cannot change permissions of mbox `%s'", fn);
+ logfail("cannot change permissions of mbox `%s'", fn);
/* file should be present with the right owner and permissions */
diff --git a/contrib/dma/dma.8 b/contrib/dma/dma.8
index 76ab174..5d786c6 100644
--- a/contrib/dma/dma.8
+++ b/contrib/dma/dma.8
@@ -1,5 +1,4 @@
.\"
-.\" Copyright (c) 2008-2014, Simon Schubert <2@0x2c.org>.
.\" Copyright (c) 2008
.\" The DragonFly Project. All rights reserved.
.\"
diff --git a/contrib/dma/dma.c b/contrib/dma/dma.c
index 0d1dba2..a3a62c9 100644
--- a/contrib/dma/dma.c
+++ b/contrib/dma/dma.c
@@ -1,9 +1,8 @@
/*
- * 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 Schubert <2@0x2c.org>.
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -248,7 +247,7 @@ go_background(struct queue *queue)
if (daemonize && daemon(0, 0) != 0) {
syslog(LOG_ERR, "can not daemonize: %m");
- exit(EX_OSERR);
+ exit(1);
}
daemonize = 0;
@@ -265,7 +264,7 @@ go_background(struct queue *queue)
switch (pid) {
case -1:
syslog(LOG_ERR, "can not fork: %m");
- exit(EX_OSERR);
+ exit(1);
break;
case 0:
@@ -287,11 +286,11 @@ retit:
break;
case 1:
if (doqueue)
- exit(EX_OK);
+ exit(0);
syslog(LOG_WARNING, "could not lock queue file");
- exit(EX_SOFTWARE);
+ exit(1);
default:
- exit(EX_SOFTWARE);
+ exit(1);
}
dropspool(queue, it);
return (it);
@@ -307,7 +306,7 @@ retit:
}
syslog(LOG_CRIT, "reached dead code");
- exit(EX_SOFTWARE);
+ exit(1);
}
static void
@@ -332,12 +331,12 @@ retry:
case 0:
delqueue(it);
syslog(LOG_INFO, "delivery successful");
- exit(EX_OK);
+ exit(0);
case 1:
if (stat(it->queuefn, &st) != 0) {
syslog(LOG_ERR, "lost queue file `%s'", it->queuefn);
- exit(EX_SOFTWARE);
+ exit(1);
}
if (gettimeofday(&now, NULL) == 0 &&
(now.tv_sec - st.st_mtim.tv_sec > MAX_TIMEOUT)) {
@@ -439,16 +438,16 @@ main(int argc, char **argv)
pw = getpwnam(DMA_ROOT_USER);
if (pw == NULL) {
if (errno == 0)
- errx(EX_CONFIG, "user '%s' not found", DMA_ROOT_USER);
+ errx(1, "user '%s' not found", DMA_ROOT_USER);
else
- err(EX_OSERR, "cannot drop root privileges");
+ err(1, "cannot drop root privileges");
}
if (setuid(pw->pw_uid) != 0)
- err(EX_OSERR, "cannot drop root privileges");
+ err(1, "cannot drop root privileges");
if (geteuid() == 0 || getuid() == 0)
- errx(EX_OSERR, "cannot drop root privileges");
+ errx(1, "cannot drop root privileges");
}
atexit(deltmp);
@@ -461,15 +460,15 @@ main(int argc, char **argv)
argv++; argc--;
showq = 1;
if (argc != 0)
- errx(EX_USAGE, "invalid arguments");
+ errx(1, "invalid arguments");
goto skipopts;
} else if (strcmp(argv[0], "newaliases") == 0) {
logident_base = "dma";
setlogident("%s", logident_base);
if (read_aliases() != 0)
- errx(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases);
- exit(EX_OK);
+ errx(1, "could not parse aliases file `%s'", config.aliases);
+ exit(0);
}
opterr = 0;
@@ -548,7 +547,7 @@ main(int argc, char **argv)
default:
fprintf(stderr, "invalid argument: `-%c'\n", optopt);
- exit(EX_USAGE);
+ exit(1);
}
}
argc -= optind;
@@ -556,10 +555,10 @@ main(int argc, char **argv)
opterr = 1;
if (argc != 0 && (showq || doqueue))
- errx(EX_USAGE, "sending mail and queue operations are mutually exclusive");
+ errx(1, "sending mail and queue operations are mutually exclusive");
if (showq + doqueue > 1)
- errx(EX_USAGE, "conflicting queue operations");
+ errx(1, "conflicting queue operations");
skipopts:
if (logident_base == NULL)
@@ -579,7 +578,7 @@ skipopts:
if (showq) {
if (load_queue(&queue) < 0)
- errlog(EX_NOINPUT, "can not load queue");
+ errlog(1, "can not load queue");
show_queue(&queue);
return (0);
}
@@ -587,38 +586,38 @@ skipopts:
if (doqueue) {
flushqueue_signal();
if (load_queue(&queue) < 0)
- errlog(EX_NOINPUT, "can not load queue");
+ errlog(1, "can not load queue");
run_queue(&queue);
return (0);
}
if (read_aliases() != 0)
- errlog(EX_SOFTWARE, "could not parse aliases file `%s'", config.aliases);
+ errlog(1, "could not parse aliases file `%s'", config.aliases);
if ((sender = set_from(&queue, sender)) == NULL)
- errlog(EX_SOFTWARE, NULL);
+ errlog(1, "set_from failed");
if (newspoolf(&queue) != 0)
- errlog(EX_CANTCREAT, "can not create temp file in `%s'", config.spooldir);
+ errlog(1, "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(EX_DATAERR, "invalid recipient `%s'", argv[i]);
+ errlogx(1, "invalid recipient `%s'", argv[i]);
}
if (LIST_EMPTY(&queue.queue) && !recp_from_header)
- errlogx(EX_NOINPUT, "no recipients");
+ errlogx(1, "no recipients");
if (readmail(&queue, nodot, recp_from_header) != 0)
- errlog(EX_NOINPUT, "can not read mail");
+ errlog(1, "can not read mail");
if (LIST_EMPTY(&queue.queue))
- errlogx(EX_NOINPUT, "no recipients");
+ errlogx(1, "no recipients");
if (linkspool(&queue) != 0)
- errlog(EX_CANTCREAT, "can not create spools");
+ errlog(1, "can not create spools");
/* From here on the mail is safe. */
diff --git a/contrib/dma/dma.h b/contrib/dma/dma.h
index acf5e44..4ce0094 100644
--- a/contrib/dma/dma.h
+++ b/contrib/dma/dma.h
@@ -1,9 +1,8 @@
/*
- * 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 Schubert <2@0x2c.org> and
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de> and
* Matthias Schmidt <matthias@dragonflybsd.org>.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,7 +43,6 @@
#include <arpa/inet.h>
#include <openssl/ssl.h>
#include <netdb.h>
-#include <sysexits.h>
#define VERSION "DragonFly Mail Agent " DMA_VERSION
@@ -175,8 +173,6 @@ extern char errmsg[ERRMSG_SIZE];
/* aliases_parse.y */
int yyparse(void);
-int yywrap(void);
-int yylex(void);
extern FILE *yyin;
/* conf.c */
diff --git a/contrib/dma/dns.c b/contrib/dma/dns.c
index dd9ebfc..fc5213f 100644
--- a/contrib/dma/dns.c
+++ b/contrib/dma/dns.c
@@ -1,9 +1,8 @@
/*
- * 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 Schubert <2@0x2c.org>.
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -68,6 +67,7 @@ add_host(int pref, const char *host, int port, struct mx_hostentry **he, size_t
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,26 +75,9 @@ add_host(int pref, const char *host, int port, struct mx_hostentry **he, size_t
hints.ai_protocol = IPPROTO_TCP;
snprintf(servname, sizeof(servname), "%d", port);
- 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);
- }
+ err = getaddrinfo(host, servname, &hints, &res0);
+ if (err)
+ return (err == EAI_AGAIN ? 1 : -1);
for (res = res0; res != NULL; res = res->ai_next) {
if (*ps + 1 >= roundup(*ps, count_inc)) {
diff --git a/contrib/dma/get-version.sh b/contrib/dma/get-version.sh
index d9691ac..aecc333 100755
--- a/contrib/dma/get-version.sh
+++ b/contrib/dma/get-version.sh
@@ -1,9 +1,7 @@
#!/bin/sh
-tmp=$1
-file=${tmp:=VERSION}
gitver=$(git describe 2>/dev/null | tr - .)
-filever=$(cat ${file} 2>/dev/null)
+filever=$(cat VERSION)
version=${gitver}
: ${version:=$filever}
diff --git a/contrib/dma/local.c b/contrib/dma/local.c
index e3e0152..6a6407e 100644
--- a/contrib/dma/local.c
+++ b/contrib/dma/local.c
@@ -1,9 +1,8 @@
/*
- * 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 Schubert <2@0x2c.org>.
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -82,7 +81,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(EX_SOFTWARE);
+ exit(1);
default:
/* parent */
diff --git a/contrib/dma/mail.c b/contrib/dma/mail.c
index a6d11fc..f899d4b 100644
--- a/contrib/dma/mail.c
+++ b/contrib/dma/mail.c
@@ -1,9 +1,8 @@
/*
- * 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 Schubert <2@0x2c.org>.
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -52,7 +51,7 @@ bounce(struct qitem *it, const char *reason)
/* Don't bounce bounced mails */
if (it->sender[0] == 0) {
syslog(LOG_INFO, "can not bounce a bounce message, discarding");
- exit(EX_SOFTWARE);
+ exit(1);
}
bzero(&bounceq, sizeof(bounceq));
@@ -133,7 +132,7 @@ bounce(struct qitem *it, const char *reason)
fail:
syslog(LOG_CRIT, "error creating bounce: %m");
delqueue(it);
- exit(EX_IOERR);
+ exit(1);
}
struct parse_state {
@@ -333,10 +332,10 @@ newaddr:
ps->pos = 0;
addr = strdup(ps->addr);
if (addr == NULL)
- errlog(EX_SOFTWARE, NULL);
+ errlog(1, "strdup failed");
if (add_recp(queue, addr, EXPAND_WILDCARD) != 0)
- errlogx(EX_DATAERR, "invalid recipient `%s'", addr);
+ errlogx(1, "invalid recipient `%s'", addr);
goto again;
}
@@ -375,9 +374,7 @@ readmail(struct queue *queue, int nodot, int recp_from_header)
if (fgets(line, sizeof(line) - 1, stdin) == NULL)
break;
if (had_last_line)
- errlogx(EX_DATAERR, "bad mail input format:"
- " from %s (uid %d) (envelope-from %s)",
- username, useruid, queue->sender);
+ errlogx(1, "bad mail input format");
linelen = strlen(line);
if (linelen == 0 || line[linelen - 1] != '\n') {
/*
@@ -408,7 +405,7 @@ readmail(struct queue *queue, int nodot, int recp_from_header)
if (parse_state.state != NONE) {
if (parse_addrs(&parse_state, line, queue) < 0) {
- errlogx(EX_DATAERR, "invalid address in header\n");
+ errlogx(1, "invalid address in header\n");
/* NOTREACHED */
}
}
@@ -419,7 +416,7 @@ readmail(struct queue *queue, int nodot, int recp_from_header)
strprefixcmp(line, "Bcc:") == 0)) {
parse_state.state = START;
if (parse_addrs(&parse_state, line, queue) < 0) {
- errlogx(EX_DATAERR, "invalid address in header\n");
+ errlogx(1, "invalid address in header\n");
/* NOTREACHED */
}
}
diff --git a/contrib/dma/net.c b/contrib/dma/net.c
index 26935a8..d95a788 100644
--- a/contrib/dma/net.c
+++ b/contrib/dma/net.c
@@ -1,5 +1,4 @@
/*
- * 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
diff --git a/contrib/dma/spool.c b/contrib/dma/spool.c
index d71332b..2864909 100644
--- a/contrib/dma/spool.c
+++ b/contrib/dma/spool.c
@@ -1,9 +1,8 @@
/*
- * 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 Schubert <2@0x2c.org>.
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -290,7 +289,7 @@ load_queue(struct queue *queue)
spooldir = opendir(config.spooldir);
if (spooldir == NULL)
- err(EX_NOINPUT, "reading queue");
+ err(1, "reading queue");
while ((de = readdir(spooldir)) != NULL) {
queuefn = NULL;
diff --git a/contrib/dma/util.c b/contrib/dma/util.c
index d528f31..a139b20 100644
--- a/contrib/dma/util.c
+++ b/contrib/dma/util.c
@@ -1,9 +1,8 @@
/*
- * 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 Schubert <2@0x2c.org>.
+ * by Simon 'corecode' Schubert <corecode@fs.ei.tum.de>.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
OpenPOWER on IntegriCloud