Просмотр исходного кода

Fixed Sender header pass through

Will Browning 3 лет назад
Родитель
Сommit
f2ad225cb5
4 измененных файлов с 46 добавлено и 36 удалено
  1. 4 2
      .env.example
  2. 9 1
      app/CustomMailDriver/CustomMailer.php
  3. 1 1
      app/Mail/ForwardEmail.php
  4. 32 32
      package-lock.json

+ 4 - 2
.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

+ 9 - 1
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 {
             //

+ 1 - 1
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) {

+ 32 - 32
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"