• We value your experience with Plesk during 2025
    Plesk strives to perform even better in 2026. To help us improve further, please answer a few questions about your experience with Plesk Obsidian 2025.
    Please take this short survey:

    https://survey.webpros.com/
  • On Plesk for Linux mod_status is disabled on upgrades to improve Apache security.
    This is a one-time operation that occurs during an upgrade. You can manually enable mod_status later if needed.

Plesk DMARC checker parses invalid TXT records that do not start with "v=DMARC1;" - deviates from RFC 7489

nethubonline

Regular Pleskian
Username:

TITLE

Plesk DMARC checker parses invalid TXT records that do not start with "v=DMARC1;" - deviates from RFC 7489

PRODUCT, VERSION, OPERATING SYSTEM, ARCHITECTURE

Plesk Obsidian Web Host Edition 18.0.75
AlmaLinux 9.7
Postfix + Dovecot, DMARC checking enabled (Tools & Settings → Mail → Enable DMARC to check incoming mail)

PROBLEM DESCRIPTION

When a domain has multiple TXT records at _dmarc.domain.com and one (or more) of them does not start with v=DMARC1;, Plesk's DMARC filter still tries to parse the invalid record(s). This leads to syntax errors even though a perfectly valid DMARC record also exists.

Example DNS records:

_dmarc.example.com. TXT "v=DMARC1; p=reject; sp=reject"
_dmarc.example.com. TXT "somerandomstring v=DMARC1"

Observed error in /var/log/maillog:
dmarc[...]: Wrong the essential DMARC policy parameters for 'example.com': 'Found DMARC record lacked a required p= entry'

Result: legitimate incoming (or even local) mail gets rejected because of the garbage record.

According to RFC 7489 §6.6.3 (Policy Discovery):
"Records that do not start with a "v=" tag that identifies the current version of DMARC are discarded."

reference: RFC 7489: Domain-based Message Authentication, Reporting, and Conformance (DMARC)

STEPS TO REPRODUCE

  1. Add two TXT records to a test domain's _dmarc subdomain:
    Valid: "v=DMARC1; p=reject; sp=reject"
    Invalid (no leading v=): "randomtext v=DMARC1"

  2. Enable DMARC checking in Plesk for another domain.
  3. Send a few emails from the test domain to the domain with DMARC checking enabled.
  4. Observe error in maillog from the invalid record.

ACTUAL RESULT

Plesk sometimes tries to parse the invalid record (the one without leading v=DMARC1).

Please log this as a bug in the Plesk DMARC integration and prioritize aligning the behavior with the RFC.

EXPECTED RESULT

  • Discard anything not starting with v=DMARC1.
  • Use the one valid record if it exists.
  • No policy applied only if zero or multiple valid records.

ANY ADDITIONAL INFORMATION

(DID NOT ANSWER QUESTION)

YOUR EXPECTATIONS FROM PLESK SERVICE TEAM

Confirm bug
 
Back
Top