Since I switched to SMTPD I noticed a few cron emails being marked as
spam by spamassassin, largely caused by the From: and To: headers not
containing a domain part.

If I read RFC822 correctly, the domain part is not optional, and thus
we should append one, unless MAILTO already specifies one.

Historical reasons from the land of pre-smtp why I'm wrong?


(Indentation style sucks balls in there. I kept it up.)

Index: do_command.c
RCS file: /data/openbsd/cvs/src/usr.sbin/cron/do_command.c,v
retrieving revision 1.36
diff -u -p -r1.36 do_command.c
--- do_command.c        22 Aug 2011 19:32:42 -0000      1.36
+++ do_command.c        13 Nov 2012 09:48:53 -0000
@@ -412,8 +412,13 @@ child_process(entry *e, user *u) {
                                        (void) _exit(EXIT_FAILURE);
-                               fprintf(mail, "From: root (Cron Daemon)\n");
-                               fprintf(mail, "To: %s\n", mailto);
+                               fprintf(mail, "From: root@%s (Cron Daemon)\n",
+                                       hostname);
+                               if (strchr(mailto, '@') == NULL)
+                                       fprintf(mail, "To: %s@%s\n", mailto,
+                                               hostname);
+                               else
+                                       fprintf(mail, "To: %s\n", mailto);
                                fprintf(mail, "Subject: Cron <%s@%s> %s\n",
                                        usernm, first_word(hostname, "."),

Reply via email to