I’ve seen responses in these forums to problems similar to mine:
Event log shows “SMTP connect() failed.”
But I can’t find these logs you all reference. I have a dedicated server with root access (cPanel/WHM), so I can look everywhere: exim_mainlog, error_log, etc. But none of them show anything relevant to the PHPlist failure.
Please note, I’m using a third-party SMTP server: privateemail.com from Namecheap.
TL;DR;
SETTINGS:
PHPlist v 3.4.1
admin/PHPMailer/VERSION file contains “5.2.22”
class.smtp.php
line 125: public $do_debug = self::DEBUG_SERVER;
line 140: public $Debugoutput = ‘error_log’; (tried ‘echo’ and ‘html’ but got blank screens after submitting test.)
CONFIG.PHP
// if you have an SMTP server, set it here. Otherwise it will use the normal php mail() function
/* PLEASE NOTE - THIS SECTION COMMENTED OUT
If the mail server is using a self-signed certificate, then you need to add the following as well:
$phpmailer_smtpoptions = array(
‘ssl’ => array(
‘verify_peer’ => false,
‘verify_peer_name’ => false,
‘allow_self_signed’ => true
)
);
*/
duncanc, I see you reply to many forum members, and glad to have folks like you around.
My problem is that that is the only line in my PHPlist Event Log. Others in this forum (including some of your replies) allude to a much more verbose set of error messages to use for troubleshooting.
In config/config.php I have
define(‘PHPMAILER_SMTP_DEBUG’, 1);
and as I noted in opening post, in admin/PHPMailer/class.smtp.php I have
public $do_debug = self::DEBUG_LOWLEVEL;
& public $Debugoutput = ‘error_log’;
…but the only thing in Event Log is “Error sending email to [abc.at.domain.com] SMTP connect() failed.”
USING PuTTY, I got this so far… telnet mail.privateemail.com 587
Trying 198.54.122.60…
Connected to mail.privateemail.com.
Escape character is ‘^]’.
220 PrivateEmail.com prod Mail Node ehlo server1.my_dedi_server.com 250-mta-08.privateemail.com
250-PIPELINING
250-SIZE 81788928
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-CHUNKING
250 STARTTLS mail from: <noreply@domain_on_dedi.com>
530 Must issue a STARTTLS command first
@eLIANT In phplist you need to send a test email when composing the campaign. The debug output then appears at the top of the page. That should show similar results to putty
530 Must issue a STARTTLS command first
You might not have the right combination of PHPMAILER_SECURE and PHPMAILERPORT in config.php. But that might be to do with using putty.
Increasing the value of PHPMAILER_SMTP_DEBUG to 2 or 3 should show more detail, which might help.
All was well until here, when the remote server replied that I had not specified any valid recipients. And that’s fine; I don’t care at this point. I’ve successfully connected from my server to the server providing the email services. All I have to do now is translate what I’ve done into the proper configs for PHPlist.
Is config/config.php the ONLY place I should change options?
What about admin/PHPMailer/class.smtp.php ?
I have define(‘PHPMAILER_SMTP_DEBUG’, 4);
And I’ve tried every combination of
PHPMAILERPORT (587, 465)
PHPMAILER_SECURE (‘ssl’, ‘tls’, false)
Here are my results:
Connection: opening to ssl://mail.privateemail.com:465, timeout=10, options=array ()
Connection: Failed to connect to server. Error number 2. "Error notice: stream_socket_client(): unable to connect to ssl://mail.privateemail.com:465 (Connection timed out)
SMTP ERROR: Failed to connect to server: Connection timed out (110)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
(I’m not sure </> is working)
I’ve confirmed that ports 465 and 587 are open incoming and outgoing.
The following TELNET exchange worked, and I received the test email, but for the life of me, every combination of PHPlist config parameters ends in failure. I don’t understand why TELNET works but not PHPlist. I’m going to download a fresh copy to see if there are differences between my PHPMailer and the fresh copy.
openssl s_client -starttls smtp -crlf -quiet -connect mail.privateemail.com:587
250 STARTTLS
EHLO server1.elianthosting.com
250-mta-10.privateemail.com
250-PIPELINING
250-SIZE 81788928
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 CHUNKING
AUTH LOGIN [Base64 encoded login name]
334 UGFzc3dvcmQ6
[Base64 encoded password]
235 2.7.0 Authentication successful
MAIL FROM:
250 2.1.0 Ok
RCPT TO:
250 2.1.5 Ok
DATA
354 End data with .
From: "PHPlist"
To: "Phil Kelly"
Subject: test of the telnet process
Date: Fri, Sep 2021 16:11:00 -0500
No differences. And PrivateEmail.com, after being more helpful than any other service/software provider ever, has finally dropped this case because all my settings are correct and TELNET works, so the problem is not on their end. True enough; the problem must lay with PHPMailer.
So now I’m doing a line-by-line walkthrough of PHPMailer to see where the problem is.
I host several websites, and most use email services from my server. Yes, I can send from my business email on my server to Gmail.
Also, are there any settings saved with the campaign that may be interfering? I’m resending the same test email over and over after changing config.php (Of course, I have to log out and start over in order to reload config.php.)
@eLIANT The campaign settings won’t be affecting this. The config.php file is read on each page load so you don’t need to logout.
Is this phplist installation https://concord-township.com/newsblast/ that you are testing? It is still using version 3.4.1 but you said that you had upgraded to latest, 3.6.4.
I think that the earlier release uses phpmailer 5, whereas now phpmailer 6 is the default.
In file admin/PHPMailer6/src/SMTP.php this is the function that tries to connect, line 372
I’ve manually downloaded the latest version and am running PHPlist 3.6.4 and
PHPMailer6.
Same damn results.
Using port 486 SSL or TLS I get “Connection refused.”
2021-09-27 04:17:48 Connection: opening to mail.privateemail.com:486, timeout=11, options=array()
2021-09-27 04:17:48 Connection failed. Error #2: stream_socket_client(): unable to connect to mail.privateemail.com:486 (Connection refused) [/home/concord/public_html/newsblast/admin/PHPMailer6/src/SMTP.php line 387]
2021-09-27 04:17:48 SMTP ERROR: Failed to connect to server: Connection refused (111)
Using port 587 SSL or TLS I get “Connection timeout.”
2021-09-27 04:31:45 Connection: opening to ssl://mail.privateemail.com:587, timeout=9, options=array()
2021-09-27 04:31:54 Connection failed. Error #2: stream_socket_client(): unable to connect to ssl://mail.privateemail.com:587 (Connection timed out) [/home/concord/public_html/newsblast/admin/PHPMailer6/src/SMTP.php line 387]
2021-09-27 04:31:54 SMTP ERROR: Failed to connect to server: Connection timed out (110)
@eLIANT You probably meant to use port 465 instead of 486.
But it looks like outgoing connections are being blocked by something. I’m not a system admin so don’t really know where to look. If you are knowledgeable enough then trying to monitor network traffic to the remote IP address or from the web server process might show something. netstat or tcpdump might do that.
From my desktop phplist can connect on port 465 with ssl, and port 587 with tls. Both then fail on the authentication.
Ooops. Of course, you’re right. I re-ran it using 465 and TLS and SSL… Same results.
This might be just a coincidence: When I installed the fresh version it was 3.6.4. Now today, 3.6.5 is available. I clicked “Updater” and got the page with the four icons: Initialize, Backup, Download, Perform update. “Initialize” was highlighted for a half-second, then when white. Since then nothing has happened. Previously, I told you I was running the latest version because I have the auto-update option turned on, but that’s evidently not working.
@eLIANT The auto update doesn’t always work very well, it does have some restrictions. Probably best to install 3.6.5 manually. I think that the new release came today.