<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[AdminsForum - aaPanel BillionMail Guides]]></title>
		<link>https://adminsforum.com/</link>
		<description><![CDATA[AdminsForum - https://adminsforum.com]]></description>
		<pubDate>Sat, 24 Oct 2026 18:29:40 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[How to Add a Second Sending Domain in BillionMail (DNS, SSL and Mailboxes)]]></title>
			<link>https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes</link>
			<pubDate>Fri, 23 Oct 2026 18:34:31 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Add a Second Sending Domain in BillionMail (DNS, SSL and Mailboxes)</span></span><br />
<br />
One BillionMail server can send and receive mail for many domains: your main brand, a second website, a client, or a separate newsletter subdomain like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news.example.com</code></div></div>. Each domain gets its own DKIM key, mailboxes and settings. This guide adds a second one.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Domain or subdomain?</span></span><br />
A common setup is to send newsletters from a <span style="font-weight: bold;" class="mycode_b">subdomain</span> (for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news.example.com</code></div></div>) and keep the main domain for normal mail and password resets. Mailbox providers track reputation per domain as well as per IP, so a newsletter problem then doesn't drag down your important mail. Either way, the steps are the same.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Add the domain</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Domain</span> and click <span style="font-weight: bold;" class="mycode_b">Add Domain</span>. This is the form:<br />
<img src="https://adminsforum.com/attachment.php?aid=437" loading="lazy"  alt="[Image: attachment.php?aid=437]" class="mycode_img" /><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Domain</span>: the new domain, without <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>www</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://</code></div></div>, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.net</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Domain Quota</span> and <span style="font-weight: bold;" class="mycode_b">Mailbox Count</span>: the total storage and the number of mailboxes this domain may use.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Dedicated IP</span>: only if your server has more than one public IP and you want this domain to send from its own. <span style="font-weight: bold;" class="mycode_b">Test Connection</span> checks the IP works. Leave empty otherwise.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Hostname</span>: the mail hostname for that IP, if you set one. Its reverse DNS must match.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Catch All</span>: forward mail sent to non-existent addresses to one mailbox. Handy for a small business, but it also catches a lot of spam.<br />
</li>
</ul>
Click <span style="font-weight: bold;" class="mycode_b">Confirm</span>. The domain appears in the list with its quota, mailboxes, SSL status and actions.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Publish the DNS records</span></span><br />
Click <span style="font-weight: bold;" class="mycode_b">DNS Records</span> next to the new domain. BillionMail shows the records to add at your DNS provider: <span style="font-weight: bold;" class="mycode_b">MX</span>, <span style="font-weight: bold;" class="mycode_b">SPF</span>, <span style="font-weight: bold;" class="mycode_b">DKIM</span> and <span style="font-weight: bold;" class="mycode_b">DMARC</span> (plus an A record for the mail host if you use a new one). Each domain has its <span style="font-weight: bold;" class="mycode_b">own DKIM key</span>, so copy them from this domain's page, not the first domain's.<br />
<br />
A few tips:<ul class="mycode_list"><li>If you use Cloudflare, set mail-related A records to <span style="font-weight: bold;" class="mycode_b">DNS only</span> (grey cloud). Mail can't go through Cloudflare's proxy.<br />
</li>
<li>The MX can point to the same mail hostname as your first domain, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>. You don't need a new hostname for each domain.<br />
</li>
<li>Only one SPF record per domain.<br />
</li>
</ul>
Wait for the records to turn green. Details for each record are in <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail DNS setup explained</a>; if DKIM stays red, see <a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails even though the record exists</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: SSL</span></span><br />
The <span style="font-weight: bold;" class="mycode_b">SSL</span> column shows the certificate status and days left. BillionMail requests a Let's Encrypt certificate once DNS points to the server. If it fails, see <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Create mailboxes</span></span><br />
Under <span style="font-weight: bold;" class="mycode_b">Mailboxes</span>, add the addresses the new domain needs. At minimum: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postmaster@</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>abuse@</code></div></div>, plus the sending address such as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news@example.net</code></div></div>. See <a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">mailboxes and webmail</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 5: Choose which domain sends</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Set Default</span> in the domain list makes a domain the default choice in forms.<br />
</li>
<li>For each campaign, pick the domain and mailbox in the <span style="font-weight: bold;" class="mycode_b">From</span> field.<br />
</li>
<li>For the Send API, the domain is part of each API's settings. See <a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">the Send API guide</a>.<br />
</li>
<li>If you use a relay, bind it to the domain under <span style="font-weight: bold;" class="mycode_b">SMTP</span>. See <a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay setup</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 6: Test and warm up</span></span><br />
Send a test from the new domain to Gmail and check <span style="font-weight: bold;" class="mycode_b">Show original</span> for SPF, DKIM and DMARC PASS. A new domain has no reputation yet, even on a warm IP, so grow its volume slowly. See <a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">the IP warm-up plan</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Removing a domain later</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Delete</span> in the domain list removes the domain. Before you click it, export or move any mail you want to keep from its mailboxes. Remove its DNS records afterwards.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=437" target="_blank" title="">billionmail-add-domain.jpg</a> (Size: 85.19 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Add a Second Sending Domain in BillionMail (DNS, SSL and Mailboxes)</span></span><br />
<br />
One BillionMail server can send and receive mail for many domains: your main brand, a second website, a client, or a separate newsletter subdomain like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news.example.com</code></div></div>. Each domain gets its own DKIM key, mailboxes and settings. This guide adds a second one.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Domain or subdomain?</span></span><br />
A common setup is to send newsletters from a <span style="font-weight: bold;" class="mycode_b">subdomain</span> (for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news.example.com</code></div></div>) and keep the main domain for normal mail and password resets. Mailbox providers track reputation per domain as well as per IP, so a newsletter problem then doesn't drag down your important mail. Either way, the steps are the same.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Add the domain</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Domain</span> and click <span style="font-weight: bold;" class="mycode_b">Add Domain</span>. This is the form:<br />
<img src="https://adminsforum.com/attachment.php?aid=437" loading="lazy"  alt="[Image: attachment.php?aid=437]" class="mycode_img" /><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Domain</span>: the new domain, without <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>www</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://</code></div></div>, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.net</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Domain Quota</span> and <span style="font-weight: bold;" class="mycode_b">Mailbox Count</span>: the total storage and the number of mailboxes this domain may use.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Dedicated IP</span>: only if your server has more than one public IP and you want this domain to send from its own. <span style="font-weight: bold;" class="mycode_b">Test Connection</span> checks the IP works. Leave empty otherwise.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Hostname</span>: the mail hostname for that IP, if you set one. Its reverse DNS must match.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Catch All</span>: forward mail sent to non-existent addresses to one mailbox. Handy for a small business, but it also catches a lot of spam.<br />
</li>
</ul>
Click <span style="font-weight: bold;" class="mycode_b">Confirm</span>. The domain appears in the list with its quota, mailboxes, SSL status and actions.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Publish the DNS records</span></span><br />
Click <span style="font-weight: bold;" class="mycode_b">DNS Records</span> next to the new domain. BillionMail shows the records to add at your DNS provider: <span style="font-weight: bold;" class="mycode_b">MX</span>, <span style="font-weight: bold;" class="mycode_b">SPF</span>, <span style="font-weight: bold;" class="mycode_b">DKIM</span> and <span style="font-weight: bold;" class="mycode_b">DMARC</span> (plus an A record for the mail host if you use a new one). Each domain has its <span style="font-weight: bold;" class="mycode_b">own DKIM key</span>, so copy them from this domain's page, not the first domain's.<br />
<br />
A few tips:<ul class="mycode_list"><li>If you use Cloudflare, set mail-related A records to <span style="font-weight: bold;" class="mycode_b">DNS only</span> (grey cloud). Mail can't go through Cloudflare's proxy.<br />
</li>
<li>The MX can point to the same mail hostname as your first domain, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>. You don't need a new hostname for each domain.<br />
</li>
<li>Only one SPF record per domain.<br />
</li>
</ul>
Wait for the records to turn green. Details for each record are in <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail DNS setup explained</a>; if DKIM stays red, see <a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails even though the record exists</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: SSL</span></span><br />
The <span style="font-weight: bold;" class="mycode_b">SSL</span> column shows the certificate status and days left. BillionMail requests a Let's Encrypt certificate once DNS points to the server. If it fails, see <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Create mailboxes</span></span><br />
Under <span style="font-weight: bold;" class="mycode_b">Mailboxes</span>, add the addresses the new domain needs. At minimum: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postmaster@</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>abuse@</code></div></div>, plus the sending address such as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news@example.net</code></div></div>. See <a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">mailboxes and webmail</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 5: Choose which domain sends</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Set Default</span> in the domain list makes a domain the default choice in forms.<br />
</li>
<li>For each campaign, pick the domain and mailbox in the <span style="font-weight: bold;" class="mycode_b">From</span> field.<br />
</li>
<li>For the Send API, the domain is part of each API's settings. See <a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">the Send API guide</a>.<br />
</li>
<li>If you use a relay, bind it to the domain under <span style="font-weight: bold;" class="mycode_b">SMTP</span>. See <a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay setup</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 6: Test and warm up</span></span><br />
Send a test from the new domain to Gmail and check <span style="font-weight: bold;" class="mycode_b">Show original</span> for SPF, DKIM and DMARC PASS. A new domain has no reputation yet, even on a warm IP, so grow its volume slowly. See <a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">the IP warm-up plan</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Removing a domain later</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Delete</span> in the domain list removes the domain. Before you click it, export or move any mail you want to keep from its mailboxes. Remove its DNS records afterwards.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=437" target="_blank" title="">billionmail-add-domain.jpg</a> (Size: 85.19 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to Move from Mailchimp or Sendy to BillionMail Without Losing Subscribers]]></title>
			<link>https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers</link>
			<pubDate>Fri, 23 Oct 2026 18:32:38 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Move from Mailchimp or Sendy to BillionMail Without Losing Subscribers</span></span><br />
<br />
Moving your newsletter from Mailchimp (or Sendy, MailerLite, ConvertKit and others) to BillionMail can save a lot of money as the list grows. But a careless move can also wreck your deliverability: import the wrong people, blast them all on day one from a new IP, and you land in spam. This guide does it in a safe order.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 0: Get BillionMail ready first</span></span><br />
Don't cancel your old tool yet. First make sure BillionMail is installed, DNS is green and a test email arrives in the inbox:<ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-install-billionmail-on-aapanel-docker-one-click-step-by-step" target="_blank" rel="noopener" class="mycode_url">Install BillionMail</a> and <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">set up DNS</a>.<br />
</li>
<li>Send one test campaign to yourself; see <a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">your first newsletter</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Export from Mailchimp</span></span><br />
In Mailchimp go to <span style="font-weight: bold;" class="mycode_b">Audience &gt; All contacts</span> and use <span style="font-weight: bold;" class="mycode_b">Export Audience</span>. You get a ZIP file with separate CSV files for <span style="font-weight: bold;" class="mycode_b">subscribed</span>, <span style="font-weight: bold;" class="mycode_b">unsubscribed</span>, <span style="font-weight: bold;" class="mycode_b">non-subscribed</span> and <span style="font-weight: bold;" class="mycode_b">cleaned</span> contacts.<ul class="mycode_list"><li>Import <span style="font-weight: bold;" class="mycode_b">only the subscribed file</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Never import unsubscribed or cleaned</span> contacts as subscribers. Unsubscribed people said no; "cleaned" are addresses that bounced. Importing them is how new servers end up blacklisted (and it's illegal in many countries).<br />
</li>
</ul>
<span style="font-weight: bold;" class="mycode_b">From Sendy:</span> open each list, export the active subscribers to CSV, and leave out unsubscribed, bounced and complained ones.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Clean and reshape the CSV</span></span><br />
BillionMail wants a column called <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email</code></div></div> and, optionally, an <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attributes</code></div></div> column with JSON. In a spreadsheet:<br />
<ol type="1" class="mycode_list"><li>Rename the email column to <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email</code></div></div>.<br />
</li>
<li>Delete columns you don't need (Mailchimp exports many).<br />
</li>
<li>If you want first names, build an attributes column, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{"FirstName": "Jane"}</code></div></div>.<br />
</li>
<li>Remove duplicates and save as CSV (UTF-8).<br />
</li>
</ol>
Mailchimp tags or groups don't come over automatically. Export a separate file per tag, or keep the tag as an attribute, and recreate them as tags in BillionMail.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Create groups and import</span></span><br />
Create a group for the imported list under <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Group</span> before you import:<br />
<img src="https://adminsforum.com/attachment.php?aid=436" loading="lazy"  alt="[Image: attachment.php?aid=436]" class="mycode_img" /><br />
<br />
Then import the file under <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Subscribers &gt; Import</span> with Subscription Status <span style="font-weight: bold;" class="mycode_b">Subscribe</span>. The full import walkthrough is in <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">BillionMail contacts, groups and tags</a>. Files over 5 MB need to be split.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Rebuild your template</span></span><br />
Mailchimp's merge tags don't work in BillionMail. Replace them:<ul class="mycode_list"><li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>*|FNAME|*</code></div></div> becomes <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.FirstName}}</code></div></div> (if you imported FirstName).<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>*|EMAIL|*</code></div></div> becomes <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.Email}}</code></div></div>.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>*|UNSUB|*</code></div></div> becomes <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.UnsubscribeURL}}</code></div></div>.<br />
</li>
</ul>
You can export a campaign's HTML from Mailchimp and paste it into an HTML template, but check it carefully; tracking code and Mailchimp branding often need removing. More in <a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail templates</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 5: Update your signup form</span></span><br />
New subscribers should land in BillionMail, not Mailchimp. Point your website's signup form at BillionMail, or, for a while, export new Mailchimp signups every week and import them. Don't forget forms on landing pages and in pop-up plugins.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 6: Don't send to everyone on day one</span></span><br />
Your old tool had a warm IP; your server doesn't. Send to your most engaged subscribers first and grow over a few weeks, as described in <a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">the IP warm-up plan</a>. Keep the old account open (a free or cheap plan is enough) for a month in case you need to go back.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tell your subscribers (optional)</span></span><br />
Your From address and design probably stay the same, so most people won't notice. If your From domain changes, mention it in the first email and ask people to add the new address to their contacts. That small step helps a lot with inbox placement.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=436" target="_blank" title="">billionmail-contact-groups.jpg</a> (Size: 72.37 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Move from Mailchimp or Sendy to BillionMail Without Losing Subscribers</span></span><br />
<br />
Moving your newsletter from Mailchimp (or Sendy, MailerLite, ConvertKit and others) to BillionMail can save a lot of money as the list grows. But a careless move can also wreck your deliverability: import the wrong people, blast them all on day one from a new IP, and you land in spam. This guide does it in a safe order.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 0: Get BillionMail ready first</span></span><br />
Don't cancel your old tool yet. First make sure BillionMail is installed, DNS is green and a test email arrives in the inbox:<ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-install-billionmail-on-aapanel-docker-one-click-step-by-step" target="_blank" rel="noopener" class="mycode_url">Install BillionMail</a> and <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">set up DNS</a>.<br />
</li>
<li>Send one test campaign to yourself; see <a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">your first newsletter</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Export from Mailchimp</span></span><br />
In Mailchimp go to <span style="font-weight: bold;" class="mycode_b">Audience &gt; All contacts</span> and use <span style="font-weight: bold;" class="mycode_b">Export Audience</span>. You get a ZIP file with separate CSV files for <span style="font-weight: bold;" class="mycode_b">subscribed</span>, <span style="font-weight: bold;" class="mycode_b">unsubscribed</span>, <span style="font-weight: bold;" class="mycode_b">non-subscribed</span> and <span style="font-weight: bold;" class="mycode_b">cleaned</span> contacts.<ul class="mycode_list"><li>Import <span style="font-weight: bold;" class="mycode_b">only the subscribed file</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Never import unsubscribed or cleaned</span> contacts as subscribers. Unsubscribed people said no; "cleaned" are addresses that bounced. Importing them is how new servers end up blacklisted (and it's illegal in many countries).<br />
</li>
</ul>
<span style="font-weight: bold;" class="mycode_b">From Sendy:</span> open each list, export the active subscribers to CSV, and leave out unsubscribed, bounced and complained ones.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Clean and reshape the CSV</span></span><br />
BillionMail wants a column called <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email</code></div></div> and, optionally, an <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attributes</code></div></div> column with JSON. In a spreadsheet:<br />
<ol type="1" class="mycode_list"><li>Rename the email column to <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email</code></div></div>.<br />
</li>
<li>Delete columns you don't need (Mailchimp exports many).<br />
</li>
<li>If you want first names, build an attributes column, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{"FirstName": "Jane"}</code></div></div>.<br />
</li>
<li>Remove duplicates and save as CSV (UTF-8).<br />
</li>
</ol>
Mailchimp tags or groups don't come over automatically. Export a separate file per tag, or keep the tag as an attribute, and recreate them as tags in BillionMail.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Create groups and import</span></span><br />
Create a group for the imported list under <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Group</span> before you import:<br />
<img src="https://adminsforum.com/attachment.php?aid=436" loading="lazy"  alt="[Image: attachment.php?aid=436]" class="mycode_img" /><br />
<br />
Then import the file under <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Subscribers &gt; Import</span> with Subscription Status <span style="font-weight: bold;" class="mycode_b">Subscribe</span>. The full import walkthrough is in <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">BillionMail contacts, groups and tags</a>. Files over 5 MB need to be split.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Rebuild your template</span></span><br />
Mailchimp's merge tags don't work in BillionMail. Replace them:<ul class="mycode_list"><li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>*|FNAME|*</code></div></div> becomes <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.FirstName}}</code></div></div> (if you imported FirstName).<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>*|EMAIL|*</code></div></div> becomes <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.Email}}</code></div></div>.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>*|UNSUB|*</code></div></div> becomes <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.UnsubscribeURL}}</code></div></div>.<br />
</li>
</ul>
You can export a campaign's HTML from Mailchimp and paste it into an HTML template, but check it carefully; tracking code and Mailchimp branding often need removing. More in <a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail templates</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 5: Update your signup form</span></span><br />
New subscribers should land in BillionMail, not Mailchimp. Point your website's signup form at BillionMail, or, for a while, export new Mailchimp signups every week and import them. Don't forget forms on landing pages and in pop-up plugins.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 6: Don't send to everyone on day one</span></span><br />
Your old tool had a warm IP; your server doesn't. Send to your most engaged subscribers first and grow over a few weeks, as described in <a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">the IP warm-up plan</a>. Keep the old account open (a free or cheap plan is enough) for a month in case you need to go back.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Tell your subscribers (optional)</span></span><br />
Your From address and design probably stay the same, so most people won't notice. If your From domain changes, mention it in the first email and ask people to add the new address to their contacts. That small step helps a lot with inbox placement.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=436" target="_blank" title="">billionmail-contact-groups.jpg</a> (Size: 72.37 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail IP Warm-Up: A Simple 30-Day Plan for a New Mail Server]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server</link>
			<pubDate>Fri, 23 Oct 2026 18:27:53 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail IP Warm-Up: A Simple 30-Day Plan for a New Mail Server</span></span><br />
