From cbcd8d68553b0147d14e5ec29c73d2f93e09487f Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Debian Linux)" <rob@synchro.net> Date: Wed, 29 Mar 2023 16:49:43 -0700 Subject: [PATCH] Sanity-check the from_net_addr (SENDERNETADDR) and recipient list Anacron sends mail From: Anacron <root>, so deal (convert to root@youraddr). Also, gracefully handle a forgotten recipient list. --- exec/sendmail.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/exec/sendmail.js b/exec/sendmail.js index d9144b51cd..cffb23e27d 100755 --- a/exec/sendmail.js +++ b/exec/sendmail.js @@ -122,17 +122,30 @@ while((line=readln()) != undefined) { } } +// Sanity-check the from_net_addr (SENDERNETADDR) field +if(typeof hdr.from_net_addr == "string") { + if(hdr.from_net_addr.indexOf('@') < 0) + hdr.from_net_addr += '@'; + if(hdr.from_net_addr.indexOf('@') == hdr.from_net_addr.length - 1) + hdr.from_net_addr += system.inet_addr; +} +log.writeln("---"); +log.writeln("hdr = " + JSON.stringify(hdr, null, 4)); +log.writeln("rcpt_list = " + JSON.stringify(rcpt_list, null, 4)); + +if(rcpt_list.length < 1) { + writeln("No recipients specified!"); + exit(1); +} var msgbase = new MsgBase('mail'); if(!msgbase.open()) { writeln("Cannot send email (open error)!"); - exit(); + exit(1); } if(!msgbase.save_msg(hdr, body, rcpt_list)) { writeln("Cannot send email: " + msgbase.error); - exit(); + exit(1); } -log.writeln("---"); -log.writeln("hdr = " + JSON.stringify(hdr, null, 4)); -log.writeln("rcpt_list = " + JSON.stringify(rcpt_list, null, 4)); +log.writeln("Sent successfully"); log.writeln("==="); -- GitLab