Attached is an updated version which follows the indentation of the existing code better (and which doesn't have mangled whitespace all over -- always calling `diff -Naurt` is an old habit). Sorry for noise.
With kind regards, Jan -- Trojita, a fast e-mail client -- http://trojita.flaska.net/
diff -Naur postfix-2.10-20120801.orig/man/man1/sendmail.1
postfix-2.10-20120801/man/man1/sendmail.1
--- postfix-2.10-20120801.orig/man/man1/sendmail.1 2012-06-30
23:48:48.000000000 +0200
+++ postfix-2.10-20120801/man/man1/sendmail.1 2012-08-24 18:46:45.956482577
+0200
@@ -179,9 +179,10 @@
Set the envelope sender address. This is the address where
delivery problems are sent to. With Postfix versions before 2.1, the
\fBErrors-To:\fR message header overrides the error return address.
-.IP "\fB-R \fIreturn_limit\fR (ignored)"
-Limit the size of bounced mail. Use the \fBbounce_size_limit\fR
-configuration parameter instead.
+.IP "\fB-R \fIreturn_limit\fR"
+Limit the size of bounced mail ("full" or "hdrs").
+
+Supported since 2.10, ignored in earlier versions.
.IP \fB-q\fR
Attempt to deliver all queued mail. This is implemented by
executing the \fBpostqueue\fR(1) command.
diff -Naur postfix-2.10-20120801.orig/src/global/rec_type.h
postfix-2.10-20120801/src/global/rec_type.h
--- postfix-2.10-20120801.orig/src/global/rec_type.h 2007-03-20
16:25:10.000000000 +0100
+++ postfix-2.10-20120801/src/global/rec_type.h 2012-08-24 18:24:28.093450782
+0200
@@ -68,7 +68,7 @@
#define REC_TYPE_VERP 'V' /* VERP delimiters */
#define REC_TYPE_DSN_RET '<' /* DSN full/hdrs */
-#define REC_TYPE_DSN_ENVID 'i' /* DSN full/hdrs */
+#define REC_TYPE_DSN_ENVID 'i' /* DSN envelope id */
#define REC_TYPE_DSN_ORCPT 'o' /* DSN orig rcpt address */
#define REC_TYPE_DSN_NOTIFY 'n' /* DSN notify flags */
diff -Naur postfix-2.10-20120801.orig/src/sendmail/sendmail.c
postfix-2.10-20120801/src/sendmail/sendmail.c
--- postfix-2.10-20120801.orig/src/sendmail/sendmail.c 2012-06-30
23:48:46.000000000 +0200
+++ postfix-2.10-20120801/src/sendmail/sendmail.c 2012-08-24
19:36:01.151552812 +0200
@@ -173,9 +173,9 @@
/* Set the envelope sender address. This is the address where
/* delivery problems are sent to. With Postfix versions before 2.1, the
/* \fBErrors-To:\fR message header overrides the error return address.
-/* .IP "\fB-R \fIreturn_limit\fR (ignored)"
-/* Limit the size of bounced mail. Use the \fBbounce_size_limit\fR
-/* configuration parameter instead.
+/* .IP "\fB-R \fIreturn_limit\fR"
+/* Limit the size of bounced mail ("full" or "hdrs").
+/* Supported since 2.10, ignored in earlier versions.
/* .IP \fB-q\fR
/* Attempt to deliver all queued mail. This is implemented by
/* executing the \fBpostqueue\fR(1) command.
@@ -605,7 +605,7 @@
/* enqueue - post one message */
static void enqueue(const int flags, const char *encoding,
- const char *dsn_envid, int dsn_notify,
+ const char *dsn_envid, int dsn_notify, int dsn_ret,
const char *rewrite_context, const char *sender,
const char *full_name, char **recipients)
{
@@ -744,6 +744,9 @@
if (dsn_notify)
rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d",
MAIL_ATTR_DSN_NOTIFY, dsn_notify);
+ if (dsn_ret)
+ rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d",
+ MAIL_ATTR_DSN_RET, dsn_ret);
if (REC_PUT_BUF(dst, REC_TYPE_RCPT, buf) < 0)
msg_fatal_status(EX_TEMPFAIL,
"%s(%ld): error writing queue file: %m",
@@ -883,6 +886,10 @@
if (dsn_notify)
rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d",
MAIL_ATTR_DSN_NOTIFY, dsn_notify);
+ if (dsn_ret)
+ rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d",
+ MAIL_ATTR_DSN_RET, dsn_ret);
+
if (rec_put(dst, REC_TYPE_RCPT, *cpp, strlen(*cpp)) < 0)
msg_fatal_status(EX_TEMPFAIL,
"%s(%ld): error writing queue file: %m",
@@ -970,6 +977,7 @@
uid_t uid;
const char *rewrite_context = MAIL_ATTR_RWR_LOCAL;
int dsn_notify = 0;
+ int dsn_ret = 0;
const char *dsn_envid = 0;
int saved_optind;
@@ -1162,6 +1170,10 @@
if ((dsn_notify = dsn_notify_mask(optarg)) == 0)
msg_warn("bad -N option value -- ignored");
break;
+ case 'R':
+ if ((dsn_ret = dsn_ret_code(optarg)) == 0)
+ msg_warn("bad -R option value -- ignored");
+ break;
case 'V': /* DSN, was: VERP */
if (strlen(optarg) > 100)
msg_warn("too long -V option value -- ignored");
@@ -1289,6 +1301,8 @@
msg_fatal_status(EX_USAGE, "-t option cannot be used with -bv");
if (dsn_notify)
msg_fatal_status(EX_USAGE, "-N option cannot be used with -bv");
+ if (dsn_ret)
+ msg_fatal_status(EX_USAGE, "-R option cannot be used with -bv");
if (msg_verbose == 1)
msg_fatal_status(EX_USAGE, "-v option cannot be used with -bv");
}
@@ -1333,7 +1347,7 @@
mail_run_replace(var_command_dir, ext_argv->argv);
/* NOTREACHED */
} else {
- enqueue(flags, encoding, dsn_envid, dsn_notify,
+ enqueue(flags, encoding, dsn_envid, dsn_notify, dsn_ret,
rewrite_context, sender, full_name, argv + OPTIND);
exit(0);
/* NOTREACHED */
signature.asc
Description: OpenPGP digital signature