<br />
A brand-new mail server has no reputation. Gmail, Outlook and Yahoo don't know whether your IP sends wanted newsletters or spam, so they're careful: they slow it down, put mail in spam, or refuse it. If you send 20,000 emails on day one, you'll almost certainly end up in spam, and that first impression is hard to undo.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Warming up</span> means starting small and growing slowly, so the big providers see a pattern of wanted mail before they see volume.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you start</span></span><br />
Warm-up doesn't help if the basics are broken. Check first:<ul class="mycode_list"><li>SPF, DKIM and DMARC pass and reverse DNS (PTR) matches your mail hostname. See <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail DNS setup</a>.<br />
</li>
<li>Your IP isn't on a blacklist. Test as in <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">the deliverability guide</a>.<br />
</li>
<li>You have a clean, opt-in list. See <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">importing contacts</a>.<br />
</li>
<li>You've registered your domain in <a href="https://postmaster.google.com" target="_blank" rel="noopener" class="mycode_url">Google Postmaster Tools</a> and Microsoft SNDS, so you can see what they think of you.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">The warm-up switch</span></span><br />
When you create or edit a task in <span style="font-weight: bold;" class="mycode_b">Email Marketing</span>, the <span style="font-weight: bold;" class="mycode_b">Associate IP Warmup System</span> switch limits how fast it sends:<br />
<img src="https://adminsforum.com/attachment.php?aid=435" loading="lazy"  alt="[Image: attachment.php?aid=435]" class="mycode_img" /><br />
<br />
With it on, BillionMail spreads the campaign out instead of sending everything at once, and the task list shows its progress and estimated completion time. Leave it on for every campaign during the first weeks. It doesn't replace the plan below, but it stops one big send from undoing your work.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">A simple 30-day plan</span></span><br />
These are daily totals across all providers. They're a sensible starting point, not a law:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Days 1 to 3</span>: 50 to 100 a day. Send to your <span style="font-weight: bold;" class="mycode_b">most engaged</span> people first: those who opened or clicked recently, or customers.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Days 4 to 7</span>: 200 to 300 a day.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Week 2</span>: 500, then 1,000 a day.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Week 3</span>: 2,000 to 5,000 a day.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Week 4</span>: 5,000 to 10,000 a day, then keep growing by about 50% at a time.<br />
</li>
</ul>
The simplest way to do this in BillionMail: split your list into groups or tags ("wave 1", "wave 2" and so on, starting with the most engaged) and send one campaign per day to the next wave. Under <span style="font-weight: bold;" class="mycode_b">Send time</span> you can pick a date and time instead of <span style="font-weight: bold;" class="mycode_b">Send now</span>, so you can set up the whole week in advance.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Watch these signs every day</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Bounces above 2 to 3%</span> or many "rate limited" / "try again later" (4xx) messages: stop growing and stay at the current level for a few days. See <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">reading the queue delay reason</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Gmail spam rate in Postmaster Tools above 0.1%</span>: slow down and look at your content and list.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mail goes to spam at one provider only</span>: keep sending small amounts to engaged people there; don't push volume.<br />
</li>
</ul>
If things go wrong, go back one step. It's normal for a warm-up to take six weeks instead of four.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">After the warm-up</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Send regularly.</span> An IP that sends nothing for a month and then 50,000 at once looks suspicious again.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Keep the list clean.</span> Remove hard bounces after every send and long-term non-openers every few months.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Separate traffic if you can.</span> Transactional mail (password resets) is precious. Some people send newsletters from a subdomain like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news.example.com</code></div></div>, so a newsletter problem doesn't block password resets. See <a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">adding a second sending domain</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Need mail to arrive during the warm-up?</span></span><br />
Send the important stuff, like order emails, through a relay for the first weeks and warm up your own IP with newsletters. See <a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=435" target="_blank" title="">billionmail-ip-warmup.jpg</a> (Size: 121.02 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail IP Warm-Up: A Simple 30-Day Plan for a New Mail Server</span></span><br />
<br />
A brand-new mail server has no reputation. Gmail, Outlook and Yahoo don't know whether your IP sends wanted newsletters or spam, so they're careful: they slow it down, put mail in spam, or refuse it. If you send 20,000 emails on day one, you'll almost certainly end up in spam, and that first impression is hard to undo.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Warming up</span> means starting small and growing slowly, so the big providers see a pattern of wanted mail before they see volume.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you start</span></span><br />
Warm-up doesn't help if the basics are broken. Check first:<ul class="mycode_list"><li>SPF, DKIM and DMARC pass and reverse DNS (PTR) matches your mail hostname. See <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail DNS setup</a>.<br />
</li>
<li>Your IP isn't on a blacklist. Test as in <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">the deliverability guide</a>.<br />
</li>
<li>You have a clean, opt-in list. See <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">importing contacts</a>.<br />
</li>
<li>You've registered your domain in <a href="https://postmaster.google.com" target="_blank" rel="noopener" class="mycode_url">Google Postmaster Tools</a> and Microsoft SNDS, so you can see what they think of you.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">The warm-up switch</span></span><br />
When you create or edit a task in <span style="font-weight: bold;" class="mycode_b">Email Marketing</span>, the <span style="font-weight: bold;" class="mycode_b">Associate IP Warmup System</span> switch limits how fast it sends:<br />
<img src="https://adminsforum.com/attachment.php?aid=435" loading="lazy"  alt="[Image: attachment.php?aid=435]" class="mycode_img" /><br />
<br />
With it on, BillionMail spreads the campaign out instead of sending everything at once, and the task list shows its progress and estimated completion time. Leave it on for every campaign during the first weeks. It doesn't replace the plan below, but it stops one big send from undoing your work.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">A simple 30-day plan</span></span><br />
These are daily totals across all providers. They're a sensible starting point, not a law:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Days 1 to 3</span>: 50 to 100 a day. Send to your <span style="font-weight: bold;" class="mycode_b">most engaged</span> people first: those who opened or clicked recently, or customers.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Days 4 to 7</span>: 200 to 300 a day.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Week 2</span>: 500, then 1,000 a day.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Week 3</span>: 2,000 to 5,000 a day.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Week 4</span>: 5,000 to 10,000 a day, then keep growing by about 50% at a time.<br />
</li>
</ul>
The simplest way to do this in BillionMail: split your list into groups or tags ("wave 1", "wave 2" and so on, starting with the most engaged) and send one campaign per day to the next wave. Under <span style="font-weight: bold;" class="mycode_b">Send time</span> you can pick a date and time instead of <span style="font-weight: bold;" class="mycode_b">Send now</span>, so you can set up the whole week in advance.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Watch these signs every day</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Bounces above 2 to 3%</span> or many "rate limited" / "try again later" (4xx) messages: stop growing and stay at the current level for a few days. See <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">reading the queue delay reason</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Gmail spam rate in Postmaster Tools above 0.1%</span>: slow down and look at your content and list.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mail goes to spam at one provider only</span>: keep sending small amounts to engaged people there; don't push volume.<br />
</li>
</ul>
If things go wrong, go back one step. It's normal for a warm-up to take six weeks instead of four.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">After the warm-up</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Send regularly.</span> An IP that sends nothing for a month and then 50,000 at once looks suspicious again.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Keep the list clean.</span> Remove hard bounces after every send and long-term non-openers every few months.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Separate traffic if you can.</span> Transactional mail (password resets) is precious. Some people send newsletters from a subdomain like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>news.example.com</code></div></div>, so a newsletter problem doesn't block password resets. See <a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">adding a second sending domain</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Need mail to arrive during the warm-up?</span></span><br />
Send the important stuff, like order emails, through a relay for the first weeks and warm up your own IP with newsletters. See <a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=435" target="_blank" title="">billionmail-ip-warmup.jpg</a> (Size: 121.02 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail Campaign Analytics: Open, Click and Bounce Rates Explained]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained</link>
			<pubDate>Fri, 23 Oct 2026 18:27:05 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Campaign Analytics: Open, Click and Bounce Rates Explained</span></span><br />
