From owner-freebsd-www@FreeBSD.ORG Thu Nov 5 10:20:06 2009 Return-Path: Delivered-To: freebsd-www@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EDCFF1065672 for ; Thu, 5 Nov 2009 10:20:05 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id B26178FC28 for ; Thu, 5 Nov 2009 10:20:05 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id nA5AK5lE041077 for ; Thu, 5 Nov 2009 10:20:05 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id nA5AK580041076; Thu, 5 Nov 2009 10:20:05 GMT (envelope-from gnats) Resent-Date: Thu, 5 Nov 2009 10:20:05 GMT Resent-Message-Id: <200911051020.nA5AK580041076@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-www@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Dennis Yusupoff Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC97F106566C for ; Thu, 5 Nov 2009 10:18:46 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id A210D8FC1F for ; Thu, 5 Nov 2009 10:18:46 +0000 (UTC) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.3/8.14.3) with ESMTP id nA5AIjDj045260 for ; Thu, 5 Nov 2009 10:18:45 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.3/8.14.3/Submit) id nA5AIjIo045257; Thu, 5 Nov 2009 10:18:45 GMT (envelope-from nobody) Message-Id: <200911051018.nA5AIjIo045257@www.freebsd.org> Date: Thu, 5 Nov 2009 10:18:45 GMT From: Dennis Yusupoff To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: www/140304: Patch for adding MAILFROM ability to cron X-BeenThere: freebsd-www@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD Project Webmasters List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Nov 2009 10:20:06 -0000 >Number: 140304 >Category: www >Synopsis: Patch for adding MAILFROM ability to cron >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-www >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Nov 05 10:20:05 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Dennis Yusupoff >Release: 7.2-release >Organization: Smart-Telecom ISP >Environment: FreeBSD Gingema.smartspb.net 7.2-PRERELEASE FreeBSD 7.2-PRERELEASE #1: Mon Oct 5 14:03:54 MSD 2009 root@Gingema.smartspb.net:/usr/obj/usr/src/sys/ROUTER_HOME_NETS i386 >Description: After some looking for ability to change sender mail address of cron daemon I decided to add this feature right in the cron daemon as it already done with MAILTO since I found nowhere in mailing list reasons to not do it. :) I think that it could be useful for many people. I'm a newbie in C so any corrections are welcome. >How-To-Repeat: Make a patch also :) >Fix: Use environment "MAILFOM" in your file crontab for change sender e-mail or will be used default (username@hostname). Patch attached with submission follows: --- do_command.c.orig 2008-08-01 12:13:01.000000000 +0400 +++ do_command.c 2009-11-05 12:57:56.000000000 +0300 @@ -83,7 +83,7 @@ { int stdin_pipe[2], stdout_pipe[2]; register char *input_data; - char *usernm, *mailto; + char *usernm, *mailto, *mailfrom; int children = 0; # if defined(LOGIN_CAP) struct passwd *pwd; @@ -101,6 +101,7 @@ */ usernm = env_get("LOGNAME", e->envp); mailto = env_get("MAILTO", e->envp); + mailfrom = env_get("MAILFROM", e->envp); #ifdef PAM /* use PAM to see if the user's account is available, @@ -468,6 +469,17 @@ else mailto = usernm; } + /* get name of sender. this is MAILFROM if set to a + * valid local username; USER otherwise. + */ + if (mailfrom == NULL) + /* MAILFROM not present, set to USER + */ + mailfrom = usernm; + + if (mailfrom && *mailfrom == '\0') + mailfrom = NULL; + if (mailto && *mailto == '\0') mailto = NULL; @@ -488,7 +500,7 @@ warn("%s", MAILCMD); (void) _exit(ERROR_EXIT); } - fprintf(mail, "From: %s (Cron Daemon)\n", usernm); + fprintf(mail, "From: %s (Cron Daemon)\n", mailfrom); fprintf(mail, "To: %s\n", mailto); fprintf(mail, "Subject: Cron <%s@%s> %s\n", usernm, first_word(hostname, "."), >Release-Note: >Audit-Trail: >Unformatted: