diff --git a/.eslintrc b/.eslintrc index 661d3467..140a1b3c 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,9 +1,11 @@ { "rules": { "indent": 0, - "no-await-in-loop": 0 + "no-await-in-loop": 0, + "require-atomic-updates": 0, + "no-prototype-builtins": 0 }, - "extends": ["nodemailer", "prettier"], + "extends": ["nodemailer", "prettier"], "parserOptions": { "ecmaVersion": 2017 } diff --git a/lib/api/messages.js b/lib/api/messages.js index 4586a870..5ad2786f 100644 --- a/lib/api/messages.js +++ b/lib/api/messages.js @@ -2622,7 +2622,9 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler) => { let compiled = compiler.compile(); let envelope = compiled.getEnvelope(); - envelope.from = data.from.address = await validateFromAddress(userData, envelope.from); + let envelopeFrom = envelope.from; + envelope.from = data.from.address = await validateFromAddress(userData, envelopeFrom); + if (!envelope.to.length && referencedMessage && ['reply', 'replyAll'].includes(result.value.reference.action)) { envelope.to = envelope.to.concat(parseAddresses(referencedMessage.replyTo || [])).concat(parseAddresses(referencedMessage.replyCc || [])); data.to = [].concat(referencedMessage.replyTo || []); @@ -3115,7 +3117,9 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler) => { ) ) }; - envelope.from = await validateFromAddress(userData, envelope.from); + + let envelopeFrom = envelope.from; + envelope.from = await validateFromAddress(userData, envelopeFrom); } if (!envelope.to || !envelope.to.length) { diff --git a/lib/maildropper.js b/lib/maildropper.js index a4788ffd..750cdd73 100644 --- a/lib/maildropper.js +++ b/lib/maildropper.js @@ -89,18 +89,15 @@ class Maildropper { break; case 'http': - [] - .concat(options.to || []) - .concat(target.recipient || []) - .forEach(to => { - deliveries.push({ - to, - http: true, - targetUrl: target.value, - skipSRS: true, - forwardedFor: target.recipient - }); + [].concat(options.to || []).forEach(to => { + deliveries.push({ + to, + http: true, + targetUrl: target.value, + skipSRS: true, + forwardedFor: target.recipient }); + }); break; } }); diff --git a/package.json b/package.json index 4809c227..ebb20cc6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wildduck", - "version": "1.20.8", + "version": "1.20.9", "description": "IMAP/POP3 server built with Node.js and MongoDB", "main": "server.js", "scripts": { @@ -19,16 +19,16 @@ "apidoc": "0.17.7", "browserbox": "0.9.1", "chai": "4.2.0", - "eslint": "5.16.0", + "eslint": "6.0.1", "eslint-config-nodemailer": "1.2.0", - "eslint-config-prettier": "4.3.0", + "eslint-config-prettier": "6.0.0", "grunt": "1.0.4", "grunt-cli": "1.3.2", - "grunt-eslint": "21.1.0", + "grunt-eslint": "22.0.0", "grunt-mocha-test": "0.13.3", "grunt-shell-spawn": "0.4.0", "grunt-wait": "0.3.0", - "icedfrisby": "2.0.0", + "icedfrisby": "2.2.1", "mailparser": "2.7.1", "mocha": "6.1.4", "request": "2.88.0" @@ -39,13 +39,13 @@ "base32.js": "0.1.0", "bcryptjs": "2.4.3", "gelf": "2.0.1", - "generate-password": "1.4.1", + "generate-password": "1.4.2", "he": "1.2.0", "html-to-text": "5.1.1", "humanname": "0.2.2", - "iconv-lite": "0.4.24", + "iconv-lite": "0.5.0", "ioredfour": "1.0.2-ioredis-02", - "ioredis": "4.10.0", + "ioredis": "4.11.1", "isemail": "3.2.0", "joi": "14.3.1", "js-yaml": "3.13.1", @@ -58,13 +58,13 @@ "mongo-cursor-pagination": "7.1.0", "mongodb": "3.2.7", "mongodb-extended-json": "1.10.1", - "node-forge": "0.8.4", + "node-forge": "0.8.5", "nodemailer": "6.2.1", "npmlog": "4.1.2", - "openpgp": "4.5.3", + "openpgp": "4.5.5", "pem": "1.14.2", "pwnedpasswords": "1.0.4", - "qrcode": "1.3.3", + "qrcode": "1.3.4", "restify": "8.3.3", "restify-logger": "2.0.1", "seq-index": "1.1.0",