Trong quá trình gửi Email thông qua các ứng dụng hoặc hệ thống quản trị website như WordPress, lỗi “SMTP: Could not connect to SMTP host” là một trong những sự cố phổ biến khiến nhiều người dùng gặp khó khăn. Lỗi này thường gây gián đoạn việc truyền tải email, ảnh hưởng đến các chức năng quan trọng như gửi thông báo, email xác nhận đơn hàng hay liên hệ khách hàng.
Để khắc phục triệt để vấn đề, việc hiểu rõ nguyên nhân gây lỗi và áp dụng các biện pháp xử lý phù hợp là điều cần thiết. Bài viết này sẽ giúp bạn nắm bắt nguyên nhân gốc rễ của lỗi, đồng thời hướng dẫn chi tiết các bước khắc phục hiệu quả.
1. Lỗi SMTP không thể kết nối đến SMTP Host là gì?

Là một lỗi xảy ra khi hệ thống không thể thiết lập kết nối với máy chủ SMTP (SMTP host) – máy chủ chịu trách nhiệm gửi email ra ngoài từ ứng dụng hoặc Website của bạn. Nói cách dễ hiểu hơn thì: Ứng dụng hoặc website của bạn đã cố gắng kết nối đến máy chủ gửi thư (SMTP server), nhưng quá trình này thất bại do một lý do nào đó – như sai thông tin cấu hình, cổng kết nối bị chặn, xác thực không đúng, hoặc máy chủ từ chối kết nối.
2. Nguyên nhân gây ra SMTP không thể kết nối đến SMTP host?
- Sai địa chỉ SMTP host hoặc cổng (port).
- Tường lửa hoặc nhà cung cấp hosting chặn cổng SMTP (ví dụ cổng 465 hoặc 587).
- Thông tin đăng nhập email (tên người dùng, mật khẩu) không chính xác.
- SMTP server bị quá tải hoặc đang gặp sự cố.
- Chưa bật xác thực SMTP hoặc TLS/SSL không đúng cấu hình.
- Kết nối mạng bị gián đoạn hoặc DNS không phân giải được tên máy chủ.
3. Cách sửa lỗi SMTP không thể kết nối đến SMTP Host
Cách 1: Kiểm tra cài đặt SMTP của bạn:
Bước đầu tiên để giải quyết lỗi “SMTP connect() failed” là xác minh cài đặt SMTP của bạn. Đảm bảo rằng máy chủ SMTP , cổng , tên người dùng và mật khẩu được cấu hình đúng trong tập lệnh PHPMailer của bạn. Đảm bảo kiểm tra lại chúng trong phần cài đặt của ứng dụng. Bạn có thể lấy cài đặt SMTP chính xác cho tài khoản email của mình thông qua Site Tools -> Email -> Accounts -> Actions menu bên cạnh tài khoản email của bạn -> Mail Configuration -> Manual Settings.
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = ‘mail.yourdomainname.com’;
$mail->SMTPAuth = true;
$mail->Username = ‘user@yourdomainname.com’;
$mail->Password = ‘password’;
$mail->SMTPSecure = ‘tls’;
$mail->Port = 587;
Cách 2: Hệ thống Firewall của VPS đã block các cổng SMTP ra 25, 465 và 587
Đối với trong CWP (Centos web panel), hệ thống Firewall chính là CSF Firewall. Bạn có thể mở chặn các port ra bằng các chỉnh file “/etc/csf/csf.conf “.
Bước 1: Tìm các dòng đoạn sau:
# Allow outgoing TCP ports TCP_OUT = “20,21,22,25,53,80,110,113,443,2030,2031,587,993,995” # Allow outgoing IPv6 TCP ports TCP6_OUT = “20,21,22,25,53,80,110,113,443,2030,2031,587,993,995” SMTP_BLOCK = “1”

