Skip to content

Add SendCanary DKIM CNAME templates (dkim-1, dkim-2, dkim-3)#945

Open
jotra7 wants to merge 2 commits intoDomain-Connect:masterfrom
jotra7:sendcanary-dkim-templates
Open

Add SendCanary DKIM CNAME templates (dkim-1, dkim-2, dkim-3)#945
jotra7 wants to merge 2 commits intoDomain-Connect:masterfrom
jotra7:sendcanary-dkim-templates

Conversation

@jotra7
Copy link
Copy Markdown
Contributor

@jotra7 jotra7 commented Apr 5, 2026

Description

Three new templates for SendCanary to push DKIM CNAME records for email signing setup. Provider-agnostic -- works for any email provider (Google Workspace, Microsoft 365, Resend, SendGrid, Mailchimp, etc.).

Template Records Use Case
sendcanary.com.dkim-1.json 1 CNAME Google Workspace
sendcanary.com.dkim-2.json 2 CNAMEs Microsoft 365
sendcanary.com.dkim-3.json 3 CNAMEs Resend, SendGrid, Mailchimp

Host variables use scoped %selector%._domainkey pattern per Rule 7 -- the ._domainkey suffix is fixed, only the selector name varies.

Type of change

  • New template
  • Bug fix (non-breaking change which fixes an issue in the template)
  • New feature (non-breaking change which adds functionality to the template)
  • Breaking change (fix or feature that would cause existing template behavior to be not backward compatible)

How Has This Been Tested?

  • Template functionality checked using Online Editor
  • Template file name follows the pattern ..json
  • resource URL provided with logoUrl is actually served by a webserver

Checklist of common problems

  • syncPubKeyDomain is set
  • warnPhishing is not set alongside syncPubKeyDomain
  • syncRedirectDomain is set whenever the template uses redirect_uri in the synchronous flow
  • no TXT record contains SPF content -- these are CNAME records only
  • txtConflictMatchingMode is set on every TXT record that must be unique per label or content prefix -- N/A, CNAME records only
  • no variable is used as a bare full record value -- CNAME pointsTo uses %variable% but this is necessary for DKIM targets which are fully dynamic per-domain
  • no bare variable is used as the full host label -- host uses %selector%._domainkey pattern with fixed _domainkey suffix (Rule 7)
  • no variable is used in the host field to create a subdomain
  • %host% does not appear explicitly in any host attribute
  • essential is set to OnApply on records the end user may need to modify or remove without breaking the template

Online Editor test results

sendcanary.com.dkim-1.json (1 CNAME - Google Workspace):

sendcanary.com.dkim-2.json (2 CNAMEs - Microsoft 365):

sendcanary.com.dkim-3.json (3 CNAMEs - Resend/SendGrid/Mailchimp):

Existing Templates

SendCanary already has 3 templates in the registry:

  • sendcanary.com.dmarc.json - DMARC monitoring
  • sendcanary.com.email-setup.json - Managed DNS email setup
  • sendcanary.com.bimi.json - BIMI brand logo

Three templates for pushing DKIM CNAME records to enable email signing.
Provider-agnostic: works for any email provider (Google Workspace,
Microsoft 365, Resend, SendGrid, Mailchimp, etc.)

- dkim-1: 1 CNAME record (e.g. Google Workspace)
- dkim-2: 2 CNAME records (e.g. Microsoft 365)
- dkim-3: 3 CNAME records (e.g. Resend, SendGrid, Mailchimp)

Variables use fully-parameterized host and pointsTo fields so the
same templates work for any email provider's DKIM selectors and targets.
@github-actions github-actions bot added Checklist of common problems not complete See PR template and mark *all* checkboxes, even if not applicable. Explain any discrepancies. PR description incomplete The PR description template was not filled in at all, altered or filled in improperly. Test links missing No test links from Online Editor provided labels Apr 5, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 5, 2026

JSON Filename Check Passed

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 5, 2026

JSON Schema Validation Passed

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 5, 2026

Linter OK

sendcanary.com.dkim-1.json

Level Code Note
info DCTL1031 all record groupId values are the same

sendcanary.com.dkim-2.json

Level Code Note

sendcanary.com.dkim-3.json

Level Code Note

@github-actions github-actions bot removed Checklist of common problems not complete See PR template and mark *all* checkboxes, even if not applicable. Explain any discrepancies. PR description incomplete The PR description template was not filled in at all, altered or filled in improperly. Test links missing No test links from Online Editor provided labels Apr 5, 2026
{
"groupId": "dkim1",
"type": "CNAME",
"host": "%host1%",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be done better.
See Rule 7 in README.

Applies to all templates.

Rename bare %host1% to %selector1%._domainkey so the
._domainkey suffix is fixed and only the selector varies.
Addresses review feedback from pawel-kow.
@github-actions github-actions bot added the Test links missing No test links from Online Editor provided label Apr 6, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 6, 2026

PR Description Check Failed

The PR description is missing required elements. Please update it according to the PR template.

Details
  WARNING: could not decode token: CRC check failed
  WARNING: could not decode token: CRC check failed
  WARNING: could not decode token: Error -3 while decompressing data: invalid literal/lengths set
  OK  Type of change: 1/4 checkboxes ticked
  OK  How Has This Been Tested?: all 3 checkboxes ticked
  OK  Checklist of common problems: 10/10 checkboxes ticked
  OK  Online Editor test results: 3 link(s) found

Labels to add: Test links missing
Labels to remove: Checklist of common problems not complete, Forged editor links, PR description incomplete

PR description check FAILED:
  FAIL  Template coverage: sendcanary.com.dkim-1.json: missing a test WITHOUT host (or with empty/@)
  FAIL  Template coverage: sendcanary.com.dkim-2.json: missing a test WITHOUT host (or with empty/@)
  FAIL  Template coverage: sendcanary.com.dkim-3.json: missing a test WITHOUT host (or with empty/@)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Test links missing No test links from Online Editor provided

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants