Post

Blue Checkmark On Emails

Blue Checkmark On Emails

Blue Checkmark On Emails

Introduction

When you send an email from a personal domain and see a blue verification checkmark appear next to your name in Gmail, it signals to recipients that the message originates from an authenticated source. For homelab enthusiasts, self‑hosted mail servers, and DevOps engineers who run their own mail infrastructure, this visual cue is more than a cosmetic perk — it is a trust signal that can improve deliverability, reduce spam‑folder placement, and reinforce the credibility of your services.

The phenomenon is not limited to large enterprises; it is achievable for individual domains that meet a set of technical requirements defined by the industry‑wide DMARC, DKIM, SPF, and BIMI standards. The key question many readers ask is whether a blue checkmark requires a paid service or can be earned through open‑source configuration. The answer lies in a disciplined approach to email authentication, domain reputation management, and proper use of the Verified Mark (BIMI) specification. In this comprehensive guide you will learn: * The underlying mechanisms that cause Gmail to display a blue checkmark.

  • How to configure SPF, DKIM, and DMARC for a self‑hosted mail system.
  • The steps required to publish a BIMI logo that satisfies Google’s verification criteria.
  • Practical Docker‑based deployments for DMARC monitoring and mail routing.
  • Common pitfalls, troubleshooting techniques, and performance considerations.

By the end of this article you will have a clear roadmap for obtaining that coveted blue checkmark on your own domain, without relying on third‑party paid services. ## Understanding the Topic

What Is the Blue Checkmark?

The blue checkmark in Gmail is part of Google’s “Verified Sender” program. When a message passes a strict DMARC policy (typically p=reject or p=quarantine with a high pass rate) and includes a correctly referenced BIMI logo, Google may display a small blue checkmark next to the sender’s name. This visual indicator is distinct from the gray checkmarks used for internal Gmail conversations and serves as a public statement that the sender’s domain has been verified as legitimate.

Historical Context Google introduced the Verified Sender program in 2020, initially targeting high‑volume commercial senders. Over time, the criteria have been refined to include personal domains that demonstrate robust authentication. The underlying standards — SPF, DKIM, DMARC, and BIMI — have been part of the email ecosystem for over a decade, but widespread adoption only accelerated after major providers began enforcing stricter DMARC policies.

Core Components

ComponentPurposeTypical Implementation
SPFAuthorizes IP addresses allowed to send mail on behalf of the domain.TXT record: v=spf1 ip4:198.51.100.0/24 -all
DKIMAdds a cryptographic signature to each message, enabling receivers to verify integrity.Generated by signing service; public key published in DNS.
DMARCProvides policy enforcement and reporting based on SPF and DKIM results.TXT record: v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com
BIMIPublishes a verified logo that appears next to the sender name when DMARC passes.SVG file hosted at https://example.com/bimi/logo.svg with google-site-verification meta tag.

Pros and Cons

Pros * Improves recipient trust and can increase open rates.

  • Reduces likelihood of messages being flagged as spam.
  • Provides a clear, visual confirmation of domain legitimacy.

Cons

  • Requires meticulous DNS configuration and ongoing monitoring.
  • Misconfigurations can cause legitimate mail to be rejected.
  • The verification process is ultimately controlled by the receiving provider (e.g., Gmail) and may not be guaranteed.

The email authentication landscape is moving toward stricter enforcement. As of 2024, Gmail expects a DMARC policy of p=reject for at least 95 % of messages to consider a domain fully verified. Emerging standards such as “Authenticated Received Chain” (ARC) are being explored to preserve authentication across forwarding paths, which may affect future verification criteria.

Comparison With Alternatives

  • Third‑party email service providers (e.g., SendGrid, Mailgun) often handle authentication automatically for you, but they charge per‑email or subscription fees.
  • Self‑hosted solutions give you full control and can be integrated into a homelab environment, but they require manual DNS management and monitoring.
  • Open‑source DMARC monitoring tools (e.g., dmarcian, Postmark) provide reporting without cost, yet they do not directly grant the blue checkmark; they only help you meet the technical prerequisites.

Prerequisites

System Requirements

  • A publicly routable IPv4 address or domain‑based hostname for inbound mail reception.
  • Sufficient CPU and RAM (minimum 2 vCPU, 4 GB RAM) for running a mail server and associated containers. * An operating system capable of running Docker Engine (Ubuntu 22.04 LTS, Debian 12, or CentOS 9).

Required Software

