diff --git a/.env.example b/.env.example index 7867e3a..4cc787e 100644 --- a/.env.example +++ b/.env.example @@ -33,9 +33,11 @@ MAIL_FROM_NAME=Example # The from address to be used for outgoing email notifications from AnonAddy MAIL_FROM_ADDRESS=mailer@example.com MAIL_DRIVER=smtp -MAIL_HOST=localhost +MAIL_HOST=mail.example.com MAIL_PORT=25 -MAIL_ENCRYPTION=null +MAIL_ENCRYPTION=tls +MAIL_EHLO_DOMAIN=mail.example.com +MAIL_VERIFY_PEER=true # The SMTP FROM address to be used if the alias address cannot be, e.g. for a custom domain that is not verified for sending ANONADDY_RETURN_PATH=mailer@example.com diff --git a/app/CustomMailDriver/CustomMailer.php b/app/CustomMailDriver/CustomMailer.php index fb824da..0f443e8 100644 --- a/app/CustomMailDriver/CustomMailer.php +++ b/app/CustomMailDriver/CustomMailer.php @@ -112,7 +112,9 @@ class CustomMailer extends Mailer 'To', 'Message-ID', 'Subject', - 'Date' + 'Date', + 'Original-Sender', + 'Sender' ])->toArray(); $signedEmail = $dkimSigner->sign($symfonyMessage, $options); $symfonyMessage->setHeaders($signedEmail->getHeaders()); @@ -159,6 +161,12 @@ class CustomMailer extends Mailer $message->getHeaders()->remove('Alias-To'); } + // Add the original sender header here to prevent it altering the envelope from address + if ($originalSenderHeader = $message->getHeaders()->get('Original-Sender')) { + $message->getHeaders()->addMailboxHeader('Sender', $originalSenderHeader->getValue()); + $message->getHeaders()->remove('Original-Sender'); + } + return $this->transport->send($message, Envelope::create($envelopeMessage)); } finally { // diff --git a/app/Mail/ForwardEmail.php b/app/Mail/ForwardEmail.php index dce8261..c8a589d 100644 --- a/app/Mail/ForwardEmail.php +++ b/app/Mail/ForwardEmail.php @@ -181,7 +181,7 @@ class ForwardEmail extends Mailable implements ShouldQueue, ShouldBeEncrypted if ($this->originalSenderHeader) { $message->getHeaders() - ->addMailboxHeader('Sender', base64_decode($this->originalSenderHeader)); + ->addTextHeader('Original-Sender', base64_decode($this->originalSenderHeader)); } if ($this->emailInlineAttachments) { diff --git a/package-lock.json b/package-lock.json index 2758ef0..d35075e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2032,9 +2032,9 @@ } }, "node_modules/@vue/compiler-sfc": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.4.tgz", - "integrity": "sha512-WCaF33mlKLSvHDKvOD6FzTa5CI2FlMTeJf3MxJsNP0KDgRoI6RdXhHo9dtvCqV4Sywf9Owm17wTLT1Ymu/WsOQ==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.5.tgz", + "integrity": "sha512-f2xlkMzBLbTAUy13N4aJBnmb7+86WJqoGqHDibkGHd1/CabpNVvzhpBFlfWJjBrGWIcWywNGgGSuoWzpCUuD4w==", "dependencies": { "@babel/parser": "^7.18.4", "postcss": "^8.4.14", @@ -2976,9 +2976,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001365", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001365.tgz", - "integrity": "sha512-VDQZ8OtpuIPMBA4YYvZXECtXbddMCUFJk1qu8Mqxfm/SZJNSr1cy4IuLCOL7RJ/YASrvJcYg1Zh+UEUQ5m6z8Q==", + "version": "1.0.30001366", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001366.tgz", + "integrity": "sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA==", "funding": [ { "type": "opencollective", @@ -4018,9 +4018,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.186", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.186.tgz", - "integrity": "sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==" + "version": "1.4.187", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.187.tgz", + "integrity": "sha512-t3iFLHVIMhB8jGZ+8ui951nz6Bna5qKfhxezG3wzXdBJ79qFKPsE2chjjVFNqC1ewhfrPQrw9pmVeo4FFpZeQA==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -8646,11 +8646,11 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "node_modules/vue": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.4.tgz", - "integrity": "sha512-8KGyyzFSj/FrKj1y7jyEpv8J4osgZx6Lk1lVzh1aP4BqsXZhATH1r0gdJNz00MMyBhK0/m2cNoPuOZ1NzeiUEw==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.5.tgz", + "integrity": "sha512-mUDXXgBIFr9dk0k/3dpB6wtnCxRhe9mbGxWLtha9mTUrEWkdkZW1d58vl98VKWH067NA8f1Wj4Qwq7y7DDYfyw==", "dependencies": { - "@vue/compiler-sfc": "2.7.4", + "@vue/compiler-sfc": "2.7.5", "csstype": "^3.1.0" } }, @@ -8767,9 +8767,9 @@ } }, "node_modules/vue-template-compiler": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.4.tgz", - "integrity": "sha512-FgaeXI80FzhtDEsixq3WBrHLWpU2gzLb2DFusm62TrmCQyETsnUp0kTLpbExrTUw7g5YOnRf+xkh73nuEX+jGQ==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.5.tgz", + "integrity": "sha512-f5aofPdhOtoCW2jnK+iehkfVizDSrLuiyHcgIlGrXlkBXpIDfvm3HNX8emrhEduj5o5NyVulVbwpXW+zpRZQNg==", "dependencies": { "de-indent": "^1.0.2", "he": "^1.2.0" @@ -10771,9 +10771,9 @@ } }, "@vue/compiler-sfc": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.4.tgz", - "integrity": "sha512-WCaF33mlKLSvHDKvOD6FzTa5CI2FlMTeJf3MxJsNP0KDgRoI6RdXhHo9dtvCqV4Sywf9Owm17wTLT1Ymu/WsOQ==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.5.tgz", + "integrity": "sha512-f2xlkMzBLbTAUy13N4aJBnmb7+86WJqoGqHDibkGHd1/CabpNVvzhpBFlfWJjBrGWIcWywNGgGSuoWzpCUuD4w==", "requires": { "@babel/parser": "^7.18.4", "postcss": "^8.4.14", @@ -11528,9 +11528,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001365", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001365.tgz", - "integrity": "sha512-VDQZ8OtpuIPMBA4YYvZXECtXbddMCUFJk1qu8Mqxfm/SZJNSr1cy4IuLCOL7RJ/YASrvJcYg1Zh+UEUQ5m6z8Q==" + "version": "1.0.30001366", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001366.tgz", + "integrity": "sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA==" }, "chalk": { "version": "4.1.2", @@ -12295,9 +12295,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "electron-to-chromium": { - "version": "1.4.186", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.186.tgz", - "integrity": "sha512-YoVeFrGd/7ROjz4R9uPoND1K/hSRC/xADy9639ZmIZeJSaBnKdYx3I6LMPsY7CXLpK7JFgKQVzeZ/dk2br6Eaw==" + "version": "1.4.187", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.187.tgz", + "integrity": "sha512-t3iFLHVIMhB8jGZ+8ui951nz6Bna5qKfhxezG3wzXdBJ79qFKPsE2chjjVFNqC1ewhfrPQrw9pmVeo4FFpZeQA==" }, "elliptic": { "version": "6.5.4", @@ -15598,11 +15598,11 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "vue": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.4.tgz", - "integrity": "sha512-8KGyyzFSj/FrKj1y7jyEpv8J4osgZx6Lk1lVzh1aP4BqsXZhATH1r0gdJNz00MMyBhK0/m2cNoPuOZ1NzeiUEw==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.5.tgz", + "integrity": "sha512-mUDXXgBIFr9dk0k/3dpB6wtnCxRhe9mbGxWLtha9mTUrEWkdkZW1d58vl98VKWH067NA8f1Wj4Qwq7y7DDYfyw==", "requires": { - "@vue/compiler-sfc": "2.7.4", + "@vue/compiler-sfc": "2.7.5", "csstype": "^3.1.0" } }, @@ -15693,9 +15693,9 @@ } }, "vue-template-compiler": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.4.tgz", - "integrity": "sha512-FgaeXI80FzhtDEsixq3WBrHLWpU2gzLb2DFusm62TrmCQyETsnUp0kTLpbExrTUw7g5YOnRf+xkh73nuEX+jGQ==", + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.5.tgz", + "integrity": "sha512-f5aofPdhOtoCW2jnK+iehkfVizDSrLuiyHcgIlGrXlkBXpIDfvm3HNX8emrhEduj5o5NyVulVbwpXW+zpRZQNg==", "requires": { "de-indent": "^1.0.2", "he": "^1.2.0"