diff -ur b/atd.c a/atd.c --- b/atd.c 2022-02-22 15:21:06.649147600 +0100 +++ a/atd.c 2022-02-22 15:49:13.640184845 +0100 @@ -98,6 +98,10 @@ #define BATCH_INTERVAL_DEFAULT 60 #define CHECK_INTERVAL 3600 +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + /* Global variables */ uid_t real_uid, effective_uid; @@ -115,6 +119,7 @@ static int nothing_to_do = 0; unsigned int batch_interval; static int run_as_daemon = 0; +static int mail_with_hostname = 0; static int hupped = 0; static volatile sig_atomic_t term_signal = 0; @@ -301,6 +306,7 @@ char fmt[64]; unsigned long jobno; int rc; + char hostbuf[MAXHOSTNAMELEN]; #ifdef WITH_PAM int retcode; #endif @@ -455,6 +461,11 @@ write_string(fd_out, "Subject: Output from your job "); write_string(fd_out, jobbuf); + if (mail_with_hostname > 0) { + gethostname(hostbuf, MAXHOSTNAMELEN-1); + write_string(fd_out, " "); + write_string(fd_out, hostbuf); + } write_string(fd_out, "\nTo: "); write_string(fd_out, mailname); write_string(fd_out, "\n\n"); @@ -905,7 +916,7 @@ run_as_daemon = 1; batch_interval = BATCH_INTERVAL_DEFAULT; - while ((c = getopt(argc, argv, "sdl:b:f")) != EOF) { + while ((c = getopt(argc, argv, "sdnl:b:f")) != EOF) { switch (c) { case 'l': if (sscanf(optarg, "%lf", &load_avg) != 1) @@ -927,6 +938,10 @@ daemon_foreground++; break; + case 'n': + mail_with_hostname=1; + break; + case 's': run_as_daemon = 0; break;