Bulk email using Mailgun can't escape [BULK_EMAIL_DB_RETRY] error

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 per this forum post Unable to send newsletter with correct Mailgun API Keys - #6 by CoinMover .

I did notice that for some reason my Mailgun account was set to the US even though the domain (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

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 and mxb.eu.mailgun.org

The CNAME, host name: email.newsletter.postcolonialpolitics.org and value: 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

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

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 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.

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)