1. API/src/modules/ContentChecker.js checkDkim(data) { return super.post('http://localhost:5000/verify-dkim', data); } 2. OWAAddIn/src/taskpane/taskpane.js dkim = 'DKIM' + item.data.analytics[0].dkim + '' 3. Tab/src/kue.js import ContentChecker from './modules/ContentChecker'; var string = index ? parsedEmail.headerLines[index]['line'] : ""; var spf = "", dkim = "", dmarc = ""; return stringSearcher.find(string, 'spf=pass') .then(async r => { // spf = (r.length) ? "pass" : "fail" spf = (r.length) ? "pass" : await checkSpf(SenderIP, spfDomain) return stringSearcher.find(string, 'dkim=pass') .then(async q => { // dkim = (q.length) ? "pass" : "fail" dkim = (q.length) ? "pass" : (await new ContentChecker().checkDkim({mail : rawHeader}) == "True" ? "pass" : "fail") console.log("-----dkim-----",dkim) return stringSearcher.find(string, 'dmarc=pass') }).then(async z => { // dmarc = (z.length) ? "pass" : "fail" dmarc = (z.length) ? "pass" : (spf == "pass" ? "pass" : (dkim == "pass" ? "pass" : "fail")) if (spf == "pass") aggreagateData["spfPassCount"] = 1; if (dkim == "pass") aggreagateData["dkimPassCount"] = 1; if (dmarc) aggreagateData["dmarcPassCount"] = 1; console.log("{ dmarc: dmarc, spf: spf, dkim: dkim }", { dmarc: dmarc, spf: spf, dkim: dkim }) return db.Header.update({ dmarc: dmarc, spf: spf, dkim: dkim }, { where: { id: header.id } }).then(r => [r, header, sender, parsedEmail]) }) }) }) 4. Tab/src/modules/ContentChecker.js import API from './API'; import config from '../config'; export default class ContentChecker extends API { constructor() { console.log("config.deceptiveCheck.baseUrl","http://localhost:5000") super("http://localhost:5000") } checkDkim(data) { return super.post({ 'path': '/verify-dkim' }, data) } } 5. /home/ubuntu/tabMaster/tab/API/src/api/resources/email/email.controller.js var parseString = require('xml2js').parseString; function parseXmlAndVerifyDkim(header) { return new Promise((resolve, reject) => { parseString(header, { trim: true }, async function (err, result) { resolve(await new ContentChecker().checkDkim({ mail: result["s:Envelope"]["s:Body"][0]["m:GetItemResponse"][0]["m:ResponseMessages"][0]["m:GetItemResponseMessage"][0]["m:Items"][0]["t:Message"][0]["t:ExtendedProperty"][0]["t:Value"][0] }) == "True" ? "Pass" : "Fail"); }); }) } dkim = (q.length) ? "Pass" : (await new ContentChecker().checkDkim({mail : req.body.header}) == "True" ? "Pass" : "Fail") dkim = await parseXmlAndVerifyDkim(req.body.header);