Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Oct 2009 10:16:36 +0100
From:      Matthew Seaman <m.seaman@infracaninophile.co.uk>
To:        Kelly Martin <kellymartin@gmail.com>
Cc:        FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Re: changing cron's From: address in emails
Message-ID:  <4AE2C5F4.20109@infracaninophile.co.uk>
In-Reply-To: <1338880b0910240008h5d5e7846q8ccf184728d9e036@mail.gmail.com>
References:  <1338880b0910240008h5d5e7846q8ccf184728d9e036@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enigF5F4C721D6A84281256A3C65
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable

Kelly Martin wrote:
> Greetings, here's a simple question for the FreeBSD gurus out there. I
> have several servers running cron scripts daily for me, and they all
> send me e-mail with their output. Regardless of which server it is,
> each of these e-mails have the From: address looking exactly the same.
> They all say they are from the "Cron Daemon". Fine, but I'd like to
> know more clearly which server the cron output is from.
>=20
> How can I change the From: address of these emails to "Myserver Cron
> Daemon" instead? I know cron runs as the user, so it's not immediately
> obvious to me how to change the From: field. Already the subject line
> says something like "Cron <root@Myserver> ..." but this doesn't stand
> out enough for my tired eyes.

Hmmm... that's actually quite tricky.  There's no facility within
cron(8) for changing the address it sends /from/, and as the bit you
want to change is technically a comment on the From: line, and not
the actual sender address (the bit in the <angle brackets>) all the
address rewriting-fu in sendmail won't really help.  Besides, root@...
is listed as a member of the 'Exposed User' class: that is, addresses
that should be exempt from address rewriting, so you'ld also have to
modify that.

Do you control the mail server where you read your e-mail?  Can you use
eg. procmail(1) as a delivery agent?  You should be able to match e-mails=

from Cron and rewrite headers, or deliver cron e-mails into per-machine
mailboxes.  Something like this:

   :0 h
   * From:.*Cron <root@\/[^\.]+
     $MATCH

The other alternative is to re-write the cron scripts to send e-mail
themselves, rather than relying on cron(8) to capture their stdout/stderr=

and e-mail it for you.  Here's a handy shell programming trick that can
make that easier.  Somewhere near the top of the script, you can add
something like this:

   exec 2>&1 | /usr/sbin/sendmail -oi -t
   echo "From: Sender Name <sender@add.ress>
   echo "To: <recipient@some.where>
   echo "Subject: e-mail from cron job"
   echo ""

Then everything you print out in the script will be captured as the body
of the e-mail and sent to the specified recipient.  You might get some=20
warnings about forgery in the mail headers if the userid the script runs
as is not the same as the 'From:' address.

	Cheers,

	Matthew

--=20
Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey     Ramsgate
                                                  Kent, CT11 9PW


--------------enigF5F4C721D6A84281256A3C65
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.13 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEAREIAAYFAkrixfoACgkQ8Mjk52CukIzcbgCfftS2TJdmxZmk13UmF6c4Qydl
Gh8An2JbP9562n+KzVPAnk4td+JmYCsA
=l97P
-----END PGP SIGNATURE-----

--------------enigF5F4C721D6A84281256A3C65--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4AE2C5F4.20109>