Determine if you are classified as a bulk sender: Google permanently classifies any domain that sends 5,000 or more messages per day to Gmail addresses as a bulk sender; Yahoo uses similar volume thresholds.
Configure SPF so that your sending IP is authorised in a valid SPF TXT record for your envelope sender domain, and configure DKIM with a minimum key size of 1024 bits (2048 bits strongly recommended) for your From header domain.
Publish a DMARC record with at least p=none; the policy does not need to be enforced for baseline compliance, but DMARC alignment (From domain matching the SPF or DKIM domain) is required.
Implement RFC 8058 one-click List-Unsubscribe: add both a List-Unsubscribe header with a mailto: and an HTTPS URL and a List-Unsubscribe-Post: List-Unsubscribe=One-Click header; your unsubscribe endpoint must process the POST and suppress the address within two days.
Keep your spam complaint rate below 0.10% as reported in Google Postmaster Tools to stay in the recommended range; Google begins temporary rejections when the rate approaches 0.30% and may impose permanent blocks above that threshold.
Ensure your sending IP has a valid PTR record, your MX record resolves correctly, and all connections use TLS; non-compliant mail to Gmail faces temporary or permanent rejection at SMTP level.
Known gotchas
The bulk sender classification is permanent once triggered; even if volume drops below 5,000 per day, all requirements continue to apply indefinitely.
DMARC alignment requires that the domain in the visible From header matches the domain validated by SPF or DKIM; passing SPF on the envelope sender domain alone is not sufficient if the From header uses a different domain.
One-click unsubscribe applies to all commercial and promotional mail, not just newsletters; transactional messages (order confirmations, password resets) are generally exempt but any message with an unsubscribe link must honour the one-click mechanism.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp