]> BookStack Code Mirror - bookstack/commitdiff
Merge branch 'feature/mail-verify-peer' into development
authorDan Brown <redacted>
Sun, 23 Apr 2023 14:05:13 +0000 (15:05 +0100)
committerDan Brown <redacted>
Sun, 23 Apr 2023 14:05:13 +0000 (15:05 +0100)
.env.example.complete
app/Config/mail.php
phpunit.xml
tests/Unit/ConfigTest.php

index f46bfccc02ae8b84a0eef374b83c6c004c11c594..7071846a36e9da31868d3b7a1ff24096463dd3df 100644 (file)
@@ -83,6 +83,7 @@ MAIL_PORT=1025
 MAIL_USERNAME=null
 MAIL_PASSWORD=null
 MAIL_ENCRYPTION=null
+MAIL_VERIFY_SSL=true
 
 # Command to use when email is sent via sendmail
 MAIL_SENDMAIL_COMMAND="/usr/sbin/sendmail -bs"
@@ -383,4 +384,4 @@ LOG_FAILED_LOGIN_CHANNEL=errorlog_plain_webserver
 # IP address '146.191.42.4' would result in '146.191.x.x' being logged.
 # For the IPv6 address '2001:db8:85a3:8d3:1319:8a2e:370:7348' this would result as:
 # '2001:db8:85a3:8d3:x:x:x:x'
-IP_ADDRESS_PRECISION=4
\ No newline at end of file
+IP_ADDRESS_PRECISION=4
index b57c152d9d8062384ca9ed38d0d14fe9386a540c..87514aa409809c875cbe5523404214c440e71dba 100644 (file)
@@ -32,6 +32,7 @@ return [
             'encryption' => env('MAIL_ENCRYPTION', 'tls'),
             'username' => env('MAIL_USERNAME'),
             'password' => env('MAIL_PASSWORD'),
+            'verify_peer' => env('MAIL_VERIFY_SSL', true),
             'timeout' => null,
             'local_domain' => env('MAIL_EHLO_DOMAIN'),
         ],
index 8a526a70428258ed3ba4d5148baea83c478a507f..704372c5c64f123a42702d62809653ceda95199c 100644 (file)
@@ -27,6 +27,7 @@
     <server name="DB_CONNECTION" value="mysql_testing"/>
     <server name="BCRYPT_ROUNDS" value="4"/>
     <server name="MAIL_DRIVER" value="array"/>
+    <server name="MAIL_VERIFY_SSL" value="true"/>
     <server name="LOG_CHANNEL" value="single"/>
     <server name="AUTH_METHOD" value="standard"/>
     <server name="AUTH_AUTO_INITIATE" value="false"/>
index 9966a4fb15114683393cb46e603da2e6431aa6d2..10376751633c5e225a1451cc361ddb41870ae2e5 100644 (file)
@@ -3,6 +3,8 @@
 namespace Tests\Unit;
 
 use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Mail;
+use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport;
 use Tests\TestCase;
 
 /**
@@ -96,11 +98,30 @@ class ConfigTest extends TestCase
         $this->checkEnvConfigResult('EXPORT_PAGE_SIZE', 'a4', 'snappy.pdf.options.page-size', 'A4');
     }
 
-    public function test_sendmail_command_is_configurage()
+    public function test_sendmail_command_is_configurable()
     {
         $this->checkEnvConfigResult('MAIL_SENDMAIL_COMMAND', '/var/sendmail -o', 'mail.mailers.sendmail.path', '/var/sendmail -o');
     }
 
+    public function test_mail_disable_ssl_verification_alters_mailer()
+    {
+        $getStreamOptions = function (): array {
+            /** @var EsmtpTransport $transport */
+            $transport = Mail::mailer('smtp')->getSymfonyTransport();
+            return $transport->getStream()->getStreamOptions();
+        };
+
+        $this->assertEmpty($getStreamOptions());
+
+
+        $this->runWithEnv('MAIL_VERIFY_SSL', 'false', function () use ($getStreamOptions) {
+            $options = $getStreamOptions();
+            $this->assertArrayHasKey('ssl', $options);
+            $this->assertFalse($options['ssl']['verify_peer']);
+            $this->assertFalse($options['ssl']['verify_peer_name']);
+        });
+    }
+
     /**
      * Set an environment variable of the given name and value
      * then check the given config key to see if it matches the given result.