GitHub Actions
Fail the build when your email stops passing
Sends your real template through the relay production uses, waits for the checks, and fails the job when authentication fails or the score drops under your threshold.
42 checks · No key · No account
Nobody watches DNS.
This job does, every night.
Add the workflow
Keep the relay login in repository secrets. Point it at the production relay with an account that can only send.
on: schedule: - cron: "17 6 * * *" push: paths: ["templates/**"] jobs: spam-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: serg-tanichev/email-spam-tester-action@v1 with: smtp-host: ${{ secrets.SMTP_HOST }} smtp-port: 587 smtp-username: ${{ secrets.SMTP_USERNAME }} smtp-password: ${{ secrets.SMTP_PASSWORD }} from: "Acme Billing <billing@example.com>" subject: Your invoice html-file: templates/invoice.html min-score: 80Where it lives
Questions
Does it need a key?
No key and no account.
Why not a staging relay?
It usually signs with another key and sends from another IP, so the checks would describe the wrong setup.
What if my code builds the email?
Use reserve-only: the action reserves an address, your code sends to it, and a second step checks the result.
What makes the job fail?
A failed SPF, DKIM or DMARC check, or a score under min-score.