# Bulk email using Mailgun can't escape \[BULK\_EMAIL\_DB\_RETRY\] error

**URL:** <https://forum.ghost.org/t/bulk-email-using-mailgun-cant-escape-bulk-email-db-retry-error/60171>\
**Category:** Self-hosting\
**Created:** [September 17, 2025, 1:17pm UTC](https://forum.ghost.org/t/bulk-email-using-mailgun-cant-escape-bulk-email-db-retry-error/60171 "2025-09-17T13:17:17Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![Allison\_Madigan](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/allison_madigan/32/2540_2.png) [@Allison\_Madigan](https://forum.ghost.org/u/Allison_Madigan)\
**Post date:** [September 17, 2025, 11:21pm UTC](https://forum.ghost.org/t/bulk-email-using-mailgun-cant-escape-bulk-email-db-retry-error/60171/4 "2025-09-17T23:21:33Z")

</div>

7 hours later and I’m still getting the same error. What I’ve done:

I am using an API key generated from here [Mailgun by Sinch](https://app.mailgun.com/settings/api_security) per this forum post [Unable to send newsletter with correct Mailgun API Keys - #6 by CoinMover](https://forum.ghost.org/t/unable-to-send-newsletter-with-correct-mailgun-api-keys/34186/6) .

I did notice that for some reason my Mailgun account was set to the US even though the domain ([newsletter.postcolonialpolitics.org](http://newsletter.postcolonialpolitics.org)) has the EU flag next to it. I changed everything to the EU and created a new api key after. The only thing I couldn’t change was the sandbox domain, I can’t delete it or change the region. Could it be the issue? I suggested changing everything over the US to the AI I was troubleshooting with and it was very against it because all of the DNS records etc. are correct.

I added my IP address to the “whitelist” [Mailgun by Sinch](https://app.eu.mailgun.com/settings/ip-access-management)

Speaking of, the DKIM and SPF records are active and verified respectively.

Both MX Receiving records are verified and point to [mxa.eu.mailgun.org](http://mxa.eu.mailgun.org) and [mxb.eu.mailgun.org](http://mxb.eu.mailgun.org)

The CNAME, host name: [email.newsletter.postcolonialpolitics.org](http://email.newsletter.postcolonialpolitics.org) and value: [eu.mailgun.org](http://eu.mailgun.org) is verified.

The DMARC record is configured.

I set a message limit of 1000 in case that was an issue with Mailgun.

I’ve quadruple checked five times over the Bulk Email settings in the UI

 ![image](https://us1.discourse-cdn.com/flex015/uploads/ghost2/original/3X/8/c/8cac35d3ab7b9d9827f4ef04d77b6c46c4eec013.png)

I stopped ghost and shut down the droplet, tried again same error.

```bash
curl -s -u 'api' \
    https://api.eu.mailgun.net/v3/newsletter.postcolonialpolitics.org/messages \
    -F from='no-reply@newsletter.postcolonialpolitics.org' \
    -F to='me@gmail.com' \
    -F subject='Test' \
    -F text='Testing'

```

The above code work fine so it doesn’t seem to be an issue with the API key.

I haven’t deleted the entire ghost install and reinstalled it.

The error code is below. There’s no way to tell from it that it is definitely using the [api.eu.mailgun.net](http://api.eu.mailgun.net) but I guess it is.

Claude the AI wants me to try Ghosler with AWS SES. I’d rather not.

But what, what on earth is wrong? I only have 59 recipients. I’ve only sent 18 test emails this month.

```auto
EmailError: status code 420: Domain newsletter.postcolonialpolitics.org is not allowed to send: recipient limit exceeded, try again after Wed, 17 Sep 2025 22:41:22 UTC
    at BatchSendingService.retryDb (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:639:32)
    at MailgunEmailProvider.send (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/MailgunEmailProvider.js:153:30)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async SendingService.send (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/SendingService.js:128:16)
    at async response.retryDb (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:451:24)
    at async BatchSendingService.retryDb (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:618:30)
    at async BatchSendingService.retryDb (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:653:20)
    at async BatchSendingService.retryDb (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:653:20)
    at async BatchSendingService.retryDb (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:653:20)
    at async BatchSendingService.sendBatch (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:450:30)
    at async runNext (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:387:21)
    at async Promise.all (index 0)
    at async BatchSendingService.sendBatches (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:395:9)
    at async BatchSendingService.sendEmail (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:213:9)
    at async BatchSendingService.emailJob (/var/www/postcolonialpolitics/versions/6.0.9/core/server/services/email-service/BatchSendingService.js:158:13)
    at async /var/www/postcolonialpolitics/versions/6.0.9/node_modules/@tryghost/job-manager/lib/JobManager.js:260:25
    at async JobManager.worker (/var/www/postcolonialpolitics/versions/6.0.9/node_modules/@tryghost/job-manager/lib/JobManager.js:16:22)

```

---

_[View the full topic](https://forum.ghost.org/t/bulk-email-using-mailgun-cant-escape-bulk-email-db-retry-error/60171)._
