Hi,

delivery success DSNs include the message body if not explicitely disabled by RET HDRS. But according to rfc3461 4.3 the body should _only_ be included for failure DSNs:

[…] If a DSN contains no indications of delivery failure, only the headers of the message should be returned.

The default behaviour when neither RET HDRS nor RET FULL is requested is not specified:

If no RET parameter is supplied, the MTA MAY return either the headers of the message or the entire message for any DSN containing indication of failed deliveries.

To me it seems more sane to not include the whole message, which may well be quite large.

Therefore I propose the following change. OK ?


Christopher

Index: bounce.c
===================================================================
RCS file: /cvs/src/usr.sbin/smtpd/bounce.c,v
retrieving revision 1.87
diff -u -p -r1.87 bounce.c
--- bounce.c    8 Feb 2023 08:20:54 -0000       1.87
+++ bounce.c    20 Apr 2023 17:30:58 -0000
@@ -538,8 +538,8 @@ bounce_next(struct bounce_session *s)
                        if ((len = getline(&line, &sz, s->msgfp)) == -1)
                                break;
                        if (len == 1 && line[0] == '\n' && /* end of headers */
-                           s->msg->bounce.type == B_DELIVERED &&
-                           s->msg->bounce.dsn_ret ==  DSN_RETHDRS) {
+                           (s->msg->bounce.type != B_FAILED ||
+                           s->msg->bounce.dsn_ret != DSN_RETFULL)) {
                                free(line);
                                fclose(s->msgfp);
                                s->msgfp = NULL;

Reply via email to