SoftwareMinimum VersionPurpose
Docker Engine24.0Container runtime for mail services and monitoring tools.
Docker Compose2.20Orchestration of multi‑container setups.
OpenDKIM2.11DKIM signing service.
OpenDMARC1.3DMARC policy enforcement and reporting.
Postfix3.8Mail Transfer Agent (MTA).
Dovecot2.3IMAP/POP3 delivery agent.
Certbot2.9Automated TLS certificate issuance via Let’s Encrypt.

Network and Security Considerations

  • Port 25 (SMTP) must be open inbound for mail reception; many providers block outbound port 25, so consider using a relay service if needed. * TLS (port 587 for submission, port 465 for SMTPS) should be enforced to prevent plaintext transmission.
  • Firewall rules should restrict access to only necessary ports (25, 587, 993, 995).

User Permissions * The user running Docker commands must belong to the docker group or have sudo privileges.

  • DNS updates require administrative access to the domain registrar’s control panel.

Pre‑Installation Checklist

  1. Register a domain and configure authoritative nameservers.
  2. Obtain a TLS certificate for the domain (via Let’s Encrypt or a commercial CA).
  3. Set up DNS records for SPF, DKIM, DMARC, and BIMI.
  4. Verify that the domain resolves correctly (dig, nslookup).
  5. Ensure that port 25 inbound traffic is not blocked by your ISP or cloud provider.

Installation & Setup

Deploying Core Mail Components with Docker

Below is a sample docker-compose.yml that provisions Postfix, OpenDKIM, OpenDMARC, and a lightweight DMARC reporting UI.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
version: "3.8"
services:
  postfix:
    image: catatnight/postfix:latest    container_name: $CONTAINER_NAMES_postfix
    restart: unless-stopped
    environment:
      - myhostname=mail.example.com
      - mydomain=example.com
      - smtp_user=user
      - smtp_password=pass
    ports:
      - "25:25"
      - "587:587"
      - "465:465"
    volumes:
      - ./postfix:/etc/postfix
      - ./mail:/var/mail
    depends_on:
      - opendmarc
      - opendkim

  opendkim:
    image: dperson/opendkim:latest
    container_name: $CONTAINER_NAMES_opendkim
    restart: unless-stopped
    environment:
      - DKIM_SELECTOR=mail
      - DKIM_KEY_PATH=/keys/mail.private
    volumes:
      - ./dkim/keys:/keys
      - ./dkim/signing.conf:/etc/opendkim.conf

  opendmarc:
    image: dperson/opendmarc:latest
    container_name: $CONTAINER_NAMES_opendmarc
    restart: unless-stopped
    environment:
      - DMARC_REPORT_URI=https://dmarc.example.com/report
    volumes:
      - ./dmarc/reports:/var/reports
      - ./dmarc/opendmarc.conf:/etc/opendmarc.conf

  dmarc-ui:
    image: dmarcian/dmarc-report-viewer:latest
    container_name: $CONTAINER_NAMES_dmarc_ui
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./dmarc/reports:/app/data

Step‑by‑Step Installation

  1. Create a dedicated directory structure on the host to store configuration files and persistent data.

    1
    2
    
    mkdir -p ~/mailstack/{postfix,dkim,opendmarc,dmarc}
    cd ~/mailstack
    
  2. Generate DKIM keys using OpenDKIM utilities.

    1
    2
    
    opendkim-genkey -s mail -d example.com -b 2048 -D ./dkim/keys
    chown opendkim:opendkim ./dkim/keys/mail.private
    
  3. Configure OpenDKIM (example signing.conf). ```conf

    /home/user/mailstack/dkim/signing.conf

    Example:mail.example.com *:@example.com ```

  4. Set up OpenDMARC (example opendmarc.conf).

    1
    2
    3
    4
    5
    6
    
    # /home/user/mailstack/opendmarc/opendmarc.conf
    AuthServers = *
    Domain = example.com
    KeyFile = /home/user/mailstack/dkim/keys/mail.private
    Selector = mail
    Mode = s
    
  5. Deploy the compose stack.

    1
    
    docker compose up -d
    
  6. Verify container status.

    1
    2
    3
    
    docker ps --filter "name=$CONTAINER_NAMES_postfix" --format ": "
    docker ps --filter "name=$CONTAINER_NAMES_opendkim" --format ": "
    docker ps --filter "name=$CONTAINER_NAMES_opendmarc" --format ": "
    

    Expected output shows each container in Up state with no errors. 7. Publish DNS records.

    SPF Record (TXT):

    1
    
    v=spf1 mx a:example.com -all
    

    DKIM DNS Record (TXT):

    1
    
    mail._domainkey.example.com.  3600  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw...";
    

    DMARC Policy (TXT):

    1
    
    _dmarc.example.com.  3600  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=
    
This post is licensed under CC BY 4.0 by the author.