<br />
After a campaign goes out, BillionMail shows how it did. The numbers are useful, but only if you know what they really measure. Open rates in particular are much less reliable than they look. This guide explains each number and what to do with it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Where to find the numbers</span></span><br />
There are three places:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Overview</span> (dashboard): totals for the whole server, including delivered, opened, clicked, bounced, the delayed queue and a breakdown by mail provider (Gmail, Outlook, Yahoo and so on).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Email Marketing &gt; Analytics</span>: the report for one campaign, with a date range (Today, Yesterday, Last 7 Days or your own).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Send API</span>: send count and open, click and bounce rates for each API.<br />
</li>
</ul>
Open <span style="font-weight: bold;" class="mycode_b">Email Marketing</span> and click <span style="font-weight: bold;" class="mycode_b">Analytics</span> next to a task. The report looks like this:<br />
<img src="https://adminsforum.com/attachment.php?aid=434" loading="lazy"  alt="[Image: attachment.php?aid=434]" class="mycode_img" /><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What each number means</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Delivered</span> (and Success in Send Statistics): the receiving server accepted the email. It does <span style="font-style: italic;" class="mycode_i">not</span> mean it reached the inbox; spam folder counts as delivered.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Bounced</span> (and Failed): the receiving server refused it. A <span style="font-weight: bold;" class="mycode_b">hard bounce</span> (address doesn't exist) is permanent; a <span style="font-weight: bold;" class="mycode_b">soft bounce</span> (mailbox full, temporary block) may work later.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Opened</span> and the <span style="font-weight: bold;" class="mycode_b">Open Rate</span> chart: counted when a tiny tracking image in the email loads. Only works if <span style="font-weight: bold;" class="mycode_b">Track Opens</span> was on.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Clicked</span> and the <span style="font-weight: bold;" class="mycode_b">Click Rate</span> chart: someone clicked a link. Needs <span style="font-weight: bold;" class="mycode_b">Track Clicks</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mail Providers</span>: the same numbers split by Gmail, Outlook, Yahoo and others, so you can spot one provider causing trouble.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Send Statistics</span>: success rate plus the count of sent and failed messages per day.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Why open rates lie</span></span><br />
Apple Mail Privacy Protection loads every image automatically, so many Apple users count as "opened" even if they never looked. Some corporate filters do the same. On the other side, people who block images never count as opened. So treat the open rate as a rough trend, not a fact. <span style="font-weight: bold;" class="mycode_b">Clicks are much more trustworthy</span>, and replies even more so.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What good numbers look like</span></span><br />
Every list is different, but as a rough guide for an opt-in newsletter:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Bounce rate</span>: under 2%. Above 5% is a problem. Clean the list before the next send.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Click rate</span>: 1 to 5% of delivered emails is normal.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Unsubscribes</span>: under 0.5% per campaign is fine. A spike means the content or frequency surprised people. Unsubscribed people show with that status under <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Subscribers</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Spam complaints</span>: keep them under 0.1%. Google asks bulk senders to stay below 0.1% and never reach 0.3%. You see complaints in <a href="https://postmaster.google.com" target="_blank" rel="noopener" class="mycode_url">Google Postmaster Tools</a>, not in BillionMail.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What to do when numbers are bad</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">High bounces</span>: old or bought addresses. Remove hard bounces now, and think about re-confirming old subscribers. See <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">contacts, groups and tags</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Delivered fine, almost no opens or clicks</span>: probably the spam folder. Run a test as in <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">the deliverability guide</a> and read <a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">emails going to spam</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Many failures at one provider</span>: check the provider breakdown on the Overview. If only Outlook or only Gmail fails, the reason is in the delay or bounce message; see <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">emails stuck in the queue</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Good opens, few clicks</span>: the email works, the content doesn't. One clear link or button works better than ten.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Privacy note</span></span><br />
Open and click tracking are personal data in many countries. Mention them in your privacy policy. For transactional email like password resets, it's often better to leave tracking off.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Compare like with like</span></span><br />
Look at the same kind of email over time: this month's newsletter against last month's, not a newsletter against a welcome email. Small lists swing a lot; on 200 subscribers, three clicks more or less changes the click rate by 1.5%.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=434" target="_blank" title="">billionmail-campaign-analytics.jpg</a> (Size: 131.38 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Campaign Analytics: Open, Click and Bounce Rates Explained</span></span><br />
<br />
After a campaign goes out, BillionMail shows how it did. The numbers are useful, but only if you know what they really measure. Open rates in particular are much less reliable than they look. This guide explains each number and what to do with it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Where to find the numbers</span></span><br />
There are three places:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Overview</span> (dashboard): totals for the whole server, including delivered, opened, clicked, bounced, the delayed queue and a breakdown by mail provider (Gmail, Outlook, Yahoo and so on).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Email Marketing &gt; Analytics</span>: the report for one campaign, with a date range (Today, Yesterday, Last 7 Days or your own).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Send API</span>: send count and open, click and bounce rates for each API.<br />
</li>
</ul>
Open <span style="font-weight: bold;" class="mycode_b">Email Marketing</span> and click <span style="font-weight: bold;" class="mycode_b">Analytics</span> next to a task. The report looks like this:<br />
<img src="https://adminsforum.com/attachment.php?aid=434" loading="lazy"  alt="[Image: attachment.php?aid=434]" class="mycode_img" /><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What each number means</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Delivered</span> (and Success in Send Statistics): the receiving server accepted the email. It does <span style="font-style: italic;" class="mycode_i">not</span> mean it reached the inbox; spam folder counts as delivered.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Bounced</span> (and Failed): the receiving server refused it. A <span style="font-weight: bold;" class="mycode_b">hard bounce</span> (address doesn't exist) is permanent; a <span style="font-weight: bold;" class="mycode_b">soft bounce</span> (mailbox full, temporary block) may work later.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Opened</span> and the <span style="font-weight: bold;" class="mycode_b">Open Rate</span> chart: counted when a tiny tracking image in the email loads. Only works if <span style="font-weight: bold;" class="mycode_b">Track Opens</span> was on.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Clicked</span> and the <span style="font-weight: bold;" class="mycode_b">Click Rate</span> chart: someone clicked a link. Needs <span style="font-weight: bold;" class="mycode_b">Track Clicks</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mail Providers</span>: the same numbers split by Gmail, Outlook, Yahoo and others, so you can spot one provider causing trouble.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Send Statistics</span>: success rate plus the count of sent and failed messages per day.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Why open rates lie</span></span><br />
Apple Mail Privacy Protection loads every image automatically, so many Apple users count as "opened" even if they never looked. Some corporate filters do the same. On the other side, people who block images never count as opened. So treat the open rate as a rough trend, not a fact. <span style="font-weight: bold;" class="mycode_b">Clicks are much more trustworthy</span>, and replies even more so.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What good numbers look like</span></span><br />
Every list is different, but as a rough guide for an opt-in newsletter:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Bounce rate</span>: under 2%. Above 5% is a problem. Clean the list before the next send.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Click rate</span>: 1 to 5% of delivered emails is normal.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Unsubscribes</span>: under 0.5% per campaign is fine. A spike means the content or frequency surprised people. Unsubscribed people show with that status under <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Subscribers</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Spam complaints</span>: keep them under 0.1%. Google asks bulk senders to stay below 0.1% and never reach 0.3%. You see complaints in <a href="https://postmaster.google.com" target="_blank" rel="noopener" class="mycode_url">Google Postmaster Tools</a>, not in BillionMail.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What to do when numbers are bad</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">High bounces</span>: old or bought addresses. Remove hard bounces now, and think about re-confirming old subscribers. See <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">contacts, groups and tags</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Delivered fine, almost no opens or clicks</span>: probably the spam folder. Run a test as in <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">the deliverability guide</a> and read <a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">emails going to spam</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Many failures at one provider</span>: check the provider breakdown on the Overview. If only Outlook or only Gmail fails, the reason is in the delay or bounce message; see <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">emails stuck in the queue</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Good opens, few clicks</span>: the email works, the content doesn't. One clear link or button works better than ten.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Privacy note</span></span><br />
Open and click tracking are personal data in many countries. Mention them in your privacy policy. For transactional email like password resets, it's often better to leave tracking off.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Compare like with like</span></span><br />
Look at the same kind of email over time: this month's newsletter against last month's, not a newsletter against a welcome email. Small lists swing a lot; on 200 subscribers, three clicks more or less changes the click rate by 1.5%.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=434" target="_blank" title="">billionmail-campaign-analytics.jpg</a> (Size: 131.38 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail Mailboxes and Webmail: Create Users and Connect Outlook or a Phone]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone</link>
			<pubDate>Fri, 23 Oct 2026 18:25:14 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Mailboxes and Webmail: Create Users and Connect Outlook or a Phone</span></span><br />
<br />
BillionMail isn't only for newsletters. It's a full mail server, so you can create normal mailboxes like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>you@example.com</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>support@example.com</code></div></div>, read them in the built-in webmail, and connect them to Outlook, Thunderbird or your phone.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">The mailboxes BillionMail creates for you</span></span><br />
When you add a domain, BillionMail usually creates a few standard mailboxes such as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postmaster@</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>abuse@</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>admin@</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>noreply@</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>support@</code></div></div>. Keep <span style="font-weight: bold;" class="mycode_b">postmaster</span> and <span style="font-weight: bold;" class="mycode_b">abuse</span>: other mail servers and blacklist operators send reports there, and some check that they exist. Read them now and then, or forward them to an address you read.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Add a mailbox</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Mailboxes</span> and click <span style="font-weight: bold;" class="mycode_b">Add Mailbox</span>. Here's the form:<br />
<img src="https://adminsforum.com/attachment.php?aid=433" loading="lazy"  alt="[Image: attachment.php?aid=433]" class="mycode_img" /><br />
<br />
Enter the part before the @ and pick the domain under <span style="font-weight: bold;" class="mycode_b">Email Address</span>, then a <span style="font-weight: bold;" class="mycode_b">Display Name</span>. BillionMail suggests a random <span style="font-weight: bold;" class="mycode_b">Password</span>; keep it or use your own long one. <span style="font-weight: bold;" class="mycode_b">Quota limit</span> and <span style="font-weight: bold;" class="mycode_b">Quota</span> set how much mail it can hold, and <span style="font-weight: bold;" class="mycode_b">User Type</span> can stay on General User. Click <span style="font-weight: bold;" class="mycode_b">Confirm</span>. For many mailboxes at once, use <span style="font-weight: bold;" class="mycode_b">Batch Add</span> or <span style="font-weight: bold;" class="mycode_b">Import</span>; <span style="font-weight: bold;" class="mycode_b">Export All</span> gives you a list for your records.<br />
<br />
Each mailbox has a status switch. Turning it off blocks logins without deleting the mail, which is useful when someone leaves.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Get the login details</span></span><br />
In the mailbox list, click <span style="font-weight: bold;" class="mycode_b">Copy</span> in the <span style="font-weight: bold;" class="mycode_b">Login Info (WebMail / SMTP)</span> column. You get something like:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>WebMail: https://mail.example.com/roundcube
Username: you@example.com
Password: ...
POP service [ Address: mail.example.com Port: 110/995 ]
IMAP service [ Address: mail.example.com Port: 143/993 ]
SMTP service [ Address: mail.example.com Port: 25/465/587 ]</code></div></div>Be careful where you paste it: it contains the password.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Use webmail</span></span><br />
Open the WebMail address and log in with the full email address and password. This is <span style="font-weight: bold;" class="mycode_b">Roundcube</span>, a well-known open-source webmail. If the page doesn't load or login fails, see <a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">BillionMail webmail not working</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Connect Outlook, Thunderbird or a phone</span></span><br />
Most apps try to detect settings automatically. If that fails, choose manual setup and enter:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Incoming (IMAP)</span>: server <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>, port <span style="font-weight: bold;" class="mycode_b">993</span>, SSL/TLS.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Outgoing (SMTP)</span>: server <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>, port <span style="font-weight: bold;" class="mycode_b">465</span> with SSL/TLS, or <span style="font-weight: bold;" class="mycode_b">587</span> with STARTTLS. Authentication on, same username and password.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Username</span>: always the full email address.<br />
</li>
</ul>
Pick <span style="font-weight: bold;" class="mycode_b">IMAP</span>, not POP. IMAP keeps mail on the server, so your phone, laptop and webmail all show the same thing. POP downloads mail to one device and is rarely what you want.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">iPhone</span>: Settings &gt; Mail &gt; Accounts &gt; Add Account &gt; Other &gt; Add Mail Account, then choose IMAP. <span style="font-weight: bold;" class="mycode_b">Android (Gmail app)</span>: Add account &gt; Other &gt; Personal (IMAP).<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ports must be open</span></span><br />
For apps to connect, ports 993 and 465/587 must be open in aaPanel's Security page (or your firewall) and in your provider's cloud firewall. Port 25 incoming must be open too, or you won't receive mail from other servers at all. Check from your own computer:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nc -vz mail.example.com 993
nc -vz mail.example.com 587</code></div></div><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Security tips</span></span><ul class="mycode_list"><li>Use a different password for each mailbox, and change it if anyone leaves.<br />
</li>
<li>A hacked mailbox gets used to send spam within hours, which damages your whole server's reputation. If you suddenly see thousands of messages in the queue from one account, disable it first and investigate after.<br />
</li>
<li>For apps that only send (WordPress, scripts), create a separate mailbox. See <a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=433" target="_blank" title="">billionmail-add-mailbox.jpg</a> (Size: 105.25 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Mailboxes and Webmail: Create Users and Connect Outlook or a Phone</span></span><br />
<br />
BillionMail isn't only for newsletters. It's a full mail server, so you can create normal mailboxes like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>you@example.com</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>support@example.com</code></div></div>, read them in the built-in webmail, and connect them to Outlook, Thunderbird or your phone.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">The mailboxes BillionMail creates for you</span></span><br />
When you add a domain, BillionMail usually creates a few standard mailboxes such as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postmaster@</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>abuse@</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>admin@</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>noreply@</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>support@</code></div></div>. Keep <span style="font-weight: bold;" class="mycode_b">postmaster</span> and <span style="font-weight: bold;" class="mycode_b">abuse</span>: other mail servers and blacklist operators send reports there, and some check that they exist. Read them now and then, or forward them to an address you read.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Add a mailbox</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Mailboxes</span> and click <span style="font-weight: bold;" class="mycode_b">Add Mailbox</span>. Here's the form:<br />
<img src="https://adminsforum.com/attachment.php?aid=433" loading="lazy"  alt="[Image: attachment.php?aid=433]" class="mycode_img" /><br />
<br />
Enter the part before the @ and pick the domain under <span style="font-weight: bold;" class="mycode_b">Email Address</span>, then a <span style="font-weight: bold;" class="mycode_b">Display Name</span>. BillionMail suggests a random <span style="font-weight: bold;" class="mycode_b">Password</span>; keep it or use your own long one. <span style="font-weight: bold;" class="mycode_b">Quota limit</span> and <span style="font-weight: bold;" class="mycode_b">Quota</span> set how much mail it can hold, and <span style="font-weight: bold;" class="mycode_b">User Type</span> can stay on General User. Click <span style="font-weight: bold;" class="mycode_b">Confirm</span>. For many mailboxes at once, use <span style="font-weight: bold;" class="mycode_b">Batch Add</span> or <span style="font-weight: bold;" class="mycode_b">Import</span>; <span style="font-weight: bold;" class="mycode_b">Export All</span> gives you a list for your records.<br />
<br />
Each mailbox has a status switch. Turning it off blocks logins without deleting the mail, which is useful when someone leaves.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Get the login details</span></span><br />
In the mailbox list, click <span style="font-weight: bold;" class="mycode_b">Copy</span> in the <span style="font-weight: bold;" class="mycode_b">Login Info (WebMail / SMTP)</span> column. You get something like:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>WebMail: https://mail.example.com/roundcube
Username: you@example.com
Password: ...
POP service [ Address: mail.example.com Port: 110/995 ]
IMAP service [ Address: mail.example.com Port: 143/993 ]
SMTP service [ Address: mail.example.com Port: 25/465/587 ]</code></div></div>Be careful where you paste it: it contains the password.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Use webmail</span></span><br />
Open the WebMail address and log in with the full email address and password. This is <span style="font-weight: bold;" class="mycode_b">Roundcube</span>, a well-known open-source webmail. If the page doesn't load or login fails, see <a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">BillionMail webmail not working</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Connect Outlook, Thunderbird or a phone</span></span><br />
Most apps try to detect settings automatically. If that fails, choose manual setup and enter:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Incoming (IMAP)</span>: server <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>, port <span style="font-weight: bold;" class="mycode_b">993</span>, SSL/TLS.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Outgoing (SMTP)</span>: server <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>, port <span style="font-weight: bold;" class="mycode_b">465</span> with SSL/TLS, or <span style="font-weight: bold;" class="mycode_b">587</span> with STARTTLS. Authentication on, same username and password.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Username</span>: always the full email address.<br />
</li>
</ul>
Pick <span style="font-weight: bold;" class="mycode_b">IMAP</span>, not POP. IMAP keeps mail on the server, so your phone, laptop and webmail all show the same thing. POP downloads mail to one device and is rarely what you want.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">iPhone</span>: Settings &gt; Mail &gt; Accounts &gt; Add Account &gt; Other &gt; Add Mail Account, then choose IMAP. <span style="font-weight: bold;" class="mycode_b">Android (Gmail app)</span>: Add account &gt; Other &gt; Personal (IMAP).<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ports must be open</span></span><br />
For apps to connect, ports 993 and 465/587 must be open in aaPanel's Security page (or your firewall) and in your provider's cloud firewall. Port 25 incoming must be open too, or you won't receive mail from other servers at all. Check from your own computer:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nc -vz mail.example.com 993
nc -vz mail.example.com 587</code></div></div><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Security tips</span></span><ul class="mycode_list"><li>Use a different password for each mailbox, and change it if anyone leaves.<br />
</li>
<li>A hacked mailbox gets used to send spam within hours, which damages your whole server's reputation. If you suddenly see thousands of messages in the queue from one account, disable it first and investigate after.<br />
</li>
<li>For apps that only send (WordPress, scripts), create a separate mailbox. See <a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=433" target="_blank" title="">billionmail-add-mailbox.jpg</a> (Size: 105.25 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to Set Up an SMTP Relay in BillionMail (Amazon SES, Brevo, Mailgun)]]></title>
			<link>https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun</link>
			<pubDate>Fri, 23 Oct 2026 18:23:35 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Set Up an SMTP Relay in BillionMail (Amazon SES, Brevo, Mailgun)</span></span><br />
<br />
By default BillionMail delivers email straight from your server to Gmail, Outlook and the rest. That's the whole point of running your own mail server. But sometimes it's better to send through an <span style="font-weight: bold;" class="mycode_b">SMTP relay</span>: an outside email service that delivers the mail for you.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">When a relay makes sense</span></span><ul class="mycode_list"><li>Your provider blocks outgoing port 25 and won't unblock it. See <a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">how to check if port 25 is blocked</a>.<br />
</li>
<li>Your server's IP is new or has a poor reputation, and you need mail to arrive today while you warm it up. See <a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">the IP warm-up plan</a>.<br />
</li>
<li>Your IP is on a blacklist and delisting takes time.<br />
</li>
</ul>
With a relay, BillionMail still handles your contacts, templates, campaigns and stats. Only the last step, the actual delivery, goes through the relay.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Which relay?</span></span><br />
BillionMail has presets for <span style="font-weight: bold;" class="mycode_b">Gmail</span>, <span style="font-weight: bold;" class="mycode_b">Mailgun</span>, <span style="font-weight: bold;" class="mycode_b">AWS SES</span> and <span style="font-weight: bold;" class="mycode_b">SendGrid</span>, plus <span style="font-weight: bold;" class="mycode_b">Custom SMTP</span> for anything else (Brevo, Postmark, SMTP2GO and others). Amazon SES is usually the cheapest for volume; Brevo and Mailgun are easier to start with. Avoid using a personal Gmail account for newsletters: it has low daily limits and it's against Google's rules for bulk mail.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Set up the relay service</span></span><br />
Every service works roughly the same way:<br />
<ol type="1" class="mycode_list"><li>Create an account.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Verify your domain</span>. The service gives you DNS records to add (usually DKIM CNAME or TXT records, sometimes a return-path CNAME).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Create SMTP credentials</span>. These are not your login password. In Amazon SES it's under <span style="font-weight: bold;" class="mycode_b">SMTP settings &gt; Create SMTP credentials</span>; in Brevo it's <span style="font-weight: bold;" class="mycode_b">SMTP &amp; API &gt; SMTP</span>.<br />
</li>
<li>For Amazon SES: new accounts start in the <span style="font-weight: bold;" class="mycode_b">sandbox</span> and can only send to verified addresses. Request production access before going live.<br />
</li>
</ol>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Add the relay in BillionMail</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">SMTP</span> in the left menu and click <span style="font-weight: bold;" class="mycode_b">Add</span>. Choosing Amazon SES fills in the server and port for you:<br />
<img src="https://adminsforum.com/attachment.php?aid=432" loading="lazy"  alt="[Image: attachment.php?aid=432]" class="mycode_img" /><br />
<br />
Fill in:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Remark</span>: a name for this relay.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Bound Domain</span>: which of your sending domains should use this relay. Domains not bound keep sending directly.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SMTP Server</span> and <span style="font-weight: bold;" class="mycode_b">SMTP Port</span>: for SES, BillionMail fills in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email-smtp.us-east-1.amazonaws.com</code></div></div> and <span style="font-weight: bold;" class="mycode_b">587</span>; change <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>us-east-1</code></div></div> to your SES region if it's different. For Brevo, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>smtp-relay.brevo.com</code></div></div> and 587. For Mailgun, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>smtp.mailgun.org</code></div></div> (or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>smtp.eu.mailgun.org</code></div></div> for EU accounts) and 587.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Username</span> and <span style="font-weight: bold;" class="mycode_b">Password</span>: the SMTP credentials from Step 1.<br />
</li>
</ul>
Click <span style="font-weight: bold;" class="mycode_b">Test Connection</span>. If it passes, save.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Watch out for browser autofill:</span> your browser may fill the BillionMail admin login into the Username and Password fields. Clear them and paste the relay's credentials.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Fix SPF and DKIM</span></span><br />
This is the step people forget. Your SPF record must allow the relay to send for your domain, for example:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>v=spf1 mx a include:amazonses.com ~all</code></div></div>Each service documents its own include. Only one SPF record per domain: add the include to the record you have, don't create a second one. Also make sure the relay's DKIM records from Step 1 are green in the service's dashboard. With SES, setting up a <span style="font-weight: bold;" class="mycode_b">custom MAIL FROM domain</span> makes SPF align with your domain for DMARC. Background in <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail DNS setup explained</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Test</span></span><br />
Send a test from a campaign or the Send API, then open the email in Gmail and choose <span style="font-weight: bold;" class="mycode_b">Show original</span>. You want <span style="font-weight: bold;" class="mycode_b">SPF: PASS</span>, <span style="font-weight: bold;" class="mycode_b">DKIM: PASS</span> and <span style="font-weight: bold;" class="mycode_b">DMARC: PASS</span>. If the email is stuck, the delay reason in <span style="font-weight: bold;" class="mycode_b">Settings &gt; Send Queue</span> tells you why; see <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">emails stuck in the send queue</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Common errors</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Authentication failed</span>: wrong SMTP credentials, or (SES) the credentials were made in a different region than the server name.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">"Email address is not verified"</span> (SES): you're still in the sandbox, or the From domain isn't verified.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Connection timed out</span>: try port 465 or 2525 if the service offers it.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=432" target="_blank" title="">billionmail-smtp-relay-ses.jpg</a> (Size: 79.43 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Set Up an SMTP Relay in BillionMail (Amazon SES, Brevo, Mailgun)</span></span><br />
<br />
By default BillionMail delivers email straight from your server to Gmail, Outlook and the rest. That's the whole point of running your own mail server. But sometimes it's better to send through an <span style="font-weight: bold;" class="mycode_b">SMTP relay</span>: an outside email service that delivers the mail for you.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">When a relay makes sense</span></span><ul class="mycode_list"><li>Your provider blocks outgoing port 25 and won't unblock it. See <a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">how to check if port 25 is blocked</a>.<br />
</li>
<li>Your server's IP is new or has a poor reputation, and you need mail to arrive today while you warm it up. See <a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">the IP warm-up plan</a>.<br />
</li>
<li>Your IP is on a blacklist and delisting takes time.<br />
</li>
</ul>
With a relay, BillionMail still handles your contacts, templates, campaigns and stats. Only the last step, the actual delivery, goes through the relay.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Which relay?</span></span><br />
BillionMail has presets for <span style="font-weight: bold;" class="mycode_b">Gmail</span>, <span style="font-weight: bold;" class="mycode_b">Mailgun</span>, <span style="font-weight: bold;" class="mycode_b">AWS SES</span> and <span style="font-weight: bold;" class="mycode_b">SendGrid</span>, plus <span style="font-weight: bold;" class="mycode_b">Custom SMTP</span> for anything else (Brevo, Postmark, SMTP2GO and others). Amazon SES is usually the cheapest for volume; Brevo and Mailgun are easier to start with. Avoid using a personal Gmail account for newsletters: it has low daily limits and it's against Google's rules for bulk mail.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Set up the relay service</span></span><br />
Every service works roughly the same way:<br />
<ol type="1" class="mycode_list"><li>Create an account.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Verify your domain</span>. The service gives you DNS records to add (usually DKIM CNAME or TXT records, sometimes a return-path CNAME).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Create SMTP credentials</span>. These are not your login password. In Amazon SES it's under <span style="font-weight: bold;" class="mycode_b">SMTP settings &gt; Create SMTP credentials</span>; in Brevo it's <span style="font-weight: bold;" class="mycode_b">SMTP &amp; API &gt; SMTP</span>.<br />
</li>
<li>For Amazon SES: new accounts start in the <span style="font-weight: bold;" class="mycode_b">sandbox</span> and can only send to verified addresses. Request production access before going live.<br />
</li>
</ol>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Add the relay in BillionMail</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">SMTP</span> in the left menu and click <span style="font-weight: bold;" class="mycode_b">Add</span>. Choosing Amazon SES fills in the server and port for you:<br />
<img src="https://adminsforum.com/attachment.php?aid=432" loading="lazy"  alt="[Image: attachment.php?aid=432]" class="mycode_img" /><br />
<br />
Fill in:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Remark</span>: a name for this relay.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Bound Domain</span>: which of your sending domains should use this relay. Domains not bound keep sending directly.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SMTP Server</span> and <span style="font-weight: bold;" class="mycode_b">SMTP Port</span>: for SES, BillionMail fills in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email-smtp.us-east-1.amazonaws.com</code></div></div> and <span style="font-weight: bold;" class="mycode_b">587</span>; change <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>us-east-1</code></div></div> to your SES region if it's different. For Brevo, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>smtp-relay.brevo.com</code></div></div> and 587. For Mailgun, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>smtp.mailgun.org</code></div></div> (or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>smtp.eu.mailgun.org</code></div></div> for EU accounts) and 587.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Username</span> and <span style="font-weight: bold;" class="mycode_b">Password</span>: the SMTP credentials from Step 1.<br />
</li>
</ul>
Click <span style="font-weight: bold;" class="mycode_b">Test Connection</span>. If it passes, save.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Watch out for browser autofill:</span> your browser may fill the BillionMail admin login into the Username and Password fields. Clear them and paste the relay's credentials.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Fix SPF and DKIM</span></span><br />
This is the step people forget. Your SPF record must allow the relay to send for your domain, for example:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>v=spf1 mx a include:amazonses.com ~all</code></div></div>Each service documents its own include. Only one SPF record per domain: add the include to the record you have, don't create a second one. Also make sure the relay's DKIM records from Step 1 are green in the service's dashboard. With SES, setting up a <span style="font-weight: bold;" class="mycode_b">custom MAIL FROM domain</span> makes SPF align with your domain for DMARC. Background in <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail DNS setup explained</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Test</span></span><br />
Send a test from a campaign or the Send API, then open the email in Gmail and choose <span style="font-weight: bold;" class="mycode_b">Show original</span>. You want <span style="font-weight: bold;" class="mycode_b">SPF: PASS</span>, <span style="font-weight: bold;" class="mycode_b">DKIM: PASS</span> and <span style="font-weight: bold;" class="mycode_b">DMARC: PASS</span>. If the email is stuck, the delay reason in <span style="font-weight: bold;" class="mycode_b">Settings &gt; Send Queue</span> tells you why; see <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">emails stuck in the send queue</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Common errors</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Authentication failed</span>: wrong SMTP credentials, or (SES) the credentials were made in a different region than the server name.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">"Email address is not verified"</span> (SES): you're still in the sandbox, or the From domain isn't verified.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Connection timed out</span>: try port 465 or 2525 if the service offers it.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=432" target="_blank" title="">billionmail-smtp-relay-ses.jpg</a> (Size: 79.43 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail Email Templates: Drag-and-Drop, HTML and AI Explained]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained</link>
			<pubDate>Fri, 23 Oct 2026 18:22:46 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Email Templates: Drag-and-Drop, HTML and AI Explained</span></span><br />
<br />
Every campaign and every Send API email in BillionMail uses a <span style="font-weight: bold;" class="mycode_b">template</span>: the design and text of the email. BillionMail gives you three ways to make one. This guide explains each, and the few rules that keep templates out of the spam folder.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">The three ways to build a template</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Template</span> and click <span style="font-weight: bold;" class="mycode_b">Add Template</span>. You choose how to build it here:<br />
<img src="https://adminsforum.com/attachment.php?aid=431" loading="lazy"  alt="[Image: attachment.php?aid=431]" class="mycode_img" /><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Drag</span>: a visual editor. You drag blocks (text, image, button, divider, columns) into the email. Best if you don't write HTML. The result works in most email apps because the editor produces email-safe HTML.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">AI</span>: describe what you want and an AI model writes the email for you. This only works after you connect an AI model under <span style="font-weight: bold;" class="mycode_b">Settings &gt; AI Model</span>; until then BillionMail shows "AI large model is not currently configured". Always read and edit what it writes.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">HTML</span>: paste or write your own HTML. Best if you already have a design, for example exported from another tool, or you're comfortable with email HTML.<br />
</li>
</ul>
Give the template a clear name, such as "Monthly newsletter" or "Password reset", because you'll pick it from a list later.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Email HTML is not web HTML</span></span><br />
If you choose HTML, remember that email apps (especially Outlook) support far less than browsers:<ul class="mycode_list"><li>Use tables for layout, not flexbox or grid.<br />
</li>
<li>Put CSS inline (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>style="..."</code></div></div> on each element). Many apps ignore <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;style&gt;</code></div></div> blocks.<br />
</li>
<li>Keep the width around 600 px.<br />
</li>
<li>Use full image URLs (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://...</code></div></div>) and always add <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>alt</code></div></div> text; many people have images turned off.<br />
</li>
<li>No JavaScript, forms or video. Link to a page instead.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Personalisation tags</span></span><br />
You can put subscriber details into the email:<ul class="mycode_list"><li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.Email}}</code></div></div>: the subscriber's address.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.FirstName}}</code></div></div> and other attributes you imported. See <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">importing contacts</a>.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.UnsubscribeURL}}</code></div></div>: the personal unsubscribe link.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.name}}</code></div></div> and similar: values sent through the Send API. See <a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">the Send API guide</a>.<br />
</li>
</ul>
Spell them exactly like this, including capital letters.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Always include an unsubscribe link</span></span><br />
For newsletters this isn't optional. Gmail and Yahoo require bulk senders to offer easy unsubscribing, and people who can't unsubscribe press "Report spam" instead, which hurts much more. Put <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;a href="{{.UnsubscribeURL}}"&gt;Unsubscribe&lt;/a&gt;</code></div></div> in the footer, or turn on the <span style="font-weight: bold;" class="mycode_b">Unsubscribe link</span> option when you create the campaign. Also add your organisation's name and a contact address in the footer.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Write like a person</span></span><br />
Spam filters look at the content too. A few habits help:<ul class="mycode_list"><li>Have real text, not one big image.<br />
</li>
<li>Avoid ALL CAPS subjects, lots of exclamation marks and "FREE!!!".<br />
</li>
<li>Use your own domain in links. Link shorteners like bit.ly are a spam signal.<br />
</li>
<li>Keep the HTML small; Gmail cuts off emails above about 102 KB.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Test before you send</span></span><br />
In the template list each template has <span style="font-weight: bold;" class="mycode_b">Preview</span>, <span style="font-weight: bold;" class="mycode_b">Edit</span>, <span style="font-weight: bold;" class="mycode_b">Duplicate</span> and <span style="font-weight: bold;" class="mycode_b">Delete</span>. Use Preview first, then send a test from the campaign screen to your own Gmail and Outlook addresses and look at it on a phone. For a spam score, use a tester like mail-tester as described in <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">the deliverability guide</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Duplicate</span> is handy: keep one "base" template with your header and footer, and duplicate it for each new newsletter instead of starting from zero.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=431" target="_blank" title="">billionmail-add-template.jpg</a> (Size: 71.97 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Email Templates: Drag-and-Drop, HTML and AI Explained</span></span><br />
<br />
Every campaign and every Send API email in BillionMail uses a <span style="font-weight: bold;" class="mycode_b">template</span>: the design and text of the email. BillionMail gives you three ways to make one. This guide explains each, and the few rules that keep templates out of the spam folder.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">The three ways to build a template</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Template</span> and click <span style="font-weight: bold;" class="mycode_b">Add Template</span>. You choose how to build it here:<br />
<img src="https://adminsforum.com/attachment.php?aid=431" loading="lazy"  alt="[Image: attachment.php?aid=431]" class="mycode_img" /><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Drag</span>: a visual editor. You drag blocks (text, image, button, divider, columns) into the email. Best if you don't write HTML. The result works in most email apps because the editor produces email-safe HTML.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">AI</span>: describe what you want and an AI model writes the email for you. This only works after you connect an AI model under <span style="font-weight: bold;" class="mycode_b">Settings &gt; AI Model</span>; until then BillionMail shows "AI large model is not currently configured". Always read and edit what it writes.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">HTML</span>: paste or write your own HTML. Best if you already have a design, for example exported from another tool, or you're comfortable with email HTML.<br />
</li>
</ul>
Give the template a clear name, such as "Monthly newsletter" or "Password reset", because you'll pick it from a list later.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Email HTML is not web HTML</span></span><br />
If you choose HTML, remember that email apps (especially Outlook) support far less than browsers:<ul class="mycode_list"><li>Use tables for layout, not flexbox or grid.<br />
</li>
<li>Put CSS inline (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>style="..."</code></div></div> on each element). Many apps ignore <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;style&gt;</code></div></div> blocks.<br />
</li>
<li>Keep the width around 600 px.<br />
</li>
<li>Use full image URLs (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://...</code></div></div>) and always add <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>alt</code></div></div> text; many people have images turned off.<br />
</li>
<li>No JavaScript, forms or video. Link to a page instead.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Personalisation tags</span></span><br />
You can put subscriber details into the email:<ul class="mycode_list"><li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.Email}}</code></div></div>: the subscriber's address.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.Subscriber.FirstName}}</code></div></div> and other attributes you imported. See <a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">importing contacts</a>.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.UnsubscribeURL}}</code></div></div>: the personal unsubscribe link.<br />
</li>
<li><div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.name}}</code></div></div> and similar: values sent through the Send API. See <a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">the Send API guide</a>.<br />
</li>
</ul>
Spell them exactly like this, including capital letters.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Always include an unsubscribe link</span></span><br />
For newsletters this isn't optional. Gmail and Yahoo require bulk senders to offer easy unsubscribing, and people who can't unsubscribe press "Report spam" instead, which hurts much more. Put <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;a href="{{.UnsubscribeURL}}"&gt;Unsubscribe&lt;/a&gt;</code></div></div> in the footer, or turn on the <span style="font-weight: bold;" class="mycode_b">Unsubscribe link</span> option when you create the campaign. Also add your organisation's name and a contact address in the footer.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Write like a person</span></span><br />
Spam filters look at the content too. A few habits help:<ul class="mycode_list"><li>Have real text, not one big image.<br />
</li>
<li>Avoid ALL CAPS subjects, lots of exclamation marks and "FREE!!!".<br />
</li>
<li>Use your own domain in links. Link shorteners like bit.ly are a spam signal.<br />
</li>
<li>Keep the HTML small; Gmail cuts off emails above about 102 KB.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Test before you send</span></span><br />
In the template list each template has <span style="font-weight: bold;" class="mycode_b">Preview</span>, <span style="font-weight: bold;" class="mycode_b">Edit</span>, <span style="font-weight: bold;" class="mycode_b">Duplicate</span> and <span style="font-weight: bold;" class="mycode_b">Delete</span>. Use Preview first, then send a test from the campaign screen to your own Gmail and Outlook addresses and look at it on a phone. For a spam score, use a tester like mail-tester as described in <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">the deliverability guide</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Duplicate</span> is handy: keep one "base" template with your header and footer, and duplicate it for each new newsletter instead of starting from zero.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=431" target="_blank" title="">billionmail-add-template.jpg</a> (Size: 71.97 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail Contacts: Import Subscribers and Use Groups and Tags the Right Way]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way</link>
			<pubDate>Fri, 23 Oct 2026 18:21:57 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Contacts: Import Subscribers and Use Groups and Tags the Right Way</span></span><br />
