diff --git a/.env.example.complete b/.env.example.complete index f46bfccc0..7071846a3 100644 --- a/.env.example.complete +++ b/.env.example.complete @@ -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 diff --git a/app/Config/mail.php b/app/Config/mail.php index b57c152d9..87514aa40 100644 --- a/app/Config/mail.php +++ b/app/Config/mail.php @@ -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'), ], diff --git a/phpunit.xml b/phpunit.xml index 8a526a704..704372c5c 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -27,6 +27,7 @@ + diff --git a/tests/Unit/ConfigTest.php b/tests/Unit/ConfigTest.php index 9966a4fb1..103767516 100644 --- a/tests/Unit/ConfigTest.php +++ b/tests/Unit/ConfigTest.php @@ -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.