Set Up Postfix DMARC Policy on Ubuntu VPS: Complete Guide

By Raman Kumar

Share:

Updated on May 20, 2026

Set Up Postfix DMARC Policy on Ubuntu VPS: Complete Guide

Understanding DMARC for Email Authentication

DMARC (Domain-based Message Authentication, Reporting and Conformance) builds on SPF and DKIM to protect your domain from email spoofing and phishing attacks. When you set up Postfix DMARC policy on your Ubuntu VPS, you create a framework that tells receiving email servers exactly how to handle messages that fail authentication checks.

Unlike SPF and DKIM alone, DMARC provides feedback through aggregate reports. You'll receive data about who's sending email on behalf of your domain, which messages pass or fail authentication, and what actions receiving servers take.

This visibility helps you fine-tune your email security and catch unauthorized usage early.

For hosting customers running mail servers on Hostperl VPS infrastructure, DMARC implementation requires careful planning. Start with a monitoring-only policy, then gradually increase enforcement as you verify legitimate email flows.

Prerequisites and System Requirements

Your Ubuntu VPS needs a working Postfix installation with valid SPF and DKIM records already configured. DMARC depends on both mechanisms to function properly.

Verify your current email authentication setup:

dig TXT yourdomain.com | grep spf
dig TXT default._domainkey.yourdomain.com

You should see SPF and DKIM records in the output. If these aren't configured yet, refer to our DKIM authentication tutorial first.

Check that your domain has proper MX records and that Postfix is handling mail correctly. Test basic email delivery before implementing policy changes.

Creating Your Initial DMARC DNS Record

DMARC policies live in DNS as TXT records using a specific subdomain format. Create your first DMARC record with a monitoring-only policy to start collecting data without affecting email delivery.

Add this TXT record to your DNS zone:

_dmarc.yourdomain.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; fo=1"

Breaking down these parameters:

  • v=DMARC1 - Protocol version identifier
  • p=none - Policy action (none, quarantine, or reject)
  • rua - Aggregate report destination email address
  • ruf - Forensic report destination email address
  • fo=1 - Forensic report options for any authentication failure

Set up the reporting mailbox on your server to receive DMARC reports. Create the dmarc user account and configure mail handling for the reporting address.

Configuring Postfix for DMARC Compliance

While Postfix doesn't enforce DMARC policies directly, proper configuration ensures your outbound mail aligns with DMARC requirements. Focus on domain alignment between your mail-from address and DKIM signature domain.

Edit your Postfix main configuration:

sudo nano /etc/postfix/main.cf

Ensure these settings support DMARC alignment:

mydomain = yourdomain.com
myhostname = mail.yourdomain.com
myorigin = $mydomain
smtpd_banner = $myhostname ESMTP $mail_name

The key requirement is consistent domain usage. Your DKIM signature should match either the From domain (strict alignment) or be a subdomain (relaxed alignment). Most implementations use relaxed alignment for flexibility.

Restart Postfix to apply configuration changes:

sudo systemctl restart postfix

Testing DMARC Policy Implementation

Verify your DMARC record deployment using DNS lookup tools:

dig TXT _dmarc.yourdomain.com

Online DMARC validation tools can check your record syntax and policy configuration. Popular options include MXToolbox and DMARC Analyzer validators.

Send test emails to Gmail, Outlook, and other major providers. Check the message source to see DMARC authentication results in the headers.

Look for lines like:

Authentication-Results: spf=pass dkim=pass dmarc=pass

Monitor your mail logs for any authentication-related issues:

sudo tail -f /var/log/mail.log | grep -i dmarc

Monitoring DMARC Reports and Data

DMARC aggregate reports arrive daily from major email providers. These XML files contain detailed authentication statistics for your domain. Set up automated processing to parse and analyze this data effectively.

Install a simple report parser:

sudo apt install python3-pip
pip3 install dmarc-report-parser

Create a processing script for incoming reports:

#!/bin/bash
# Process DMARC reports from /var/mail/dmarc