<br />
Your email list is the most valuable part of any newsletter setup. BillionMail keeps it under <span style="font-weight: bold;" class="mycode_b">Contacts</span>, with four tabs: <span style="font-weight: bold;" class="mycode_b">Group</span>, <span style="font-weight: bold;" class="mycode_b">Subscribers</span>, <span style="font-weight: bold;" class="mycode_b">Suspend List</span> and <span style="font-weight: bold;" class="mycode_b">Tags</span>. This guide explains what each one is for and how to import a list without making a mess of it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Groups vs tags: what's the difference?</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Group</span>: a list. When you create a campaign, you choose which group(s) it goes to. Most people need only one or two groups, for example "Newsletter" and "Customers".<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Tags</span>: labels on a subscriber inside a group, such as "wordpress", "paid" or "joined-2026". Tags let you send to part of a group without making a new list. A campaign can filter by tags.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Suspend List</span>: addresses that must not get mail, such as hard bounces and complaints. Don't empty it to "get more reach"; those addresses hurt your reputation.<br />
</li>
</ul>
Rule of thumb: create a new group only when people signed up for something different. For everything else, use a tag.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Create a group</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Group</span> and add a group. Give it a clear name, because you'll pick it from a list when sending.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Prepare your CSV</span></span><br />
BillionMail imports a CSV file (up to 5 MB) with an <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email</code></div></div> column and an optional <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attributes</code></div></div> column in JSON:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email,attributes
jane@example.org,"{""FirstName"": ""Jane"", ""city"": ""Leeds""}"
omar@example.net,"{""FirstName"": ""Omar""}"</code></div></div>The doubled quotes are how CSV writes a quote inside a field. Spreadsheet apps do this for you when you save as CSV. Before importing:<ul class="mycode_list"><li>Remove duplicates and obviously wrong addresses (no @, spaces, typos like gmial.com).<br />
</li>
<li>Remove people who unsubscribed or bounced in your old tool. Never import them as subscribed.<br />
</li>
<li>For a list bigger than 5 MB, split it into several files.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Import</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Subscribers</span> and click <span style="font-weight: bold;" class="mycode_b">Import</span>. This is the import window:<br />
<img src="https://adminsforum.com/attachment.php?aid=430" loading="lazy"  alt="[Image: attachment.php?aid=430]" class="mycode_img" /><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Overwrite existing users</span>: leave on <span style="font-weight: bold;" class="mycode_b">No</span> unless you're deliberately updating details of people already in BillionMail.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Subscription Status</span>: <span style="font-weight: bold;" class="mycode_b">Subscribe</span> for people who opted in.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Status</span>: <span style="font-weight: bold;" class="mycode_b">Confirmed</span> only if they confirmed their address (double opt-in) or are existing customers who agreed to email.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Group</span>: the group from Step 1.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Data</span>: <span style="font-weight: bold;" class="mycode_b">Upload File</span> for a CSV, or <span style="font-weight: bold;" class="mycode_b">Paste Data</span> for a few addresses.<br />
</li>
</ul>
Click <span style="font-weight: bold;" class="mycode_b">Confirm</span>. The subscribers appear in the list with their status, last active time, group and tags.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Tag people</span></span><br />
Open the <span style="font-weight: bold;" class="mycode_b">Tags</span> tab to create tags, or select subscribers in the list and use <span style="font-weight: bold;" class="mycode_b">Set Tag</span> (or <span style="font-weight: bold;" class="mycode_b">Bulk Tag</span> on the Tags tab) to tag many at once. Then when you create a campaign, you can send only to, say, the "wordpress" tag inside the Newsletter group.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Use the attributes in emails</span></span><br />
Attributes like the first name can be used in templates, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>Hi {{.Subscriber.FirstName}},</code></div></div>. Always have a fallback in mind: not everyone has a first name stored, so "Hi there" may read better than an empty space. Templates are covered in <a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail email templates</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Keep the list healthy</span></span><ul class="mycode_list"><li>Never buy or scrape lists. Spam traps in bought lists can get your IP blacklisted in a day.<br />
</li>
<li>After every campaign, check bounces in the analytics and remove addresses that bounce hard. See <a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">campaign analytics explained</a>.<br />
</li>
<li>Every few months, consider removing people who haven't opened anything in a long time.<br />
</li>
</ul>
Coming from another tool? <a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy to BillionMail</a> walks through exporting and cleaning the list first.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=430" target="_blank" title="">billionmail-import-contacts.jpg</a> (Size: 105.76 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail Contacts: Import Subscribers and Use Groups and Tags the Right Way</span></span><br />
<br />
Your email list is the most valuable part of any newsletter setup. BillionMail keeps it under <span style="font-weight: bold;" class="mycode_b">Contacts</span>, with four tabs: <span style="font-weight: bold;" class="mycode_b">Group</span>, <span style="font-weight: bold;" class="mycode_b">Subscribers</span>, <span style="font-weight: bold;" class="mycode_b">Suspend List</span> and <span style="font-weight: bold;" class="mycode_b">Tags</span>. This guide explains what each one is for and how to import a list without making a mess of it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Groups vs tags: what's the difference?</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Group</span>: a list. When you create a campaign, you choose which group(s) it goes to. Most people need only one or two groups, for example "Newsletter" and "Customers".<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Tags</span>: labels on a subscriber inside a group, such as "wordpress", "paid" or "joined-2026". Tags let you send to part of a group without making a new list. A campaign can filter by tags.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Suspend List</span>: addresses that must not get mail, such as hard bounces and complaints. Don't empty it to "get more reach"; those addresses hurt your reputation.<br />
</li>
</ul>
Rule of thumb: create a new group only when people signed up for something different. For everything else, use a tag.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Create a group</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Group</span> and add a group. Give it a clear name, because you'll pick it from a list when sending.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Prepare your CSV</span></span><br />
BillionMail imports a CSV file (up to 5 MB) with an <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email</code></div></div> column and an optional <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attributes</code></div></div> column in JSON:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>email,attributes
jane@example.org,"{""FirstName"": ""Jane"", ""city"": ""Leeds""}"
omar@example.net,"{""FirstName"": ""Omar""}"</code></div></div>The doubled quotes are how CSV writes a quote inside a field. Spreadsheet apps do this for you when you save as CSV. Before importing:<ul class="mycode_list"><li>Remove duplicates and obviously wrong addresses (no @, spaces, typos like gmial.com).<br />
</li>
<li>Remove people who unsubscribed or bounced in your old tool. Never import them as subscribed.<br />
</li>
<li>For a list bigger than 5 MB, split it into several files.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Import</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Contacts &gt; Subscribers</span> and click <span style="font-weight: bold;" class="mycode_b">Import</span>. This is the import window:<br />
<img src="https://adminsforum.com/attachment.php?aid=430" loading="lazy"  alt="[Image: attachment.php?aid=430]" class="mycode_img" /><br />
<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Overwrite existing users</span>: leave on <span style="font-weight: bold;" class="mycode_b">No</span> unless you're deliberately updating details of people already in BillionMail.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Subscription Status</span>: <span style="font-weight: bold;" class="mycode_b">Subscribe</span> for people who opted in.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Status</span>: <span style="font-weight: bold;" class="mycode_b">Confirmed</span> only if they confirmed their address (double opt-in) or are existing customers who agreed to email.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Group</span>: the group from Step 1.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Data</span>: <span style="font-weight: bold;" class="mycode_b">Upload File</span> for a CSV, or <span style="font-weight: bold;" class="mycode_b">Paste Data</span> for a few addresses.<br />
</li>
</ul>
Click <span style="font-weight: bold;" class="mycode_b">Confirm</span>. The subscribers appear in the list with their status, last active time, group and tags.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Tag people</span></span><br />
Open the <span style="font-weight: bold;" class="mycode_b">Tags</span> tab to create tags, or select subscribers in the list and use <span style="font-weight: bold;" class="mycode_b">Set Tag</span> (or <span style="font-weight: bold;" class="mycode_b">Bulk Tag</span> on the Tags tab) to tag many at once. Then when you create a campaign, you can send only to, say, the "wordpress" tag inside the Newsletter group.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Use the attributes in emails</span></span><br />
Attributes like the first name can be used in templates, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>Hi {{.Subscriber.FirstName}},</code></div></div>. Always have a fallback in mind: not everyone has a first name stored, so "Hi there" may read better than an empty space. Templates are covered in <a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail email templates</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Keep the list healthy</span></span><ul class="mycode_list"><li>Never buy or scrape lists. Spam traps in bought lists can get your IP blacklisted in a day.<br />
</li>
<li>After every campaign, check bounces in the analytics and remove addresses that bounce hard. See <a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">campaign analytics explained</a>.<br />
</li>
<li>Every few months, consider removing people who haven't opened anything in a long time.<br />
</li>
</ul>
Coming from another tool? <a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy to BillionMail</a> walks through exporting and cleaning the list first.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=430" target="_blank" title="">billionmail-import-contacts.jpg</a> (Size: 105.76 KB / Downloads: 7)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to Send WordPress Email Through BillionMail SMTP (WP Mail SMTP Setup)]]></title>
			<link>https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup</link>
			<pubDate>Fri, 23 Oct 2026 18:21:13 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Send WordPress Email Through BillionMail SMTP (WP Mail SMTP Setup)</span></span><br />
