BillionMail not sending emails? How to check if port 25 is blocked
You installed BillionMail, the DNS records are green, you send a test... and nothing arrives. Not in the inbox, not in spam. The most common reason by far: your VPS provider blocks outgoing port 25, the port mail servers use to talk to each other. This guide shows how to confirm it in two minutes and what to do about it.
Typical symptoms
Why providers block port 25
Spammers love cheap VPS servers, so many cloud providers block outgoing port 25 by default, especially on new accounts. Some unblock it on request (often after your first paid invoice), some never do. Google Cloud, for example, always blocks it; AWS, Azure, DigitalOcean and Hetzner restrict it on many accounts. Rules change, so check your provider's documentation or ask support.
Step 1: Test port 25 from your server
Log in to your server over SSH (or aaPanel's Terminal) and run:
or , so one busy server doesn't fool you.
Step 2: Rule out your own firewall
aaPanel's Security page controls incoming traffic, so it rarely blocks outgoing mail. But check for outgoing rules anyway:
If you see nothing that rejects port 25 and the test still times out, the block is upstream at your provider.
Step 3: Look at the queue
In BillionMail, open Settings > Send Queue. Each stuck message shows a Delay Reason. From the command line you get the same list with:
"Connection timed out" on port 25 confirms the block. Other reasons (rate limits, rejections) are covered in our guide BillionMail emails stuck in the queue.
Step 4: Ask your provider to unblock port 25
Open a support ticket. Short and honest works best:
Step 5: Use an SMTP relay instead
A relay is an outside email service that delivers mail for you. Your server talks to it on port 587 or 465, which providers almost never block. Popular options: Amazon SES, Mailgun, SendGrid, Brevo and Postmark.
In BillionMail, open SMTP (left menu). It opens the SMTP Relay Service Management page, where you add one or more relay services:
![[Image: attachment.php?aid=422]](https://adminsforum.com/attachment.php?aid=422)
Don't forget incoming port 25
Outgoing is for sending. Incoming port 25 is how replies and bounce messages reach you. Test it from another computer (not the server itself):
If that times out, open port 25 in aaPanel's Security page and in your provider's cloud firewall.
Port 25 is open but mail still doesn't arrive?
More BillionMail troubleshooting
Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026. Folder paths and container names can differ slightly on your server. lists your container names; use them where a command says POSTFIX, DOVECOT or WEBMAIL.
You installed BillionMail, the DNS records are green, you send a test... and nothing arrives. Not in the inbox, not in spam. The most common reason by far: your VPS provider blocks outgoing port 25, the port mail servers use to talk to each other. This guide shows how to confirm it in two minutes and what to do about it.
Typical symptoms
- Test emails and campaigns never arrive at Gmail, Outlook or anywhere else.
- The task shows as sent, but Settings > Send Queue keeps growing.
- The delay reason in the queue says next to addresses likeCode:
Connection timed out.Code:gmail-smtp-in.l.google.com[25]
Why providers block port 25
Spammers love cheap VPS servers, so many cloud providers block outgoing port 25 by default, especially on new accounts. Some unblock it on request (often after your first paid invoice), some never do. Google Cloud, for example, always blocks it; AWS, Azure, DigitalOcean and Hetzner restrict it on many accounts. Rules change, so check your provider's documentation or ask support.
Step 1: Test port 25 from your server
Log in to your server over SSH (or aaPanel's Terminal) and run:
Code:
nc -vz -w 5 gmail-smtp-in.l.google.com 25- "succeeded" or "open": port 25 works. Your problem is something else; see the checklist at the end.
- "timed out": port 25 is blocked, almost always by your provider.
- "command not found": install netcat (orCode:
apt install netcat-openbsd), or use this instead:Code:dnf install nmap-ncat
Code:timeout 5 bash -c '</dev/tcp/gmail-smtp-in.l.google.com/25' && echo OPEN || echo BLOCKED
Code:
mx1.mail.yahoo.comCode:
outlook-com.olc.protection.outlook.comStep 2: Rule out your own firewall
aaPanel's Security page controls incoming traffic, so it rarely blocks outgoing mail. But check for outgoing rules anyway:
Code:
ufw status verbose 2>/dev/null | head -20
firewall-cmd --list-all 2>/dev/null | head -20
iptables -S OUTPUT | headStep 3: Look at the queue
In BillionMail, open Settings > Send Queue. Each stuck message shows a Delay Reason. From the command line you get the same list with:
Code:
docker exec POSTFIX postqueue -p | tail -30Step 4: Ask your provider to unblock port 25
Open a support ticket. Short and honest works best:
Quote:Hello, I run a mail server on this VPS (IP: YOUR_IP, hostname: mail.example.com) for my own newsletter and transactional email. SPF, DKIM, DMARC and reverse DNS are set up. Could you please unblock outgoing port 25? I only send to subscribers who signed up, and every email has an unsubscribe link.Many providers ask you to confirm you won't send spam, or require the account to be a few weeks old. While you wait, Step 5 gets mail flowing.
Step 5: Use an SMTP relay instead
A relay is an outside email service that delivers mail for you. Your server talks to it on port 587 or 465, which providers almost never block. Popular options: Amazon SES, Mailgun, SendGrid, Brevo and Postmark.
In BillionMail, open SMTP (left menu). It opens the SMTP Relay Service Management page, where you add one or more relay services:
- Create an account with the relay service and verify your sending domain there (they give you their own DNS records to add).
- Create SMTP credentials in the relay service.
- In BillionMail, click Add, choose the service and enter the host, port (587 is the usual choice), username and password.
- Send a test from a task and check the queue again.
Don't forget incoming port 25
Outgoing is for sending. Incoming port 25 is how replies and bounce messages reach you. Test it from another computer (not the server itself):
Code:
nc -vz -w 5 mail.example.com 25Port 25 is open but mail still doesn't arrive?
- Mail arrives in spam: see BillionMail emails go to spam even though SPF, DKIM and DMARC pass.
- Rejected with a 5xx error: check the delay reason; often SPF/DKIM or a blacklisted IP. Run a test with our deliverability guide.
- DNS not finished: see BillionMail DNS setup.
More BillionMail troubleshooting
- SSL certificate won't apply
- DKIM fails although the record exists
- Emails stuck in the send queue
- Can't open the dashboard
- Webmail (Roundcube) problems
- Emails going to spam
- Update safely and roll back
Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026. Folder paths and container names can differ slightly on your server.
Code:
docker ps --format "{{.Names}}" | grep -i billionmail