Bước 2: Sau đó, bạn thêm vào các port 25, 465 và 587 còn thiếu.
# Allow outgoing TCP ports TCP_OUT = “20,21,22,25,53,80,110,113,443,2030,2031,587,993,995,465” # Allow outgoing IPv6 TCP ports TCP6_OUT = “20,21,22,25,53,80,110,113,443,2030,2031,587,993,995,465”
Hoàn thành tất cả các bước trên, bạn chỉ cần reboot lại máy chủ.
Cách 3:
Bật thông báo nhật ký gỡ lỗi bổ sung:
- Trong Webadmin, điều hướng đến Nhật ký > Gỡ lỗi .
- Nhấp chuột phải vào vùng nhật ký và nhấp vào Xóa nhật ký .
- Nhấp chuột phải vào vùng nhật ký và nhấp vào Tin nhắn .
- Kích hoạt Máy chủ SMTP, Máy khách SMTP và Xử lý hàng đợi.
Gửi email thử nghiệm tới địa chỉ email của người nhận bị ảnh hưởng.
Thu thập thông tin chi tiết về nhật ký:
Thu thập nhật ký gỡ lỗi: Điều hướng đến Nhật ký > Gỡ lỗi , nhấp chuột phải vào nhật ký và nhấp vào Lưu nhật ký .
Tạo thông tin hỗ trợ: Điều hướng đến Trạng thái > Tình trạng hệ thống > Thông tin hỗ trợ.
Lưu ý: Bạn có thể vô hiệu hóa an toàn các thông báo Nhật ký gỡ lỗi bổ sung mà bạn đã bật sau khi lưu nhật ký để tránh làm lộn xộn nhật ký nếu muốn.
Xem lại nhật ký để biết thông báo lỗi:
Thu thập bất kỳ lỗi nào trong đoạn trích nhật ký Thông tin hỗ trợ liên quan đến email kiểm tra không thành công.
Ví dụ: “[ DD/MM/YYYY HH:MM:SS] Không thể kết nối với máy chủ SMTP <server_name>. Tin nhắn sẽ nằm trong hàng đợi tin nhắn. “
Tìm kiếm địa chỉ email đích trong Nhật ký gỡ lỗi để xác định vị trí cuộc hội thoại SMTP cho email thử nghiệm của bạn. 
Sau khi xác định được cuộc hội thoại SMTP cho email thử nghiệm của mình, bạn có thể so sánh các mục nhật ký của Máy khách SMTP (smtpc) và Xử lý hàng đợi (qproc) để xác định nơi xảy ra lỗi gửi.
Thông thường, điều này sẽ dẫn đến các thông báo tương tự như sau, xác nhận rằng lỗi đang xảy ra khi cố gắng liên hệ với máy chủ bên ngoài
[DD/MM/YYYY HH:MM:SS] [123145371508736] {qproc} SEND_REMOTE: Đã bắt đầu phân phối tin nhắn trong hàng đợi id=5d2be366-00000000 sender=<username@connect_domain.com> [DD/MM/YYYY HH:MM:SS] [123145371508736] {qproc} Quy tắc phân phối MX mặc định được áp dụng cho người gửi <username@connect_domain.com> và người nhận <ext_user@external_domain.com> [DD/MM/YYYY HH:MM:SS] [123145371508736] {qproc} Đang lên lịch người nhận: ext_user@external_domain.com vào một lô trong quy tắc 'external_domain.com' [DD/MM/YYYY HH:MM:SS] [123145371508736] {smtpc} Đang kết nối với máy chủ mail.external_domain.com (<ip_address_of_external_server>:25) bằng giao diện cục bộ 0.0.0.0 ... [DD/MM/YYYY HH:MM:SS] [123145371508736] {smtpc} Gửi thư: Không thể kết nối với máy chủ SMTP. Người dùng: , máy chủ: mail.external_domain.com [DD/MM/YYYY HH:MM:SS] [123145371508736] {qproc} SEND_MX: Kết quả cho người nhận ext_user@external_domain.com: bị trì hoãn, Trạng thái: 4.4.1 Không thể kết nối với máy chủ
Xác minh kết nối qua Telnet
Từ Máy chủ Kerio Connect của bạn, hãy thử thiết lập Telnet qua cổng 25 tới máy chủ bên ngoài:$ telnet external_domain.com 25

Nếu bạn thấy thời gian chờ kết nối hoặc kết nối bị từ chối, điều này xác nhận rằng sự cố kết nối không chỉ giới hạn ở MailServer.
Xem lại cấu hình phần mềm trung gian (cài đặt Tường lửa hoặc Chống vi-rút) để đảm bảo lưu lượng cho email Kiểm tra có thể truyền từ cổng chuẩn SMTP (25) ra bên ngoài.
3. Cuối cùng:
Hi vọng với những cách trên, bạn có thể “tìm và fix lỗi SMTP không thể kết nối đến SMTP Host”, chúc các bạn thành công
