Index: dma.h =================================================================== --- dma.h (revision 338012) +++ dma.h (working copy) @@ -60,6 +60,7 @@ #endif #define SMTP_PORT 25 /* Default SMTP port */ #define CON_TIMEOUT (5*60) /* Connection timeout per RFC5321 */ +#define MAX_LINE_RFC2822 999 /* Max line length per RFC2822 plus \n */ #define STARTTLS 0x002 /* StartTLS support */ #define SECURETRANS 0x004 /* SSL/TLS in general */ Index: local.c =================================================================== --- local.c (revision 338012) +++ local.c (working copy) @@ -126,7 +126,7 @@ deliver_local(struct qitem *it) { char fn[PATH_MAX+1]; - char line[1000]; + char line[MAX_LINE_RFC2822+1]; const char *sender; const char *newline = "\n"; size_t linelen; Index: mail.c =================================================================== --- mail.c (revision 338012) +++ mail.c (working copy) @@ -41,8 +41,6 @@ #include "dma.h" -#define MAX_LINE_RFC822 1000 - void bounce(struct qitem *it, const char *reason) { @@ -350,20 +348,20 @@ while (linelen > 0) { len = linelen; - if (linelen > MAX_LINE_RFC822) { - len = MAX_LINE_RFC822 - 10; + if (linelen > MAX_LINE_RFC2822) { + len = MAX_LINE_RFC2822 - 1; } if (fwrite(line, len, 1, queue->mailf) != 1) return (-1); - if (linelen <= MAX_LINE_RFC822) + if (linelen <= MAX_LINE_RFC2822) break; if (fwrite("\n", 1, 1, queue->mailf) != 1) return (-1); - line += MAX_LINE_RFC822 - 10; + line += MAX_LINE_RFC2822 - 1; linelen = strlen(line); } return (0); @@ -376,7 +374,7 @@ char *line = NULL; ssize_t linelen; size_t linecap = 0; - char newline[MAX_LINE_RFC822]; + char newline[MAX_LINE_RFC2822]; size_t error; int had_headers = 0; int had_from = 0; @@ -407,7 +405,7 @@ break; if (!had_headers) { - if (linelen > MAX_LINE_RFC822) { + if (linelen > MAX_LINE_RFC2822) { /* XXX also split headers */ errlogx(EX_DATAERR, "bad mail input format:" " from %s (uid %d) (envelope-from %s)", Index: net.c =================================================================== --- net.c (revision 338012) +++ net.c (working copy) @@ -352,7 +352,7 @@ deliver_to_host(struct qitem *it, struct mx_hostentry *host) { struct authuser *a; - char line[1000]; + char line[MAX_LINE_RFC2822+1]; size_t linelen; int fd, error = 0, do_auth = 0, res = 0;