REPORT_DIR="/home/dmarc/reports"
mkdir -p $REPORT_DIR

for attachment in /var/mail/dmarc/attachments/*.xml.gz; do
    gunzip -c "$attachment" | dmarc-report-parser > "$REPORT_DIR/$(basename $attachment .xml.gz).json"
done

Review reports weekly to identify legitimate email sources and potential threats. Look for unexpected IP addresses sending mail for your domain, failed authentication patterns, and volume trends.

Gradually Increasing DMARC Enforcement

After monitoring for 2-4 weeks with p=none, gradually increase enforcement if reports show clean authentication. Move to quarantine policy first, then reject for maximum protection.

Update your DNS record to quarantine suspicious mail:

_dmarc.yourdomain.com. IN TXT "v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; fo=1"

The pct=10 parameter applies the policy to only 10% of failing messages initially. Increase this percentage gradually as you confirm legitimate email continues flowing normally.

Monitor delivery rates closely during policy changes. Some customers report temporary delivery issues to specific providers during policy transitions. Having baseline metrics helps identify problems quickly.

For production environments on managed VPS hosting, coordinate policy changes with your hosting provider's support team. They can help monitor server reputation and troubleshoot delivery issues.

Advanced DMARC Configuration Options

Fine-tune your DMARC policy with additional tags for specific requirements:

  • adkim=s - Strict DKIM alignment (default is relaxed)
  • aspf=s - Strict SPF alignment (default is relaxed)
  • sp=reject - Subdomain policy different from main domain
  • ri=86400 - Report interval in seconds (default 86400 = daily)

Example advanced policy:

_dmarc.yourdomain.com. IN TXT "v=DMARC1; p=reject; sp=quarantine; adkim=r; aspf=r; pct=100; rua=mailto:dmarc-agg@yourdomain.com; ruf=mailto:dmarc-forensic@yourdomain.com; fo=1; ri=86400"

Consider subdomain policies carefully. Some hosting customers need different policies for marketing subdomains versus transactional email subdomains.

The sp tag lets you handle these scenarios appropriately.

Troubleshooting Common DMARC Issues

Authentication failures often stem from domain alignment problems. Check that your From domain matches your DKIM signature domain or is properly aligned according to your policy.

Debug alignment issues by examining email headers:

postconf -n | grep mydomain
postconf -n | grep myorigin

Verify DKIM signatures match your domain configuration. Our Postfix monitoring tutorial covers header analysis techniques.

Third-party email services require special attention. If you use external providers for newsletters or transactional email, ensure their DKIM signatures align with your DMARC policy or add them to your SPF record.

Report processing failures usually indicate XML parsing issues or mailbox configuration problems. Check that your dmarc mailbox accepts large attachments and has sufficient storage space.

Ready to implement professional email security on your VPS? Hostperl VPS hosting provides the reliable infrastructure and support you need for production mail server deployments. Our team assists with DMARC implementation, DNS configuration, and ongoing email deliverability optimization.

Frequently Asked Questions

How long should I monitor with p=none before enforcing DMARC?

Monitor for at least 2-4 weeks to establish baseline authentication patterns. High-volume domains may need longer observation periods to identify all legitimate email sources.

Can DMARC break email forwarding?

Yes, traditional email forwarding can cause DMARC failures due to SPF alignment issues. Consider SRS (Sender Rewriting Scheme) or alternative forwarding methods for forwarded addresses.

What percentage should I start with for quarantine policy?

Start with pct=10 or pct=25 for initial quarantine deployment. Gradually increase to pct=100 as you confirm legitimate email continues delivering successfully.

How do I handle multiple email service providers?

Include all legitimate senders in your SPF record and ensure each provider's DKIM signatures align with your domain. Use relaxed alignment (default) to accommodate subdomains.

Should subdomains have separate DMARC policies?

Use the sp tag to set different subdomain policies when needed. Marketing subdomains might require quarantine while transactional subdomains use reject policies.