<br />
WordPress sends email with PHP's <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail()</code></div></div> function by default. On most VPS servers that mail either doesn't go out at all or lands in spam, because it isn't signed and doesn't come from a real mailbox. Contact form messages, WooCommerce order emails and password resets quietly disappear.<br />
<br />
If you run BillionMail, the fix is easy: let WordPress log in to a real BillionMail mailbox over SMTP. The mail is then signed with your domain's DKIM key and sent by a server your SPF record trusts.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Create a mailbox for the site</span></span><br />
In BillionMail, open <span style="font-weight: bold;" class="mycode_b">Mailboxes</span> and click <span style="font-weight: bold;" class="mycode_b">Add Mailbox</span>. Create something like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>wordpress@example.com</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>noreply@example.com</code></div></div> with a long, random password. A separate mailbox per site means you can change one password without breaking other sites. More on this in <a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">BillionMail mailboxes and webmail</a>.<br />
<br />
Every mailbox is listed under <span style="font-weight: bold;" class="mycode_b">Mailboxes</span>. The <span style="font-weight: bold;" class="mycode_b">Copy</span> button in the Login Info column copies the server addresses and ports you need:<br />
<img src="https://adminsforum.com/attachment.php?aid=429" loading="lazy"  alt="[Image: attachment.php?aid=429]" class="mycode_img" /><br />
<br />
The copied text looks like this:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>WebMail: https://mail.example.com/roundcube
Username: wordpress@example.com
Password: ...
IMAP service [ Address: mail.example.com Port: 143/993 ]
SMTP service [ Address: mail.example.com Port: 25/465/587 ]</code></div></div>The <span style="font-weight: bold;" class="mycode_b">SMTP service address</span> is what WordPress needs.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Install WP Mail SMTP</span></span><br />
In WordPress go to <span style="font-weight: bold;" class="mycode_b">Plugins &gt; Add New</span>, search for <span style="font-weight: bold;" class="mycode_b">WP Mail SMTP</span>, install and activate it. The free version is enough. (FluentSMTP or Post SMTP work the same way if you prefer them.)<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Enter the SMTP settings</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">WP Mail SMTP &gt; Settings</span> and set:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">From Email</span>: the mailbox you created, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>wordpress@example.com</code></div></div>. Tick <span style="font-weight: bold;" class="mycode_b">Force From Email</span> so plugins can't change it to an address your server isn't allowed to send for.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">From Name</span>: your site name.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mailer</span>: <span style="font-weight: bold;" class="mycode_b">Other SMTP</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SMTP Host</span>: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> (the address from the Login Info).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Encryption</span>: <span style="font-weight: bold;" class="mycode_b">TLS</span> with port <span style="font-weight: bold;" class="mycode_b">587</span>, or <span style="font-weight: bold;" class="mycode_b">SSL</span> with port <span style="font-weight: bold;" class="mycode_b">465</span>. Both are fine; don't use port 25 for this.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Authentication</span>: on. Username is the full email address, password is the mailbox password.<br />
</li>
</ul>
Save, then open the <span style="font-weight: bold;" class="mycode_b">Tools &gt; Email Test</span> tab and send a test to a Gmail address.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Keep the password out of the database (optional)</span></span><br />
WP Mail SMTP can read the password from <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>wp-config.php</code></div></div> instead of storing it in the database:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>define( 'WPMS_ON', true );
define( 'WPMS_SMTP_PASS', 'your-mailbox-password' );</code></div></div>Put these lines above <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/* That's all, stop editing! */</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">WordPress on the same server as BillionMail?</span></span><br />
That works too. Still use the hostname <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>, not <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>localhost</code></div></div>, or the certificate won't match and the TLS connection fails. If the server can't reach its own public IP, add a line to <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/etc/hosts</code></div></div> on the server pointing <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> to the server's IP.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">If the test fails</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">"Could not connect" or a timeout</span>: port 587 or 465 is closed in your firewall or the provider's cloud firewall. Test from the WordPress server: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nc -vz mail.example.com 587</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">"Authentication failed"</span>: wrong password, or the username isn't the full address. Try logging in to webmail with the same details.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Certificate errors</span>: the mail hostname has no valid certificate. See <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL certificate won't apply</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Test arrives, but in spam</span>: see <a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">emails going to spam even though SPF, DKIM and DMARC pass</a>.<br />
</li>
</ul>
<br />
Once it works, submit your contact form once and reset a test user's password to be sure every type of email goes out. If your app isn't WordPress, the same SMTP details work in Laravel, Django, Ghost or any other app; for code-only sending, the <a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">BillionMail Send API</a> is another option.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=429" target="_blank" title="">billionmail-mailboxes-login-info.jpg</a> (Size: 105.01 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Send WordPress Email Through BillionMail SMTP (WP Mail SMTP Setup)</span></span><br />
<br />
WordPress sends email with PHP's <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail()</code></div></div> function by default. On most VPS servers that mail either doesn't go out at all or lands in spam, because it isn't signed and doesn't come from a real mailbox. Contact form messages, WooCommerce order emails and password resets quietly disappear.<br />
<br />
If you run BillionMail, the fix is easy: let WordPress log in to a real BillionMail mailbox over SMTP. The mail is then signed with your domain's DKIM key and sent by a server your SPF record trusts.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Create a mailbox for the site</span></span><br />
In BillionMail, open <span style="font-weight: bold;" class="mycode_b">Mailboxes</span> and click <span style="font-weight: bold;" class="mycode_b">Add Mailbox</span>. Create something like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>wordpress@example.com</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>noreply@example.com</code></div></div> with a long, random password. A separate mailbox per site means you can change one password without breaking other sites. More on this in <a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">BillionMail mailboxes and webmail</a>.<br />
<br />
Every mailbox is listed under <span style="font-weight: bold;" class="mycode_b">Mailboxes</span>. The <span style="font-weight: bold;" class="mycode_b">Copy</span> button in the Login Info column copies the server addresses and ports you need:<br />
<img src="https://adminsforum.com/attachment.php?aid=429" loading="lazy"  alt="[Image: attachment.php?aid=429]" class="mycode_img" /><br />
<br />
The copied text looks like this:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>WebMail: https://mail.example.com/roundcube
Username: wordpress@example.com
Password: ...
IMAP service [ Address: mail.example.com Port: 143/993 ]
SMTP service [ Address: mail.example.com Port: 25/465/587 ]</code></div></div>The <span style="font-weight: bold;" class="mycode_b">SMTP service address</span> is what WordPress needs.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Install WP Mail SMTP</span></span><br />
In WordPress go to <span style="font-weight: bold;" class="mycode_b">Plugins &gt; Add New</span>, search for <span style="font-weight: bold;" class="mycode_b">WP Mail SMTP</span>, install and activate it. The free version is enough. (FluentSMTP or Post SMTP work the same way if you prefer them.)<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Enter the SMTP settings</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">WP Mail SMTP &gt; Settings</span> and set:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">From Email</span>: the mailbox you created, for example <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>wordpress@example.com</code></div></div>. Tick <span style="font-weight: bold;" class="mycode_b">Force From Email</span> so plugins can't change it to an address your server isn't allowed to send for.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">From Name</span>: your site name.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Mailer</span>: <span style="font-weight: bold;" class="mycode_b">Other SMTP</span>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">SMTP Host</span>: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> (the address from the Login Info).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Encryption</span>: <span style="font-weight: bold;" class="mycode_b">TLS</span> with port <span style="font-weight: bold;" class="mycode_b">587</span>, or <span style="font-weight: bold;" class="mycode_b">SSL</span> with port <span style="font-weight: bold;" class="mycode_b">465</span>. Both are fine; don't use port 25 for this.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Authentication</span>: on. Username is the full email address, password is the mailbox password.<br />
</li>
</ul>
Save, then open the <span style="font-weight: bold;" class="mycode_b">Tools &gt; Email Test</span> tab and send a test to a Gmail address.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Keep the password out of the database (optional)</span></span><br />
WP Mail SMTP can read the password from <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>wp-config.php</code></div></div> instead of storing it in the database:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>define( 'WPMS_ON', true );
define( 'WPMS_SMTP_PASS', 'your-mailbox-password' );</code></div></div>Put these lines above <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/* That's all, stop editing! */</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">WordPress on the same server as BillionMail?</span></span><br />
That works too. Still use the hostname <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div>, not <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>localhost</code></div></div>, or the certificate won't match and the TLS connection fails. If the server can't reach its own public IP, add a line to <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/etc/hosts</code></div></div> on the server pointing <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> to the server's IP.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">If the test fails</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">"Could not connect" or a timeout</span>: port 587 or 465 is closed in your firewall or the provider's cloud firewall. Test from the WordPress server: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nc -vz mail.example.com 587</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">"Authentication failed"</span>: wrong password, or the username isn't the full address. Try logging in to webmail with the same details.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Certificate errors</span>: the mail hostname has no valid certificate. See <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL certificate won't apply</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Test arrives, but in spam</span>: see <a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">emails going to spam even though SPF, DKIM and DMARC pass</a>.<br />
</li>
</ul>
<br />
Once it works, submit your contact form once and reset a test user's password to be sure every type of email goes out. If your app isn't WordPress, the same SMTP details work in Laravel, Django, Ghost or any other app; for code-only sending, the <a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">BillionMail Send API</a> is another option.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php" target="_blank" rel="noopener" class="mycode_url">Send API for transactional email</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=429" target="_blank" title="">billionmail-mailboxes-login-info.jpg</a> (Size: 105.01 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to Use the BillionMail Send API for Transactional Email (With curl and PHP)]]></title>
			<link>https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php</link>
			<pubDate>Fri, 23 Oct 2026 18:19:34 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-how-to-use-the-billionmail-send-api-for-transactional-email-with-curl-and-php</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Use the BillionMail Send API for Transactional Email (With curl and PHP)</span></span><br />
<br />
Newsletters are only half of what most sites send. The other half is <span style="font-weight: bold;" class="mycode_b">transactional email</span>: password resets, order receipts, sign-up confirmations and login codes. These go to one person, right now, because they did something. BillionMail has a built-in <span style="font-weight: bold;" class="mycode_b">Send API</span> for exactly this, so your app or website can send through your own mail server instead of a paid service.<br />
<br />
This guide shows how to create an API, call it with curl and PHP, and put personal values like a name or a code into the email.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you start</span></span><ul class="mycode_list"><li>BillionMail is installed and your domain's DNS is green. If not, start with <a href="https://adminsforum.com/Thread-guide-how-to-install-billionmail-on-aapanel-docker-one-click-step-by-step" target="_blank" rel="noopener" class="mycode_url">installing BillionMail</a> and <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">the DNS setup guide</a>.<br />
</li>
<li>You have a template for the email. A simple HTML template is fine; see <a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail email templates</a>.<br />
</li>
<li>Outgoing port 25 works on your server, or you use a relay. See <a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">how to check if port 25 is blocked</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Create the API</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Send API</span> in the left menu and click <span style="font-weight: bold;" class="mycode_b">Create API</span>. The form looks like this:<br />
<img src="https://adminsforum.com/attachment.php?aid=428" loading="lazy"  alt="[Image: attachment.php?aid=428]" class="mycode_img" /><br />
<br />
Fill it in like this:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">API Name</span>: something you'll recognise later, for example "Password reset".<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">From</span>: pick your domain and the mailbox it sends from, such as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>noreply@example.com</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Display Name</span>: the name people see in their inbox, like "Example Support".<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Subject</span> and <span style="font-weight: bold;" class="mycode_b">Email template</span>: the subject line and the template to use.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Status</span>: on.<br />
</li>
</ul>
Under <span style="font-weight: bold;" class="mycode_b">Advanced Features</span> you'll find <span style="font-weight: bold;" class="mycode_b">Unsubscribe link</span>, <span style="font-weight: bold;" class="mycode_b">Track Clicks</span>, <span style="font-weight: bold;" class="mycode_b">Track Opens</span>, <span style="font-weight: bold;" class="mycode_b">IP Whitelist</span> and <span style="font-weight: bold;" class="mycode_b">Recipient Groups</span>. For transactional mail, turn the unsubscribe link <span style="font-weight: bold;" class="mycode_b">off</span> (people can't unsubscribe from a password reset) and keep tracking off unless you need it. Tracking rewrites links, and some spam filters don't like that in security emails.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">IP Whitelist</span> is worth filling in: enter your app server's IP address (several are separated by commas). Then the key only works from that server, even if it leaks. Empty means any IP can use it.<br />
<br />
After you save, the API appears in the list with its <span style="font-weight: bold;" class="mycode_b">API Key</span>, plus send count and open, click and bounce rates.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Send a test with curl</span></span><br />
The endpoint is <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/api/batch_mail/api/send</code></div></div> on your BillionMail address (the same address and port you use for the dashboard). Run this from your app server:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl -X POST 'https://mail.example.com/api/batch_mail/api/send' &#92;
  -H 'X-API-Key: YOUR_API_KEY' &#92;
  -H 'Content-Type: application/json' &#92;
  -d '{"recipient":"you@gmail.com"}'</code></div></div>A good answer has <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>"success":true</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>"code":0</code></div></div>. If you get a certificate error because you're testing with an IP or a self-signed certificate, fix the certificate rather than adding <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>-k</code></div></div> in production; see <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL fixes</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Put personal values in the email</span></span><br />
Most transactional emails need something personal: a name, a reset link, a code. Send them in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attribs</code></div></div>:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{"recipient":"jane@example.org",
 "attribs":{"name":"Jane","code":"482913","link":"https://example.com/reset?t=abc"}}</code></div></div>In the template, each value is written as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.name}}</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.code}}</code></div></div> and so on. For example:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;p&gt;Hi {{.API.name}},&lt;/p&gt;
&lt;p&gt;Your login code is &lt;b&gt;{{.API.code}}&lt;/b&gt;. It expires in 10 minutes.&lt;/p&gt;</code></div></div>The names are case-sensitive: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>code</code></div></div> in the request means <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.code}}</code></div></div> in the template, not <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.Code}}</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Call it from PHP</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;?php
function send_mail(&#36;to, array &#36;vars) {
    &#36;ch = curl_init('https://mail.example.com/api/batch_mail/api/send');
    curl_setopt_array(&#36;ch, [
        CURLOPT_POST =&gt; true,
        CURLOPT_RETURNTRANSFER =&gt; true,
        CURLOPT_TIMEOUT =&gt; 15,
        CURLOPT_HTTPHEADER =&gt; ['X-API-Key: ' . getenv('BM_API_KEY'), 'Content-Type: application/json'],
        CURLOPT_POSTFIELDS =&gt; json_encode(['recipient' =&gt; &#36;to, 'attribs' =&gt; &#36;vars]),
    ]);
    &#36;res = json_decode(curl_exec(&#36;ch), true);
    curl_close(&#36;ch);
    return !empty(&#36;res['success']);
}
send_mail('jane@example.org', ['name' =&gt; 'Jane', 'code' =&gt; '482913']);</code></div></div>Keep the key in an environment variable or a config file outside the web root, never in JavaScript that runs in the browser.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sending to several people</span></span><br />
For a small list, use <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/api/batch_mail/api/batch_send</code></div></div> with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>"recipients":["a@example.org","b@example.org"]</code></div></div> instead of <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>recipient</code></div></div>. For real newsletters, use a campaign instead; see <a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">send your first newsletter</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">If it doesn't work</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">401 or "invalid key"</span>: check the header name is exactly <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>X-API-Key</code></div></div> and the API's status is on.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Forbidden from your server</span>: the IP Whitelist doesn't include the IP your app really uses. Check with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl -4 ifconfig.me</code></div></div> on the app server.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Success, but nothing arrives</span>: the email is in the queue. See <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">emails stuck in the send queue</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Variables show up empty</span>: the name in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attribs</code></div></div> doesn't match the template exactly.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=428" target="_blank" title="">billionmail-send-api.jpg</a> (Size: 97.64 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to Use the BillionMail Send API for Transactional Email (With curl and PHP)</span></span><br />
<br />
Newsletters are only half of what most sites send. The other half is <span style="font-weight: bold;" class="mycode_b">transactional email</span>: password resets, order receipts, sign-up confirmations and login codes. These go to one person, right now, because they did something. BillionMail has a built-in <span style="font-weight: bold;" class="mycode_b">Send API</span> for exactly this, so your app or website can send through your own mail server instead of a paid service.<br />
<br />
This guide shows how to create an API, call it with curl and PHP, and put personal values like a name or a code into the email.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you start</span></span><ul class="mycode_list"><li>BillionMail is installed and your domain's DNS is green. If not, start with <a href="https://adminsforum.com/Thread-guide-how-to-install-billionmail-on-aapanel-docker-one-click-step-by-step" target="_blank" rel="noopener" class="mycode_url">installing BillionMail</a> and <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">the DNS setup guide</a>.<br />
</li>
<li>You have a template for the email. A simple HTML template is fine; see <a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">BillionMail email templates</a>.<br />
</li>
<li>Outgoing port 25 works on your server, or you use a relay. See <a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">how to check if port 25 is blocked</a>.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Create the API</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Send API</span> in the left menu and click <span style="font-weight: bold;" class="mycode_b">Create API</span>. The form looks like this:<br />
<img src="https://adminsforum.com/attachment.php?aid=428" loading="lazy"  alt="[Image: attachment.php?aid=428]" class="mycode_img" /><br />
<br />
Fill it in like this:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">API Name</span>: something you'll recognise later, for example "Password reset".<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">From</span>: pick your domain and the mailbox it sends from, such as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>noreply@example.com</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Display Name</span>: the name people see in their inbox, like "Example Support".<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Subject</span> and <span style="font-weight: bold;" class="mycode_b">Email template</span>: the subject line and the template to use.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Status</span>: on.<br />
</li>
</ul>
Under <span style="font-weight: bold;" class="mycode_b">Advanced Features</span> you'll find <span style="font-weight: bold;" class="mycode_b">Unsubscribe link</span>, <span style="font-weight: bold;" class="mycode_b">Track Clicks</span>, <span style="font-weight: bold;" class="mycode_b">Track Opens</span>, <span style="font-weight: bold;" class="mycode_b">IP Whitelist</span> and <span style="font-weight: bold;" class="mycode_b">Recipient Groups</span>. For transactional mail, turn the unsubscribe link <span style="font-weight: bold;" class="mycode_b">off</span> (people can't unsubscribe from a password reset) and keep tracking off unless you need it. Tracking rewrites links, and some spam filters don't like that in security emails.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">IP Whitelist</span> is worth filling in: enter your app server's IP address (several are separated by commas). Then the key only works from that server, even if it leaks. Empty means any IP can use it.<br />
<br />
After you save, the API appears in the list with its <span style="font-weight: bold;" class="mycode_b">API Key</span>, plus send count and open, click and bounce rates.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Send a test with curl</span></span><br />
The endpoint is <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/api/batch_mail/api/send</code></div></div> on your BillionMail address (the same address and port you use for the dashboard). Run this from your app server:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl -X POST 'https://mail.example.com/api/batch_mail/api/send' &#92;
  -H 'X-API-Key: YOUR_API_KEY' &#92;
  -H 'Content-Type: application/json' &#92;
  -d '{"recipient":"you@gmail.com"}'</code></div></div>A good answer has <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>"success":true</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>"code":0</code></div></div>. If you get a certificate error because you're testing with an IP or a self-signed certificate, fix the certificate rather than adding <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>-k</code></div></div> in production; see <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL fixes</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Put personal values in the email</span></span><br />
Most transactional emails need something personal: a name, a reset link, a code. Send them in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attribs</code></div></div>:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{"recipient":"jane@example.org",
 "attribs":{"name":"Jane","code":"482913","link":"https://example.com/reset?t=abc"}}</code></div></div>In the template, each value is written as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.name}}</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.code}}</code></div></div> and so on. For example:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;p&gt;Hi {{.API.name}},&lt;/p&gt;
