У меня есть приложение Laravel, которое отправляет электронное письмо каждый раз, когда пользователь хочет сбросить свой пароль. На моем компьютере все работает нормально, но когда я загрузил его на свой VPS-сервер (работает на Ionos и с установленным Plesk Obsidian), электронные письма не отправляются, ошибки не отображаются. Электронное письмо отправляется в очередь заданий, и задание также успешно завершается без ошибок.
Я попытался подключиться по ssh со своего сервера, и вот ответ:
openssl s_client -connect smtp.ionos.es:587 -starttls smtp
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
verify return:1
depth=0 C = DE, ST = Rheinland-Pfalz, L = Montabaur, O = 1&1 IONOS SE, CN = smtp.ionos.es
verify return:1
---
Certificate chain
0 s:C = DE, ST = Rheinland-Pfalz, L = Montabaur, O = 1&1 IONOS SE, CN = smtp.ionos.es
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
1 s:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGvzCCBaegAwIBAgIQAkvpQmOcYv666PeadD8D0zANBgkqhkiG9w0BAQsFADBe
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR0wGwYDVQQDExRHZW9UcnVzdCBSU0EgQ0EgMjAxODAe
Fw0yMDA3MjIwMDAwMDBaFw0yMjA3MjcxMjAwMDBaMGoxCzAJBgNVBAYTAkRFMRgw
FgYDVQQIEw9SaGVpbmxhbmQtUGZhbHoxEjAQBgNVBAcTCU1vbnRhYmF1cjEVMBMG
A1UECgwMMSYxIElPTk9TIFNFMRYwFAYDVQQDEw1zbXRwLmlvbm9zLmVzMIIBIjAN
BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs6FtGm46MqN3f1fS/zNhm0OCqcQ4
jjjyr+cjPC811xNJtGADBdS6ymiXrUd5dPNaJhj2JHt8wbw/tw+ycfNlg91pmQkh
GpT54giFDLZWOkSc54EDOgOcO6k34ZOoeOXRyhch3GAEak5+WJwGM7LedkTZjILL
d/MgwE6tR4bsagiuNdVozA2HtQEjEIlwD9ZyVGkmrV24xAqSER6H1BOD1YZhaISh
tikdS7zRJEPrw2KDz4kmxg/Na8LAVVzI4LonYYi1J9tsuK0UpZVLQlhSYFCsck4Q
cUmRHqIHrlHd6p0mW9kgRzaGYEsZvuhBhDW/I2+4qpvsfx3Y+mBAs0gPOQIDAQAB
o4IDazCCA2cwHwYDVR0jBBgwFoAUkFj/sJx1qFFUd7Ht8qNDFjiebMUwHQYDVR0O
BBYEFEyvAZrDZHHPO08pdOz6DlFloFJ1MGEGA1UdEQRaMFiCDXNtdHAuaW9ub3Mu
ZXOCDHBvcC5pb25vcy5lc4INaW1hcC5pb25vcy5lc4INc210cC4xYW5kMS5lc4IM
cG9wLjFhbmQxLmVzgg1pbWFwLjFhbmQxLmVzMA4GA1UdDwEB/wQEAwIFoDAdBgNV
HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPgYDVR0fBDcwNTAzoDGgL4YtaHR0
cDovL2NkcC5nZW90cnVzdC5jb20vR2VvVHJ1c3RSU0FDQTIwMTguY3JsMEwGA1Ud
IARFMEMwNwYJYIZIAYb9bAEBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRp
Z2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQICMHUGCCsGAQUFBwEBBGkwZzAmBggrBgEF
BQcwAYYaaHR0cDovL3N0YXR1cy5nZW90cnVzdC5jb20wPQYIKwYBBQUHMAKGMWh0
dHA6Ly9jYWNlcnRzLmdlb3RydXN0LmNvbS9HZW9UcnVzdFJTQUNBMjAxOC5jcnQw
DAYDVR0TAQH/BAIwADCCAX4GCisGAQQB1nkCBAIEggFuBIIBagFoAHYAKXm+8J45
OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4QAAAFzdV59fQAABAMARzBFAiAstDPu
ooEGKD4VxkFAgGyboZZmgGTcyHuin7+nUOFuswIhAIibYRxOJHTbTsAbWHtz1Xep
9Est6w/SUGVZQbJ3AHUBAHYAIkVFB1lVJFaWP6Ev8fdthuAjJmOtwEt/XcaDXG7i
DwIAAAFzdV59rgAABAMARzBFAiB4U2uTuGB5UNEroxCpQk05wJD9/Ee4oRfprcG7
UzBflgIhAI2CUcvStJim7VxSwfDpR1okdjZ6FfvtQ9IUw8F/iMllAHYAQcjKsd8i
RkoQxqE6CUKHXk4xixsD6+tLx2jwkGKWBvYAAAFzdV59SwAABAMARzBFAiEAhV0T
vEnjBOq8LGjruVELVDUywDFbWgxEo1CBAc8kHMMCIGWaDeTcgEZFC6ch2W9g8ZSL
7ZCkA9TfwQVgc7WSRxmKMA0GCSqGSIb3DQEBCwUAA4IBAQAKFvzVNIuW7Tv0IuLn
tyUoaLpjGZHoS6aeLLGHiFhaSSG7nr1yeCal3zpbiPKAFzoKAXmotGMlIiDvK0V+
mlriU/wpGrESAx450FmOb30JUQ5t1tsdAZ0H1L66wTfC5m0JCavPM7KnWn4seSao
AqSBy449b6vy31+I1JaAwzievZmE3QMPhO+OSBTRbs+MukO7NwnJ0xsOa3IGBG5+
v3xge1LeE0gUtRaDlSNjglhCROYRb050lkwQB/nNUVCCZOYBAUcIPEDhi2aJBin8
/tgsAcmDegDEOPSUzX1/LXwaBgPCDlo1wjb2bCK16TWA5NZ8bkmEzSk2HdR1/Vdj
MJfu
-----END CERTIFICATE-----
subject=C = DE, ST = Rheinland-Pfalz, L = Montabaur, O = 1&1 IONOS SE, CN = smtp.ionos.es
issuer=C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3657 bytes and written 418 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
250 STARTTLS
Но если я попробую с EHLO "I am here"
, я не получу ответа.
Это моя конфигурация .env:
MAIL_MAILER=smtp
MAIL_HOST=smtp.ionos.es
MAIL_PORT=587
MAIL_USERNAME=****
MAIL_PASSWORD=****
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=***
MAIL_FROM_NAME = "${APP_NAME}"
И вот я отправляю письмо:
<?php
namespace App\Mail\auth;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class RememberPassword extends Mailable
{
use Queueable, SerializesModels;
/**
* URL to reset password
*
* @var String
*/
public $url;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(string $url, string $token)
{
$this->url = str_replace('{token}', $token, $url);
$this->url = str_replace('%7Btoken%7D', $token, $url);
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this
->view('email.auth.remember-password');
}
}
Как я могу узнать, что мешает отправке электронных писем в рабочей среде?
Добавить в "config/mail.php"
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
и
Измени это
MAIL_ENCRYPTION=ssl
ЗАФИКСИРОВАННЫЙ
Когда я пытался использовать учетную запись Gmail, она работала, но не с Outlook. В конце концов, я зашел в почтовый ящик и, похоже, Outlook использует службу под названием Spamhaus, это список IP-адресов спама. Моя служба по какой-либо причине классифицировала электронное письмо как СПАМ, и Outlook отбрасывал все электронные письма.
Это сделает соединение небезопасным, не так ли? Он все еще работает в локальной сети, поэтому проблема должна быть в сервере.