skip to Main Content

I have a Laravel app that sends an email every time the user want to reset his password. Everything works fine in my computer, but when I uploaded it to my VPS server (powered by Ionos and with Plesk Obsidian installed) no emails are sended, no error is shown. The email is sended inside a job queue, and the job finish successfully with no error as well.

I tried to connect with ssh from my server and that’s the answer:

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

But if I try with EHLO "I am here" I receive no response.

This is my .env config:

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}"

And here I send the email:

<?php

namespace AppMailauth;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;

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');
    }
}

How can I find out what is preventing emails of being sent in production?

2

Answers


  1. Chosen as BEST ANSWER

    FIXED

    When I tried with a Gmail account, it was working, but not with Outlook. At the end I went to the mailbox and seems like Outlook uses a service called Spamhaus, it's a list of spam IPs. My service provided classified the email as SPAM for any reason and Outlook was bouncing all the emails.


  2. Add in "config/mail.php"

    'stream' => [
       'ssl' => [
           'allow_self_signed' => true,
           'verify_peer' => false,
           'verify_peer_name' => false,
       ],
    ],
    

    and

    Change it

    MAIL_ENCRYPTION=ssl
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search