&lt;p&gt;Your login code is &lt;b&gt;{{.API.code}}&lt;/b&gt;. It expires in 10 minutes.&lt;/p&gt;</code></div></div>The names are case-sensitive: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>code</code></div></div> in the request means <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.code}}</code></div></div> in the template, not <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>{{.API.Code}}</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Call it from PHP</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>&lt;?php
function send_mail(&#36;to, array &#36;vars) {
    &#36;ch = curl_init('https://mail.example.com/api/batch_mail/api/send');
    curl_setopt_array(&#36;ch, [
        CURLOPT_POST =&gt; true,
        CURLOPT_RETURNTRANSFER =&gt; true,
        CURLOPT_TIMEOUT =&gt; 15,
        CURLOPT_HTTPHEADER =&gt; ['X-API-Key: ' . getenv('BM_API_KEY'), 'Content-Type: application/json'],
        CURLOPT_POSTFIELDS =&gt; json_encode(['recipient' =&gt; &#36;to, 'attribs' =&gt; &#36;vars]),
    ]);
    &#36;res = json_decode(curl_exec(&#36;ch), true);
    curl_close(&#36;ch);
    return !empty(&#36;res['success']);
}
send_mail('jane@example.org', ['name' =&gt; 'Jane', 'code' =&gt; '482913']);</code></div></div>Keep the key in an environment variable or a config file outside the web root, never in JavaScript that runs in the browser.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sending to several people</span></span><br />
For a small list, use <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/api/batch_mail/api/batch_send</code></div></div> with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>"recipients":["a@example.org","b@example.org"]</code></div></div> instead of <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>recipient</code></div></div>. For real newsletters, use a campaign instead; see <a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">send your first newsletter</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">If it doesn't work</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">401 or "invalid key"</span>: check the header name is exactly <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>X-API-Key</code></div></div> and the API's status is on.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Forbidden from your server</span>: the IP Whitelist doesn't include the IP your app really uses. Check with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl -4 ifconfig.me</code></div></div> on the app server.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Success, but nothing arrives</span>: the email is in the queue. See <a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">emails stuck in the send queue</a>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Variables show up empty</span>: the name in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>attribs</code></div></div> doesn't match the template exactly.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail guides</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-how-to-send-wordpress-email-through-billionmail-smtp-wp-mail-smtp-setup" target="_blank" rel="noopener" class="mycode_url">WordPress email through BillionMail SMTP</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-contacts-import-subscribers-and-use-groups-and-tags-the-right-way" target="_blank" rel="noopener" class="mycode_url">Import contacts, groups and tags</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-email-templates-drag-and-drop-html-and-ai-explained" target="_blank" rel="noopener" class="mycode_url">Email templates explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-set-up-an-smtp-relay-in-billionmail-amazon-ses-brevo-mailgun" target="_blank" rel="noopener" class="mycode_url">SMTP relay with Amazon SES, Brevo or Mailgun</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-mailboxes-and-webmail-create-users-and-connect-outlook-or-a-phone" target="_blank" rel="noopener" class="mycode_url">Mailboxes and webmail</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-campaign-analytics-open-click-and-bounce-rates-explained" target="_blank" rel="noopener" class="mycode_url">Campaign analytics explained</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ip-warm-up-a-simple-30-day-plan-for-a-new-mail-server" target="_blank" rel="noopener" class="mycode_url">IP warm-up plan</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-move-from-mailchimp-or-sendy-to-billionmail-without-losing-subscribers" target="_blank" rel="noopener" class="mycode_url">Move from Mailchimp or Sendy</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-add-a-second-sending-domain-in-billionmail-dns-ssl-and-mailboxes" target="_blank" rel="noopener" class="mycode_url">Add a second sending domain</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-send-your-first-newsletter-with-billionmail-step-by-step" target="_blank" rel="noopener" class="mycode_url">Send your first newsletter</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-dns-setup-mx-spf-dkim-dmarc-and-ptr-explained" target="_blank" rel="noopener" class="mycode_url">DNS setup explained</a> · <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">Deliverability testing</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9, October 2026. Replace <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>example.com</code></div></div> and <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>mail.example.com</code></div></div> with your own domain and mail hostname. Menu names can change a little between versions.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=428" target="_blank" title="">billionmail-send-api.jpg</a> (Size: 97.64 KB / Downloads: 8)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to Update BillionMail Safely (and Roll Back if Something Breaks)]]></title>
			<link>https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks</link>
			<pubDate>Fri, 23 Oct 2026 14:54:49 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to update BillionMail safely (and roll back if something breaks)</span></span><br />
<br />
BillionMail gets regular updates with fixes and new features. Updating usually takes a few minutes, but your mail server holds things you can't easily recreate: mailboxes, contacts, templates, DKIM keys and SSL certificates. So the rule is simple: <span style="font-weight: bold;" class="mycode_b">back up first, update second, check third</span>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Check your version and read the release notes</span></span><br />
Your version is shown at the top right of the BillionMail dashboard (for example <span style="font-weight: bold;" class="mycode_b">v4.9.0</span>). Compare it with the latest release on <a href="https://github.com/aaPanel/BillionMail/releases" target="_blank" rel="noopener" class="mycode_url">BillionMail's GitHub releases page</a> and read what changed. Look for words like "breaking", "migration" or "manual step".<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Back up</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Option A (easiest): a VPS snapshot.</span> Most providers offer snapshots in their control panel. One click saves the whole server; restoring it puts everything back exactly as it was.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Option B: back up the BillionMail folder.</span> Everything BillionMail stores (database, mailboxes, configuration, keys, certificates and the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>.env</code></div></div> file) lives inside its folder:<ul class="mycode_list"><li>aaPanel Docker install: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> (the last part is random)<br />
</li>
<li>Script install: usually <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/opt/BillionMail</code></div></div></li>
</ul>
Not sure? <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls -d /www/dk_project/dk_app/billionmail/billionmail_* /opt/BillionMail 2&gt;/dev/null</code></div></div> shows it.<br />
<br />
Stop BillionMail so the database is written cleanly, copy the folder, start it again:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>cd /www/dk_project/dk_app/billionmail/billionmail_XXXX   # your folder
docker compose stop
tar -czf /root/billionmail-backup-&#36;(date +%F).tar.gz .
docker compose start
ls -lh /root/billionmail-backup-*.tar.gz</code></div></div>Mail is paused for the minute or two this takes; other servers retry, so nothing is lost. Copy the backup file off the server (aaPanel's Files page can download it).<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Update</span></span><br />
<span style="font-weight: bold;" class="mycode_b">aaPanel Docker install:</span> open <span style="font-weight: bold;" class="mycode_b">Docker</span> in aaPanel and look at the installed BillionMail app. If an update is offered there, use it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Script install (git based):</span> run the built-in updater from the BillionMail folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh update</code></div></div>(or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm update</code></div></div> if the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm</code></div></div> command exists). The updater only works in a folder that was installed with git. If it says <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>The .git does not exist</code></div></div>, your copy wasn't installed that way; update through aaPanel instead, or ask in this section.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Check that everything works</span></span><br />
<ol type="1" class="mycode_list"><li>All containers are up: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker ps --format "table {{.Names}}&#92;t{{.Status}}" | grep -i billionmail</code></div></div></li>
<li>You can log in to the dashboard, and the version at the top right changed.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Domain &gt; DNS Records</span> is still all green.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings &gt; Common Settings</span> still shows your certificate as valid.<br />
</li>
<li>Send a test email from a task, and one from webmail. Both arrive.<br />
</li>
<li>Check <span style="font-weight: bold;" class="mycode_b">Settings &gt; Send Queue</span> after a few minutes. It should be empty or nearly empty.<br />
</li>
</ol>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 5: Roll back if something broke</span></span><br />
<span style="font-weight: bold;" class="mycode_b">From a snapshot:</span> restore it in your provider's panel. Done.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">From the folder backup:</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>cd /www/dk_project/dk_app/billionmail/billionmail_XXXX
docker compose down
cd .. &amp;&amp; mv billionmail_XXXX billionmail_XXXX.broken
mkdir billionmail_XXXX &amp;&amp; cd billionmail_XXXX
tar -xzf /root/billionmail-backup-YYYY-MM-DD.tar.gz
docker compose up -d</code></div></div>The backup contains the old <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker-compose.yml</code></div></div>, which names the exact container versions, so <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker compose up -d</code></div></div> starts the old version with your old data. Once everything works again, delete the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>.broken</code></div></div> folder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mail received after the backup</span> (between backup and rollback) stays in the broken copy. If that matters, ask in this section before deleting it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Good habits</span></span><ul class="mycode_list"><li>Update when you're not in the middle of a big campaign.<br />
</li>
<li>Keep at least one recent backup off the server.<br />
</li>
<li>Clean old Docker images now and then to save disk space: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh clear</code></div></div> (or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker image prune</code></div></div>).<br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://github.com/aaPanel/BillionMail" target="_blank" rel="noopener" class="mycode_url">BillionMail on GitHub</a> · <a href="https://docs.docker.com/compose/" target="_blank" rel="noopener" class="mycode_url">Docker Compose documentation</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span>]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How to update BillionMail safely (and roll back if something breaks)</span></span><br />
<br />
BillionMail gets regular updates with fixes and new features. Updating usually takes a few minutes, but your mail server holds things you can't easily recreate: mailboxes, contacts, templates, DKIM keys and SSL certificates. So the rule is simple: <span style="font-weight: bold;" class="mycode_b">back up first, update second, check third</span>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 1: Check your version and read the release notes</span></span><br />
Your version is shown at the top right of the BillionMail dashboard (for example <span style="font-weight: bold;" class="mycode_b">v4.9.0</span>). Compare it with the latest release on <a href="https://github.com/aaPanel/BillionMail/releases" target="_blank" rel="noopener" class="mycode_url">BillionMail's GitHub releases page</a> and read what changed. Look for words like "breaking", "migration" or "manual step".<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 2: Back up</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Option A (easiest): a VPS snapshot.</span> Most providers offer snapshots in their control panel. One click saves the whole server; restoring it puts everything back exactly as it was.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Option B: back up the BillionMail folder.</span> Everything BillionMail stores (database, mailboxes, configuration, keys, certificates and the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>.env</code></div></div> file) lives inside its folder:<ul class="mycode_list"><li>aaPanel Docker install: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> (the last part is random)<br />
</li>
<li>Script install: usually <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/opt/BillionMail</code></div></div></li>
</ul>
Not sure? <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls -d /www/dk_project/dk_app/billionmail/billionmail_* /opt/BillionMail 2&gt;/dev/null</code></div></div> shows it.<br />
<br />
Stop BillionMail so the database is written cleanly, copy the folder, start it again:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>cd /www/dk_project/dk_app/billionmail/billionmail_XXXX   # your folder
docker compose stop
tar -czf /root/billionmail-backup-&#36;(date +%F).tar.gz .
docker compose start
ls -lh /root/billionmail-backup-*.tar.gz</code></div></div>Mail is paused for the minute or two this takes; other servers retry, so nothing is lost. Copy the backup file off the server (aaPanel's Files page can download it).<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 3: Update</span></span><br />
<span style="font-weight: bold;" class="mycode_b">aaPanel Docker install:</span> open <span style="font-weight: bold;" class="mycode_b">Docker</span> in aaPanel and look at the installed BillionMail app. If an update is offered there, use it.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Script install (git based):</span> run the built-in updater from the BillionMail folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh update</code></div></div>(or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm update</code></div></div> if the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm</code></div></div> command exists). The updater only works in a folder that was installed with git. If it says <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>The .git does not exist</code></div></div>, your copy wasn't installed that way; update through aaPanel instead, or ask in this section.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 4: Check that everything works</span></span><br />
<ol type="1" class="mycode_list"><li>All containers are up: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker ps --format "table {{.Names}}&#92;t{{.Status}}" | grep -i billionmail</code></div></div></li>
<li>You can log in to the dashboard, and the version at the top right changed.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Domain &gt; DNS Records</span> is still all green.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Settings &gt; Common Settings</span> still shows your certificate as valid.<br />
</li>
<li>Send a test email from a task, and one from webmail. Both arrive.<br />
</li>
<li>Check <span style="font-weight: bold;" class="mycode_b">Settings &gt; Send Queue</span> after a few minutes. It should be empty or nearly empty.<br />
</li>
</ol>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Step 5: Roll back if something broke</span></span><br />
<span style="font-weight: bold;" class="mycode_b">From a snapshot:</span> restore it in your provider's panel. Done.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">From the folder backup:</span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>cd /www/dk_project/dk_app/billionmail/billionmail_XXXX
docker compose down
cd .. &amp;&amp; mv billionmail_XXXX billionmail_XXXX.broken
mkdir billionmail_XXXX &amp;&amp; cd billionmail_XXXX
tar -xzf /root/billionmail-backup-YYYY-MM-DD.tar.gz
docker compose up -d</code></div></div>The backup contains the old <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker-compose.yml</code></div></div>, which names the exact container versions, so <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker compose up -d</code></div></div> starts the old version with your old data. Once everything works again, delete the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>.broken</code></div></div> folder.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Mail received after the backup</span> (between backup and rollback) stays in the broken copy. If that matters, ask in this section before deleting it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Good habits</span></span><ul class="mycode_list"><li>Update when you're not in the middle of a big campaign.<br />
</li>
<li>Keep at least one recent backup off the server.<br />
</li>
<li>Clean old Docker images now and then to save disk space: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh clear</code></div></div> (or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker image prune</code></div></div>).<br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://github.com/aaPanel/BillionMail" target="_blank" rel="noopener" class="mycode_url">BillionMail on GitHub</a> · <a href="https://docs.docker.com/compose/" target="_blank" rel="noopener" class="mycode_url">Docker Compose documentation</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail Emails Going to Spam Even Though SPF, DKIM and DMARC Pass]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass</link>
			<pubDate>Fri, 23 Oct 2026 14:54:25 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail emails going to spam even though SPF, DKIM and DMARC pass</span></span><br />
<br />
Three green checks and still the spam folder. It's one of the most common complaints with any self-hosted mail server. The reason: SPF, DKIM and DMARC only prove the email is really from you. They don't prove you're <span style="font-style: italic;" class="mycode_i">worth reading</span>. Gmail and Outlook decide that from your server setup, your reputation and how people react to your mail.<br />
<br />
Go through this list top to bottom. The first items are quick technical fixes; the later ones take time.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Reverse DNS (PTR)</span></span><br />
Your server's IP should point back to your mail host name. Without it, many receivers treat you as a home computer or a bot. On our first test this was the only real error. The tester said: <span style="font-style: italic;" class="mycode_i">"The sending server's IP address doesn't have a matching reverse DNS record."</span><br />
<img src="https://adminsforum.com/attachment.php?aid=427" loading="lazy"  alt="[Image: attachment.php?aid=427]" class="mycode_img" /><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>dig +short -x YOUR_SERVER_IP</code></div></div>The answer must be your mail host (e.g. <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm.example.com.</code></div></div>), and that name's A record must point back to the same IP. Only your VPS provider can set PTR: open a ticket or look for "Reverse DNS" in their panel.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. HELO name</span></span><br />
If your server introduces itself as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>localhost</code></div></div> or a container name, spam filters notice. See <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-and-hostname-fix-let-s-encrypt-and-helo-localhost" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL and hostname fix</a>, Part 2.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Blacklists</span></span><br />
Cheap VPS IPs are often recycled from earlier spammers. Check your IP and domain on a blacklist checker, or run a test with a free email tester (our <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">deliverability guide</a> shows how). If you're listed, follow that list's delisting steps, or ask your provider for a clean IP.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Content</span></span><ul class="mycode_list"><li>Write like a person. Our first test email used "free", "marketing platform" and "campaign" in a short text, and the tester flagged the wording.<br />
</li>
<li>Don't send one big image with no text. Keep a healthy text-to-image balance.<br />
</li>
<li>Avoid URL shorteners, and link to your own domain where possible.<br />
</li>
<li>Keep the From name and address the same every time.<br />
</li>
<li>Explain why the person gets the email ("You get this because you joined our newsletter").<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. One-click unsubscribe</span></span><br />
Gmail and Yahoo require bulk senders to offer one-click unsubscribe. Keep <span style="font-weight: bold;" class="mycode_b">Unsubscribe link</span> switched on in every task. If unsubscribing is hard, people press "Report spam" instead, which is far worse for you.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. List quality</span></span><br />
Only mail people who asked for it. Bought or scraped lists contain dead addresses and spam traps, and one campaign to such a list can ruin a new IP. Remove addresses that bounce, and stop mailing people who haven't opened anything in months.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7. Warm up your IP and domain</span></span><br />
A brand-new server that suddenly sends 10,000 emails looks exactly like a spammer. Keep the <span style="font-weight: bold;" class="mycode_b">IP Warmup</span> switch on in your tasks and grow slowly over two to four weeks: start with a few hundred of your most engaged readers, then roughly double every few days if results stay good. Need volume right away? Use an SMTP relay under <span style="font-weight: bold;" class="mycode_b">SMTP</span> while your own IP builds a reputation.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">8. Watch Gmail's spam rate</span></span><br />
Sign up for <a href="https://postmaster.google.com/" target="_blank" rel="noopener" class="mycode_url">Google Postmaster Tools</a> (free) and add your sending domain. It shows how often Gmail users mark your mail as spam. Google's sender rules ask bulk senders to keep this under <span style="font-weight: bold;" class="mycode_b">0.3%</span>, and ideally under 0.1%. Microsoft offers a similar service called SNDS for your IP.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">9. Engagement</span></span><br />
Replies, opens, moving mail from spam to the inbox and adding you to contacts all teach Gmail that people want your email. Ask a question readers can answer, and send from an address that accepts replies.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How long until it improves?</span></span><br />
Technical fixes (PTR, HELO, DNS) work within a day. Reputation takes weeks of steady, wanted mail. If you fixed the setup and still land in spam, the answer is usually time and smaller, more engaged sends, not more settings.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://support.google.com/a/answer/81126" target="_blank" rel="noopener" class="mycode_url">Google: email sender guidelines</a> · <a href="https://support.google.com/mail/answer/9981691" target="_blank" rel="noopener" class="mycode_url">Gmail: Postmaster Tools</a> · <a href="https://datatracker.ietf.org/doc/html/rfc8058" target="_blank" rel="noopener" class="mycode_url">RFC 8058: one-click unsubscribe</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=427" target="_blank" title="">billionmail-reverse-dns-ptr-warning.jpg</a> (Size: 120.5 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail emails going to spam even though SPF, DKIM and DMARC pass</span></span><br />
<br />
Three green checks and still the spam folder. It's one of the most common complaints with any self-hosted mail server. The reason: SPF, DKIM and DMARC only prove the email is really from you. They don't prove you're <span style="font-style: italic;" class="mycode_i">worth reading</span>. Gmail and Outlook decide that from your server setup, your reputation and how people react to your mail.<br />
<br />
Go through this list top to bottom. The first items are quick technical fixes; the later ones take time.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Reverse DNS (PTR)</span></span><br />
Your server's IP should point back to your mail host name. Without it, many receivers treat you as a home computer or a bot. On our first test this was the only real error. The tester said: <span style="font-style: italic;" class="mycode_i">"The sending server's IP address doesn't have a matching reverse DNS record."</span><br />
<img src="https://adminsforum.com/attachment.php?aid=427" loading="lazy"  alt="[Image: attachment.php?aid=427]" class="mycode_img" /><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>dig +short -x YOUR_SERVER_IP</code></div></div>The answer must be your mail host (e.g. <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm.example.com.</code></div></div>), and that name's A record must point back to the same IP. Only your VPS provider can set PTR: open a ticket or look for "Reverse DNS" in their panel.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. HELO name</span></span><br />
If your server introduces itself as <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>localhost</code></div></div> or a container name, spam filters notice. See <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-and-hostname-fix-let-s-encrypt-and-helo-localhost" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL and hostname fix</a>, Part 2.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Blacklists</span></span><br />
Cheap VPS IPs are often recycled from earlier spammers. Check your IP and domain on a blacklist checker, or run a test with a free email tester (our <a href="https://adminsforum.com/Thread-guide-billionmail-deliverability-test-your-email-and-fix-spam-problems" target="_blank" rel="noopener" class="mycode_url">deliverability guide</a> shows how). If you're listed, follow that list's delisting steps, or ask your provider for a clean IP.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Content</span></span><ul class="mycode_list"><li>Write like a person. Our first test email used "free", "marketing platform" and "campaign" in a short text, and the tester flagged the wording.<br />
</li>
<li>Don't send one big image with no text. Keep a healthy text-to-image balance.<br />
</li>
<li>Avoid URL shorteners, and link to your own domain where possible.<br />
</li>
<li>Keep the From name and address the same every time.<br />
</li>
<li>Explain why the person gets the email ("You get this because you joined our newsletter").<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. One-click unsubscribe</span></span><br />
Gmail and Yahoo require bulk senders to offer one-click unsubscribe. Keep <span style="font-weight: bold;" class="mycode_b">Unsubscribe link</span> switched on in every task. If unsubscribing is hard, people press "Report spam" instead, which is far worse for you.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">6. List quality</span></span><br />
Only mail people who asked for it. Bought or scraped lists contain dead addresses and spam traps, and one campaign to such a list can ruin a new IP. Remove addresses that bounce, and stop mailing people who haven't opened anything in months.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">7. Warm up your IP and domain</span></span><br />
A brand-new server that suddenly sends 10,000 emails looks exactly like a spammer. Keep the <span style="font-weight: bold;" class="mycode_b">IP Warmup</span> switch on in your tasks and grow slowly over two to four weeks: start with a few hundred of your most engaged readers, then roughly double every few days if results stay good. Need volume right away? Use an SMTP relay under <span style="font-weight: bold;" class="mycode_b">SMTP</span> while your own IP builds a reputation.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">8. Watch Gmail's spam rate</span></span><br />
Sign up for <a href="https://postmaster.google.com/" target="_blank" rel="noopener" class="mycode_url">Google Postmaster Tools</a> (free) and add your sending domain. It shows how often Gmail users mark your mail as spam. Google's sender rules ask bulk senders to keep this under <span style="font-weight: bold;" class="mycode_b">0.3%</span>, and ideally under 0.1%. Microsoft offers a similar service called SNDS for your IP.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">9. Engagement</span></span><br />
Replies, opens, moving mail from spam to the inbox and adding you to contacts all teach Gmail that people want your email. Ask a question readers can answer, and send from an address that accepts replies.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How long until it improves?</span></span><br />
Technical fixes (PTR, HELO, DNS) work within a day. Reputation takes weeks of steady, wanted mail. If you fixed the setup and still land in spam, the answer is usually time and smaller, more engaged sends, not more settings.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://support.google.com/a/answer/81126" target="_blank" rel="noopener" class="mycode_url">Google: email sender guidelines</a> · <a href="https://support.google.com/mail/answer/9981691" target="_blank" rel="noopener" class="mycode_url">Gmail: Postmaster Tools</a> · <a href="https://datatracker.ietf.org/doc/html/rfc8058" target="_blank" rel="noopener" class="mycode_url">RFC 8058: one-click unsubscribe</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=427" target="_blank" title="">billionmail-reverse-dns-ptr-warning.jpg</a> (Size: 120.5 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail Webmail (Roundcube) Not Working: Login, Connection and Sending Errors]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors</link>
			<pubDate>Fri, 23 Oct 2026 14:54:02 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail webmail (Roundcube) not working: login, connection and sending errors</span></span><br />
<br />
BillionMail includes <span style="font-weight: bold;" class="mycode_b">Roundcube</span>, a webmail where you read and answer mail for your mailboxes (support@, hello@ and so on). This guide covers the problems people hit most: the page won't open, login fails, mail won't send, or new mail never shows up.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Where is webmail?</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-mail-host/roundcube/</code></div></div>If your BillionMail uses a custom HTTPS port, include it: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-mail-host:PORT/roundcube/</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 1: "Login failed"</span></span><ul class="mycode_list"><li>Use the <span style="font-weight: bold;" class="mycode_b">full email address</span> as the username, e.g. <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>support@news.example.com</code></div></div>, not just "support".<br />
</li>
<li>Use the <span style="font-weight: bold;" class="mycode_b">mailbox password</span>, not your BillionMail admin password. They're different.<br />
</li>
<li>Not sure of the password? In BillionMail, open <span style="font-weight: bold;" class="mycode_b">Mailboxes</span>, edit the mailbox and set a new one.<br />
</li>
<li>Still failing? The login check is done by the <span style="font-weight: bold;" class="mycode_b">Dovecot</span> container. See Problem 2.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 2: "Connection to storage server failed"</span></span><br />
Roundcube can't reach Dovecot, the part that stores mail. Open <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span> in BillionMail and check that every service (postfix, dovecot, webmail, rspamd, pgsql, redis) says <span style="font-weight: bold;" class="mycode_b">Running</span>. Click <span style="font-weight: bold;" class="mycode_b">Restart</span> next to <span style="font-weight: bold;" class="mycode_b">dovecot</span> and then <span style="font-weight: bold;" class="mycode_b">webmail</span>.<br />
<img src="https://adminsforum.com/attachment.php?aid=426" loading="lazy"  alt="[Image: attachment.php?aid=426]" class="mycode_img" /><br />
<br />
From the command line, first list your container names:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker ps --format "{{.Names}}" | grep -i billionmail</code></div></div>You'll see names like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>billionmail_xxxx-dovecot-billionmail-1</code></div></div>. Use yours in place of DOVECOT and WEBMAIL:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker restart DOVECOT WEBMAIL
docker logs --tail 50 DOVECOT</code></div></div>Errors about certificates or "Permission denied" in that log point to the real cause.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 3: "SMTP Error (535): Authentication failed" when sending</span></span><br />
Reading works, sending doesn't. Roundcube hands outgoing mail to <span style="font-weight: bold;" class="mycode_b">Postfix</span>, which checks the password with Dovecot.<ul class="mycode_list"><li>Log out of webmail and in again (an old session can keep an old password).<br />
</li>
<li>Restart <span style="font-weight: bold;" class="mycode_b">postfix</span> and <span style="font-weight: bold;" class="mycode_b">dovecot</span> in <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span>.<br />
</li>
<li>Check the mail log from your BillionMail folder (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> on aaPanel): <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>tail -n 50 logs/postfix/mail.log</code></div></div></li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 4: Blank page, 502 or 504 error</span></span><br />
The webmail container (Roundcube runs on PHP-FPM) isn't answering. Restart <span style="font-weight: bold;" class="mycode_b">webmail</span> in <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span>, wait 20 seconds and reload. If it comes back, check its log:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker logs --tail 50 WEBMAIL</code></div></div>A full disk also causes this. Check with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>df -h</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 5: You can log in, but new mail never arrives</span></span><br />
Sending and receiving are separate. For receiving, the internet must find and reach your server:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">MX record:</span> <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>dig +short MX news.example.com</code></div></div> must show your mail host.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Incoming port 25:</span> from another computer, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nc -vz -w 5 your-mail-host 25</code></div></div> must connect. Open port 25 in aaPanel's <span style="font-weight: bold;" class="mycode_b">Security</span> page and your provider's firewall.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Cloudflare:</span> the mail host record must be DNS only (grey cloud).<br />
</li>
</ul>
Send a test from a Gmail account. If Gmail returns a bounce message, it tells you exactly why.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Using a mail app instead (Outlook, Thunderbird, phone)</span></span><br />
The <span style="font-weight: bold;" class="mycode_b">Copy</span> link under "Login info" on the Mailboxes page gives you the settings. Usually:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Incoming (IMAP):</span> your mail host, port <span style="font-weight: bold;" class="mycode_b">993</span>, SSL/TLS<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Outgoing (SMTP):</span> your mail host, port <span style="font-weight: bold;" class="mycode_b">465</span> (SSL/TLS) or <span style="font-weight: bold;" class="mycode_b">587</span> (STARTTLS), login required<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Username:</span> the full email address<br />
</li>
</ul>
Open ports 993, 465 and 587 in aaPanel's Security page. A certificate warning in the app means you haven't applied a Let's Encrypt certificate yet; see <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-and-hostname-fix-let-s-encrypt-and-helo-localhost" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL and hostname fix</a>.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://github.com/aaPanel/BillionMail" target="_blank" rel="noopener" class="mycode_url">BillionMail on GitHub</a> · <a href="https://github.com/roundcube/roundcubemail/wiki" target="_blank" rel="noopener" class="mycode_url">Roundcube wiki</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=426" target="_blank" title="">billionmail-webmail-services.jpg</a> (Size: 91.2 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail webmail (Roundcube) not working: login, connection and sending errors</span></span><br />
<br />
BillionMail includes <span style="font-weight: bold;" class="mycode_b">Roundcube</span>, a webmail where you read and answer mail for your mailboxes (support@, hello@ and so on). This guide covers the problems people hit most: the page won't open, login fails, mail won't send, or new mail never shows up.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Where is webmail?</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-mail-host/roundcube/</code></div></div>If your BillionMail uses a custom HTTPS port, include it: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-mail-host:PORT/roundcube/</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 1: "Login failed"</span></span><ul class="mycode_list"><li>Use the <span style="font-weight: bold;" class="mycode_b">full email address</span> as the username, e.g. <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>support@news.example.com</code></div></div>, not just "support".<br />
</li>
<li>Use the <span style="font-weight: bold;" class="mycode_b">mailbox password</span>, not your BillionMail admin password. They're different.<br />
</li>
<li>Not sure of the password? In BillionMail, open <span style="font-weight: bold;" class="mycode_b">Mailboxes</span>, edit the mailbox and set a new one.<br />
</li>
<li>Still failing? The login check is done by the <span style="font-weight: bold;" class="mycode_b">Dovecot</span> container. See Problem 2.<br />
</li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 2: "Connection to storage server failed"</span></span><br />
Roundcube can't reach Dovecot, the part that stores mail. Open <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span> in BillionMail and check that every service (postfix, dovecot, webmail, rspamd, pgsql, redis) says <span style="font-weight: bold;" class="mycode_b">Running</span>. Click <span style="font-weight: bold;" class="mycode_b">Restart</span> next to <span style="font-weight: bold;" class="mycode_b">dovecot</span> and then <span style="font-weight: bold;" class="mycode_b">webmail</span>.<br />
<img src="https://adminsforum.com/attachment.php?aid=426" loading="lazy"  alt="[Image: attachment.php?aid=426]" class="mycode_img" /><br />
<br />
From the command line, first list your container names:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker ps --format "{{.Names}}" | grep -i billionmail</code></div></div>You'll see names like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>billionmail_xxxx-dovecot-billionmail-1</code></div></div>. Use yours in place of DOVECOT and WEBMAIL:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker restart DOVECOT WEBMAIL
docker logs --tail 50 DOVECOT</code></div></div>Errors about certificates or "Permission denied" in that log point to the real cause.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 3: "SMTP Error (535): Authentication failed" when sending</span></span><br />
Reading works, sending doesn't. Roundcube hands outgoing mail to <span style="font-weight: bold;" class="mycode_b">Postfix</span>, which checks the password with Dovecot.<ul class="mycode_list"><li>Log out of webmail and in again (an old session can keep an old password).<br />
</li>
<li>Restart <span style="font-weight: bold;" class="mycode_b">postfix</span> and <span style="font-weight: bold;" class="mycode_b">dovecot</span> in <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span>.<br />
</li>
<li>Check the mail log from your BillionMail folder (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> on aaPanel): <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>tail -n 50 logs/postfix/mail.log</code></div></div></li>
</ul>
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 4: Blank page, 502 or 504 error</span></span><br />
The webmail container (Roundcube runs on PHP-FPM) isn't answering. Restart <span style="font-weight: bold;" class="mycode_b">webmail</span> in <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span>, wait 20 seconds and reload. If it comes back, check its log:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker logs --tail 50 WEBMAIL</code></div></div>A full disk also causes this. Check with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>df -h</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Problem 5: You can log in, but new mail never arrives</span></span><br />
Sending and receiving are separate. For receiving, the internet must find and reach your server:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">MX record:</span> <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>dig +short MX news.example.com</code></div></div> must show your mail host.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Incoming port 25:</span> from another computer, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nc -vz -w 5 your-mail-host 25</code></div></div> must connect. Open port 25 in aaPanel's <span style="font-weight: bold;" class="mycode_b">Security</span> page and your provider's firewall.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Cloudflare:</span> the mail host record must be DNS only (grey cloud).<br />
</li>
</ul>
Send a test from a Gmail account. If Gmail returns a bounce message, it tells you exactly why.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Using a mail app instead (Outlook, Thunderbird, phone)</span></span><br />
The <span style="font-weight: bold;" class="mycode_b">Copy</span> link under "Login info" on the Mailboxes page gives you the settings. Usually:<ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Incoming (IMAP):</span> your mail host, port <span style="font-weight: bold;" class="mycode_b">993</span>, SSL/TLS<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Outgoing (SMTP):</span> your mail host, port <span style="font-weight: bold;" class="mycode_b">465</span> (SSL/TLS) or <span style="font-weight: bold;" class="mycode_b">587</span> (STARTTLS), login required<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Username:</span> the full email address<br />
</li>
</ul>
Open ports 993, 465 and 587 in aaPanel's Security page. A certificate warning in the app means you haven't applied a Let's Encrypt certificate yet; see <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-and-hostname-fix-let-s-encrypt-and-helo-localhost" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL and hostname fix</a>.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://github.com/aaPanel/BillionMail" target="_blank" rel="noopener" class="mycode_url">BillionMail on GitHub</a> · <a href="https://github.com/roundcube/roundcubemail/wiki" target="_blank" rel="noopener" class="mycode_url">Roundcube wiki</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=426" target="_blank" title="">billionmail-webmail-services.jpg</a> (Size: 91.2 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Can't Open the BillionMail Dashboard? Login URL, Ports and Firewall Fixes]]></title>
			<link>https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes</link>
			<pubDate>Fri, 23 Oct 2026 14:53:38 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Can't open the BillionMail dashboard? Login URL, ports and firewall fixes</span></span><br />
<br />
BillionMail installed without errors, but the browser shows "This site can't be reached", a blank page, or a login that won't accept your password. Work through these checks in order; most people are back in within five minutes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">First, find your BillionMail folder and containers.</span> Most commands below run from the BillionMail folder:<ul class="mycode_list"><li>aaPanel Docker install: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> (the last part is random)<br />
</li>
<li>Script install: usually <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/opt/BillionMail</code></div></div></li>
</ul>
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls -d /www/dk_project/dk_app/billionmail/billionmail_* /opt/BillionMail 2&gt;/dev/null
docker ps --format "{{.Names}}" | grep -i billionmail</code></div></div>The second command lists the containers, with names like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>billionmail_xxxx-core-billionmail-1</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 1: Are you using the right address?</span></span><br />
The dashboard address has three parts: the host, the <span style="font-weight: bold;" class="mycode_b">HTTPS port</span> and a <span style="font-weight: bold;" class="mycode_b">secret path</span> (the "safe entrance"):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-host:HTTPS_PORT/SAFE_PATH</code></div></div>See your values in the BillionMail folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>grep -E '^HTTPS_PORT|^HTTP_PORT|^SafePath' .env</code></div></div>If the folder contains <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm.sh</code></div></div> (run <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls</code></div></div>), it can print the full address and login details for you:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh default</code></div></div>On aaPanel installs the ports are often <span style="font-style: italic;" class="mycode_i">not</span> 80 and 443, because aaPanel's own web server may already use them. Opening <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-host/</code></div></div> without the port and path is the most common mistake.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 2: Is the port open?</span></span><ul class="mycode_list"><li>In aaPanel, open <span style="font-weight: bold;" class="mycode_b">Security</span> and add the HTTPS port (and HTTP port) if it's missing.<br />
</li>
<li>Check your provider's cloud firewall too; it sits in front of aaPanel's.<br />
</li>
</ul>
From your own computer:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl -kI https://your-host:HTTPS_PORT/</code></div></div>A timeout means a firewall blocks it. "Connection refused" means nothing listens there (see Check 4).<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 3: Cloudflare</span></span><br />
If your domain uses Cloudflare with the orange cloud, the proxy only passes a few HTTPS ports (443, 2053, 2083, 2087, 2096 and 8443). Any other custom port simply won't load through it. Set the mail host record to <span style="font-weight: bold;" class="mycode_b">DNS only</span> (grey cloud). Mail records must be DNS only anyway.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 4: Are the containers running?</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker ps -a --format "table {{.Names}}&#92;t{{.Status}}" | grep -i billionmail</code></div></div>Every container should say <span style="font-weight: bold;" class="mycode_b">Up</span>. If one says <span style="font-weight: bold;" class="mycode_b">Exited</span> or <span style="font-weight: bold;" class="mycode_b">Restarting</span>, look at its log:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker logs --tail 50 CONTAINER_NAME</code></div></div>Restart everything from the BillionMail folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker compose restart</code></div></div>Once you're back in, <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span> shows the same containers with <span style="font-weight: bold;" class="mycode_b">Restart</span> buttons, handy for next time.<br />
<img src="https://adminsforum.com/attachment.php?aid=425" loading="lazy"  alt="[Image: attachment.php?aid=425]" class="mycode_img" /><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 5: Port conflicts</span></span><br />
If the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>core</code></div></div> container won't start, another program may already use its port:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ss -tlnp | grep -E ':80 |:443 |:8080 '</code></div></div>If <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nginx</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>httpd</code></div></div> holds the port, change BillionMail's port in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>.env</code></div></div> (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>HTTP_PORT</code></div></div> / <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>HTTPS_PORT</code></div></div>) to a free one, run <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker compose up -d</code></div></div>, and open the new port in the firewall.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 6: Browser warning about the certificate</span></span><br />
Until you apply a Let's Encrypt certificate, BillionMail uses a self-signed one, so the browser warns you. That's expected on a fresh install: click <span style="font-weight: bold;" class="mycode_b">Advanced &gt; Proceed</span>, then fix it properly with <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-and-hostname-fix-let-s-encrypt-and-helo-localhost" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL and hostname fix</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 7: Login page loads but you can't get in</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Forgot the password or username:</span> in the BillionMail folder, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh change-password</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh change-user</code></div></div> (if your folder has bm.sh).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Still using the default login?</span> A fresh install from the official script starts with a well-known default username and password. Change both, and the safe entrance path, under <span style="font-weight: bold;" class="mycode_b">Settings &gt; Common Settings &gt; Security Settings</span> straight away.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Blocked after too many attempts:</span> BillionMail uses fail2ban to block repeated failed logins. Wait, or try from another connection. Check with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>tail -n 30 logs/fail2ban/fail2ban.log</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">IP whitelist turned on and your IP changed:</span> <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh cancel-ip-limit</code></div></div> turns the console IP whitelist off again.<br />
</li>
</ul>
<br />
Still stuck? Post in this section with the output of Check 1 (hide your domain if you like), Check 4, and what the browser shows.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://github.com/aaPanel/BillionMail" target="_blank" rel="noopener" class="mycode_url">BillionMail on GitHub</a> · <a href="https://developers.cloudflare.com/fundamentals/reference/network-ports/" target="_blank" rel="noopener" class="mycode_url">Cloudflare: network ports</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=425" target="_blank" title="">billionmail-settings-service.jpg</a> (Size: 91.2 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Can't open the BillionMail dashboard? Login URL, ports and firewall fixes</span></span><br />
<br />
BillionMail installed without errors, but the browser shows "This site can't be reached", a blank page, or a login that won't accept your password. Work through these checks in order; most people are back in within five minutes.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">First, find your BillionMail folder and containers.</span> Most commands below run from the BillionMail folder:<ul class="mycode_list"><li>aaPanel Docker install: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> (the last part is random)<br />
</li>
<li>Script install: usually <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/opt/BillionMail</code></div></div></li>
</ul>
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls -d /www/dk_project/dk_app/billionmail/billionmail_* /opt/BillionMail 2&gt;/dev/null
docker ps --format "{{.Names}}" | grep -i billionmail</code></div></div>The second command lists the containers, with names like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>billionmail_xxxx-core-billionmail-1</code></div></div>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 1: Are you using the right address?</span></span><br />
The dashboard address has three parts: the host, the <span style="font-weight: bold;" class="mycode_b">HTTPS port</span> and a <span style="font-weight: bold;" class="mycode_b">secret path</span> (the "safe entrance"):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-host:HTTPS_PORT/SAFE_PATH</code></div></div>See your values in the BillionMail folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>grep -E '^HTTPS_PORT|^HTTP_PORT|^SafePath' .env</code></div></div>If the folder contains <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bm.sh</code></div></div> (run <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls</code></div></div>), it can print the full address and login details for you:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh default</code></div></div>On aaPanel installs the ports are often <span style="font-style: italic;" class="mycode_i">not</span> 80 and 443, because aaPanel's own web server may already use them. Opening <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>https://your-host/</code></div></div> without the port and path is the most common mistake.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 2: Is the port open?</span></span><ul class="mycode_list"><li>In aaPanel, open <span style="font-weight: bold;" class="mycode_b">Security</span> and add the HTTPS port (and HTTP port) if it's missing.<br />
</li>
<li>Check your provider's cloud firewall too; it sits in front of aaPanel's.<br />
</li>
</ul>
From your own computer:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>curl -kI https://your-host:HTTPS_PORT/</code></div></div>A timeout means a firewall blocks it. "Connection refused" means nothing listens there (see Check 4).<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 3: Cloudflare</span></span><br />
If your domain uses Cloudflare with the orange cloud, the proxy only passes a few HTTPS ports (443, 2053, 2083, 2087, 2096 and 8443). Any other custom port simply won't load through it. Set the mail host record to <span style="font-weight: bold;" class="mycode_b">DNS only</span> (grey cloud). Mail records must be DNS only anyway.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 4: Are the containers running?</span></span><br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker ps -a --format "table {{.Names}}&#92;t{{.Status}}" | grep -i billionmail</code></div></div>Every container should say <span style="font-weight: bold;" class="mycode_b">Up</span>. If one says <span style="font-weight: bold;" class="mycode_b">Exited</span> or <span style="font-weight: bold;" class="mycode_b">Restarting</span>, look at its log:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker logs --tail 50 CONTAINER_NAME</code></div></div>Restart everything from the BillionMail folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker compose restart</code></div></div>Once you're back in, <span style="font-weight: bold;" class="mycode_b">Settings &gt; Service</span> shows the same containers with <span style="font-weight: bold;" class="mycode_b">Restart</span> buttons, handy for next time.<br />
<img src="https://adminsforum.com/attachment.php?aid=425" loading="lazy"  alt="[Image: attachment.php?aid=425]" class="mycode_img" /><br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 5: Port conflicts</span></span><br />
If the <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>core</code></div></div> container won't start, another program may already use its port:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ss -tlnp | grep -E ':80 |:443 |:8080 '</code></div></div>If <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>nginx</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>httpd</code></div></div> holds the port, change BillionMail's port in <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>.env</code></div></div> (<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>HTTP_PORT</code></div></div> / <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>HTTPS_PORT</code></div></div>) to a free one, run <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker compose up -d</code></div></div>, and open the new port in the firewall.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 6: Browser warning about the certificate</span></span><br />
Until you apply a Let's Encrypt certificate, BillionMail uses a self-signed one, so the browser warns you. That's expected on a fresh install: click <span style="font-weight: bold;" class="mycode_b">Advanced &gt; Proceed</span>, then fix it properly with <a href="https://adminsforum.com/Thread-guide-billionmail-ssl-and-hostname-fix-let-s-encrypt-and-helo-localhost" target="_blank" rel="noopener" class="mycode_url">BillionMail SSL and hostname fix</a>.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Check 7: Login page loads but you can't get in</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Forgot the password or username:</span> in the BillionMail folder, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh change-password</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh change-user</code></div></div> (if your folder has bm.sh).<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Still using the default login?</span> A fresh install from the official script starts with a well-known default username and password. Change both, and the safe entrance path, under <span style="font-weight: bold;" class="mycode_b">Settings &gt; Common Settings &gt; Security Settings</span> straight away.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Blocked after too many attempts:</span> BillionMail uses fail2ban to block repeated failed logins. Wait, or try from another connection. Check with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>tail -n 30 logs/fail2ban/fail2ban.log</code></div></div>.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">IP whitelist turned on and your IP changed:</span> <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>bash bm.sh cancel-ip-limit</code></div></div> turns the console IP whitelist off again.<br />
</li>
</ul>
<br />
Still stuck? Post in this section with the output of Check 1 (hide your domain if you like), Check 4, and what the browser shows.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://github.com/aaPanel/BillionMail" target="_blank" rel="noopener" class="mycode_url">BillionMail on GitHub</a> · <a href="https://developers.cloudflare.com/fundamentals/reference/network-ports/" target="_blank" rel="noopener" class="mycode_url">Cloudflare: network ports</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it" target="_blank" rel="noopener" class="mycode_url">Emails stuck in the send queue</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=425" target="_blank" title="">billionmail-settings-service.jpg</a> (Size: 91.2 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[BillionMail Emails Stuck in the Send Queue: Read the Delay Reason and Fix It]]></title>
			<link>https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it</link>
			<pubDate>Fri, 23 Oct 2026 14:53:09 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://adminsforum.com/member.php?action=profile&uid=1">JAY</a>]]></dc:creator>
			<guid isPermaLink="false">https://adminsforum.com/Thread-guide-billionmail-emails-stuck-in-the-send-queue-read-the-delay-reason-and-fix-it</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail emails stuck in the send queue: read the delay reason and fix it</span></span><br />
<br />
When BillionMail can't deliver an email right away, it doesn't give up. It keeps the message in a <span style="font-weight: bold;" class="mycode_b">queue</span> and tries again later. A few messages there is normal. A queue that keeps growing means something is wrong, and the queue tells you exactly what, if you know how to read it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Where to find the queue</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Settings &gt; Send Queue</span>. At the top you'll find three buttons and a table:<br />
<img src="https://adminsforum.com/attachment.php?aid=424" loading="lazy"  alt="[Image: attachment.php?aid=424]" class="mycode_img" /><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Refresh Queue</span> reloads the list.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Quick Clear</span> deletes the queued messages. Use it only when you're sure you don't want them sent.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Queue Parameter Configuration</span> lets you adjust how the queue behaves. The defaults are fine for most people.<br />
</li>
<li>The <span style="font-weight: bold;" class="mycode_b">Delay Reason</span> column is the important one.<br />
</li>
</ul>
An empty list means everything was delivered.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What the delay reasons mean</span></span><br />
<span style="font-weight: bold;" class="mycode_b">"Connection timed out" (to port 25)</span><br />
Your server can't reach other mail servers. Almost always your VPS provider blocks port 25. See <a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">BillionMail not sending emails? How to check if port 25 is blocked</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"Host or domain name not found"</span><br />
The recipient's domain doesn't exist or has no MX record. Usually a typo like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>gmial.com</code></div></div>. Remove those addresses from your list. If it happens for <span style="font-style: italic;" class="mycode_i">every</span> domain, your server's DNS resolver is broken: test with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>dig +short MX gmail.com</code></div></div>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"421 ... try again later", "4.7.0 ... temporarily deferred", "rate limited"</span><br />
The receiving server (often Gmail, Outlook or Yahoo) is slowing you down. This happens with new IPs and sudden volume. It's a <span style="font-style: italic;" class="mycode_i">temporary</span> error; BillionMail retries automatically. Send smaller batches, keep <span style="font-weight: bold;" class="mycode_b">IP Warmup</span> on in your tasks, and grow volume over a few weeks.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"550 ... blocked", "listed at Spamhaus", "poor reputation"</span><br />
A permanent rejection. Your IP or domain is on a blacklist, or the receiver doesn't trust it. Check your IP on a blacklist checker, fix the cause, then follow the list's delisting steps. Retrying won't help until then.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"550 5.7.x ... SPF / DKIM / DMARC / unauthenticated"</span><br />
Your authentication fails. Check <span style="font-weight: bold;" class="mycode_b">Domain &gt; DNS Records</span> and our guide <a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">BillionMail DKIM fails even though the DNS record exists</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"550 user unknown", "mailbox unavailable", "mailbox full"</span><br />
The address doesn't exist or can't receive mail. Remove it from your list; repeated bounces hurt your reputation.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Working with the queue from the command line</span></span><br />
<span style="font-weight: bold;" class="mycode_b">First, find your BillionMail folder and containers.</span> Most commands below run from the BillionMail folder:<ul class="mycode_list"><li>aaPanel Docker install: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> (the last part is random)<br />
</li>
<li>Script install: usually <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/opt/BillionMail</code></div></div></li>
</ul>
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls -d /www/dk_project/dk_app/billionmail/billionmail_* /opt/BillionMail 2&gt;/dev/null
docker ps --format "{{.Names}}" | grep -i billionmail</code></div></div>The second command lists the containers, with names like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>billionmail_xxxx-postfix-billionmail-1</code></div></div>. Where a command says <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>POSTFIX</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>DOVECOT</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>WEBMAIL</code></div></div>, use your real container name.<br />
<br />
See the queue with full reasons:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postqueue -p | tail -40</code></div></div>Retry everything now (after you fixed the cause):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postqueue -f</code></div></div>Delete one message (the ID is the first column of <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postqueue -p</code></div></div>):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postsuper -d QUEUE_ID</code></div></div>Delete all <span style="font-style: italic;" class="mycode_i">deferred</span> messages at once (careful, there's no undo):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postsuper -d ALL deferred</code></div></div><br />
Read the mail log for more detail. BillionMail keeps it in its folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>tail -n 100 logs/postfix/mail.log
grep -i "status=deferred" logs/postfix/mail.log | tail -20</code></div></div><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How long does BillionMail keep retrying?</span></span><br />
BillionMail uses Postfix for sending. By default Postfix keeps retrying deferred mail for up to <span style="font-weight: bold;" class="mycode_b">5 days</span>, with growing gaps between tries, then returns it as undeliverable. So a message that sits in the queue for an hour isn't lost; it's waiting.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you press Quick Clear</span></span><br />
Clearing the queue hides the symptom, not the cause. Read the delay reason, fix the problem, then retry with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postqueue -f</code></div></div>. Only clear messages you really don't want delivered, for example a campaign sent to the wrong group.<br />
<br />
Stuck? Post the delay reason (hide the recipient address) in this section.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://www.postfix.org/postqueue.1.html" target="_blank" rel="noopener" class="mycode_url">Postfix: postqueue</a> · <a href="https://www.postfix.org/postsuper.1.html" target="_blank" rel="noopener" class="mycode_url">Postfix: postsuper</a> · <a href="https://www.postfix.org/postconf.5.html#maximal_queue_lifetime" target="_blank" rel="noopener" class="mycode_url">Postfix: maximal_queue_lifetime</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=424" target="_blank" title="">billionmail-send-queue.jpg</a> (Size: 70.31 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">BillionMail emails stuck in the send queue: read the delay reason and fix it</span></span><br />
<br />
When BillionMail can't deliver an email right away, it doesn't give up. It keeps the message in a <span style="font-weight: bold;" class="mycode_b">queue</span> and tries again later. A few messages there is normal. A queue that keeps growing means something is wrong, and the queue tells you exactly what, if you know how to read it.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Where to find the queue</span></span><br />
Open <span style="font-weight: bold;" class="mycode_b">Settings &gt; Send Queue</span>. At the top you'll find three buttons and a table:<br />
<img src="https://adminsforum.com/attachment.php?aid=424" loading="lazy"  alt="[Image: attachment.php?aid=424]" class="mycode_img" /><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">Refresh Queue</span> reloads the list.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Quick Clear</span> deletes the queued messages. Use it only when you're sure you don't want them sent.<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">Queue Parameter Configuration</span> lets you adjust how the queue behaves. The defaults are fine for most people.<br />
</li>
<li>The <span style="font-weight: bold;" class="mycode_b">Delay Reason</span> column is the important one.<br />
</li>
</ul>
An empty list means everything was delivered.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">What the delay reasons mean</span></span><br />
<span style="font-weight: bold;" class="mycode_b">"Connection timed out" (to port 25)</span><br />
Your server can't reach other mail servers. Almost always your VPS provider blocks port 25. See <a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">BillionMail not sending emails? How to check if port 25 is blocked</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"Host or domain name not found"</span><br />
The recipient's domain doesn't exist or has no MX record. Usually a typo like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>gmial.com</code></div></div>. Remove those addresses from your list. If it happens for <span style="font-style: italic;" class="mycode_i">every</span> domain, your server's DNS resolver is broken: test with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>dig +short MX gmail.com</code></div></div>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"421 ... try again later", "4.7.0 ... temporarily deferred", "rate limited"</span><br />
The receiving server (often Gmail, Outlook or Yahoo) is slowing you down. This happens with new IPs and sudden volume. It's a <span style="font-style: italic;" class="mycode_i">temporary</span> error; BillionMail retries automatically. Send smaller batches, keep <span style="font-weight: bold;" class="mycode_b">IP Warmup</span> on in your tasks, and grow volume over a few weeks.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"550 ... blocked", "listed at Spamhaus", "poor reputation"</span><br />
A permanent rejection. Your IP or domain is on a blacklist, or the receiver doesn't trust it. Check your IP on a blacklist checker, fix the cause, then follow the list's delisting steps. Retrying won't help until then.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"550 5.7.x ... SPF / DKIM / DMARC / unauthenticated"</span><br />
Your authentication fails. Check <span style="font-weight: bold;" class="mycode_b">Domain &gt; DNS Records</span> and our guide <a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">BillionMail DKIM fails even though the DNS record exists</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">"550 user unknown", "mailbox unavailable", "mailbox full"</span><br />
The address doesn't exist or can't receive mail. Remove it from your list; repeated bounces hurt your reputation.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Working with the queue from the command line</span></span><br />
<span style="font-weight: bold;" class="mycode_b">First, find your BillionMail folder and containers.</span> Most commands below run from the BillionMail folder:<ul class="mycode_list"><li>aaPanel Docker install: <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/www/dk_project/dk_app/billionmail/billionmail_XXXX</code></div></div> (the last part is random)<br />
</li>
<li>Script install: usually <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>/opt/BillionMail</code></div></div></li>
</ul>
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>ls -d /www/dk_project/dk_app/billionmail/billionmail_* /opt/BillionMail 2&gt;/dev/null
docker ps --format "{{.Names}}" | grep -i billionmail</code></div></div>The second command lists the containers, with names like <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>billionmail_xxxx-postfix-billionmail-1</code></div></div>. Where a command says <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>POSTFIX</code></div></div>, <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>DOVECOT</code></div></div> or <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>WEBMAIL</code></div></div>, use your real container name.<br />
<br />
See the queue with full reasons:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postqueue -p | tail -40</code></div></div>Retry everything now (after you fixed the cause):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postqueue -f</code></div></div>Delete one message (the ID is the first column of <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postqueue -p</code></div></div>):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postsuper -d QUEUE_ID</code></div></div>Delete all <span style="font-style: italic;" class="mycode_i">deferred</span> messages at once (careful, there's no undo):<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>docker exec POSTFIX postsuper -d ALL deferred</code></div></div><br />
Read the mail log for more detail. BillionMail keeps it in its folder:<br />
<div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>tail -n 100 logs/postfix/mail.log
grep -i "status=deferred" logs/postfix/mail.log | tail -20</code></div></div><br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">How long does BillionMail keep retrying?</span></span><br />
BillionMail uses Postfix for sending. By default Postfix keeps retrying deferred mail for up to <span style="font-weight: bold;" class="mycode_b">5 days</span>, with growing gaps between tries, then returns it as undeliverable. So a message that sits in the queue for an hour isn't lost; it's waiting.<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Before you press Quick Clear</span></span><br />
Clearing the queue hides the symptom, not the cause. Read the delay reason, fix the problem, then retry with <div class="codeblock"><div class="title af-code-title"><span>Code:</span><button type="button" class="af-code-copy" aria-label="Copy code" title="Copy code"><i class="far fa-copy" aria-hidden="true"></i><span>Copy</span></button><span class="af-code-status" role="status" aria-live="polite"></span></div><div class="body" dir="ltr"><code>postqueue -f</code></div></div>. Only clear messages you really don't want delivered, for example a campaign sent to the wrong group.<br />
<br />
Stuck? Post the delay reason (hide the recipient address) in this section.<br />
<br />
<span style="font-size: small;" class="mycode_size">Sources: <a href="https://www.postfix.org/postqueue.1.html" target="_blank" rel="noopener" class="mycode_url">Postfix: postqueue</a> · <a href="https://www.postfix.org/postsuper.1.html" target="_blank" rel="noopener" class="mycode_url">Postfix: postsuper</a> · <a href="https://www.postfix.org/postconf.5.html#maximal_queue_lifetime" target="_blank" rel="noopener" class="mycode_url">Postfix: maximal_queue_lifetime</a></span><br />
<br />
<br />
<span style="font-size: medium;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">More BillionMail troubleshooting</span></span><ul class="mycode_list"><li><a href="https://adminsforum.com/Thread-guide-billionmail-not-sending-emails-how-to-check-if-port-25-is-blocked" target="_blank" rel="noopener" class="mycode_url">Port 25 blocked: emails not sending</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-ssl-certificate-won-t-apply-fix-let-s-encrypt-errors" target="_blank" rel="noopener" class="mycode_url">SSL certificate won't apply</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-dkim-fails-even-though-the-dns-record-exists-how-to-fix" target="_blank" rel="noopener" class="mycode_url">DKIM fails although the record exists</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-can-t-open-the-billionmail-dashboard-login-url-ports-and-firewall-fixes" target="_blank" rel="noopener" class="mycode_url">Can't open the dashboard</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-webmail-roundcube-not-working-login-connection-and-sending-errors" target="_blank" rel="noopener" class="mycode_url">Webmail (Roundcube) problems</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-billionmail-emails-going-to-spam-even-though-spf-dkim-and-dmarc-pass" target="_blank" rel="noopener" class="mycode_url">Emails going to spam</a><br />
</li>
<li><a href="https://adminsforum.com/Thread-guide-how-to-update-billionmail-safely-and-roll-back-if-something-breaks" target="_blank" rel="noopener" class="mycode_url">Update safely and roll back</a><br />
</li>
</ul>
<br />
<span style="font-size: small;" class="mycode_size">Applies to BillionMail 4.9 installed through aaPanel or the install script, October 2026.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://adminsforum.com/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=424" target="_blank" title="">billionmail-send-queue.jpg</a> (Size: 70.31 KB / Downloads: 5)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>