Managing cron and similar E-Mails from headless systems

David Fletcher dave at thefletchers.net
Fri Feb 17 11:37:10 UTC 2017


On Fri, 2017-02-17 at 11:14 +0000, Chris Green wrote:
> I have several headless systems doing useful work around the place:-
> 
>     A Raspberry Pi providing local DNS and DHCP
> 
>     A Beaglebone Black on our boat monitoring temperatures and
> batteries
> 
>     An old desktop doing backups in the garage
> 
>     etc.
> 
> 
> Most of these have one or more cron jobs running periodic rsync
> backups, copying data, etc.  If the cron job has an error then it
> sends E-Mail to the owner of the job ('chris' in most cases, might be
> root in a couple).
> 
> It's (moderately) easy to set up an MTA and /etc/aliases so that the
> messages are sent to my normal E-Mail.  However I can't come up with
> a
> straightforward way of indicating where the messsage is *from*.
> 
> You can't just invent a domain name for the headless system because
> that gets the E-Mail rejected by intermediate systems that try and
> look up the sender host name.  Cron doesn't seem to have any
> mechanism
> for setting the sender's name, cron errors just come from 'root@'.
> 
> Can anyone suggest a neat way of handling this so that I know where
> the errors are coming from?
> 
> -- 
> Chris Green
> 

Hi Chris,
Here is a snippet of code that's part of a reminders by email
application that's been running on my home server for some years.
The application is kicked off by a cron job on behalf of a user like
so:-
0 3 * * * dave DFReminder
Perhaps it will help solve your problem?

strcpy(SendEmailBuf, "sendEmail -q -f ");
strdncat(SendEmailBuf, Settings.ReturnEmailFrom(), SENDEMAIL_BUF_LEN);
strdncat(SendEmailBuf, (char *)" -t ", SENDEMAIL_BUF_LEN);
strdncat(SendEmailBuf, Settings.ReturnEmailTo(), SENDEMAIL_BUF_LEN);
strdncat(SendEmailBuf, (char *)" -u \"", SENDEMAIL_BUF_LEN);
strdncat(SendEmailBuf, Dates.ReturnReminderTextPointer(),
SENDEMAIL_BUF_LEN);
strdncat(SendEmailBuf, (char *)"\"", SENDEMAIL_BUF_LEN);

strdncat(SendEmailBuf, (char *)" -m Repeating reminder",
SENDEMAIL_BUF_LEN);

system(SendEmailBuf);




More information about the ubuntu-users mailing list