Date: Sat, 24 Oct 2009 10:42:27 -0500 From: Paul Schmehl <pschmehl_lists@tx.rr.com> To: Matthew Seaman <m.seaman@infracaninophile.co.uk>, Kelly Martin <kellymartin@gmail.com> Cc: FreeBSD Questions <freebsd-questions@freebsd.org> Subject: Re: changing cron's From: address in emails Message-ID: <D79559A491F151EA3B0703A4@[10.0.0.20]> In-Reply-To: <4AE2C5F4.20109@infracaninophile.co.uk> References: <1338880b0910240008h5d5e7846q8ccf184728d9e036@mail.gmail.com> <4AE2C5F4.20109@infracaninophile.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
--On Saturday, October 24, 2009 4:16 AM -0500 Matthew Seaman <m.seaman@infracaninophile.co.uk> wrote: > 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. >> >> 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 > warnings about forgery in the mail headers if the userid the script runs > as is not the same as the 'From:' address. > Why not just echo `hostname` as the first line of every script? Isn't that what he really wants to know? Or echo "This script came from `hostname`"? Paul Schmehl As if it wasn't already obvious, my opinions are my own and not those of my employer.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D79559A491F151EA3B0703A4>