How to get e-mail from (failed) cron-jobs in Ubuntu?
By default, cron will email the owner of the account under which the crontab is running.
The system-wide crontab is in /etc/crontab runs under the user `root'
Because root is used widely, I'd recommend adding a root alias to your /etc/aliases file anyways. (run 'newaliases' after)
The normal way to structure this is for root to be aliased to another user on the system, e.g. for me I'd alias 'root' to 'phil' (my user account) and alias 'phil' to my external email address.
If you have a specific user cron that you'd like emailed to you on output, you can use /etc/aliases again (providing you have superuser access) to redirect the user to another email address, or you can use the following at the top of your crontab:
MAILTO="[email protected]"
If mail should be sent to a local user, you may put just the username instead:
MAILTO=someuser
If you need more information see crontab(5) by running:
man 5 crontab
In order to get email sent from vixie cron you will need something that replicates the sendmail command. So installing postfix or SSMTP will sort this part out. If your using postfix then the aliases file can be used to map system users to real email addresses.
Adding MAILTO="[email protected]" to the top of a crontab will cause any output from the cron job to be emailed. This is regardless of error code.
For scripts that output errors correctly into STDERR then its easy to get emailed only when they go wrong just do this:
MAILTO="[email protected]"
0 5 * * * /bin/some_script > /dev/null
This will redirect just the STDOUT to null. If any STDERR messages are present they will get email to you.
However, I've found some scripts will output errors incorrectly as STDOUT and set the exit code to 1. I have not figure out a way to grab the output from these, but ignore the output if the exit code is 0. The only method I can think of is to redirect the output to a file, then if the exit code is not 0 output that file for cron to grab. Seems pretty horrible though.