Uppercase MAILTO calendar addresses become invalid SMTP recipients

Issue Description

Calendar cancellations fail when an attendee URI uses uppercase or mixed-case MAILTO

Stalwart only strips lowercase mailto: before lowercasing the address. “MAILTO: example [at] example [dot] com” therefore becomes “mailto:example [at] example [dot] com” and is used as the SMTP recipient.

Fix and test ready:

Have a few other non breaking fixes as well for better alignment with standard RFCs that we’d like to upstream. Please let me know if this bug fix be acceptable.

GH: @prasannavl if you’re open to accepting PRs. Thanks!

Expected Behavior

Strip the mailto scheme case-insensitively and send to example [at] example [dot] com

Actual Behavior

Stalwart sends RCPT TO:mailto example [at] example [dot] com, which our SMTP relay rejects.

Reproduction Steps

  1. Create an event with ATTENDEE:MAILTO example [at] example [dot] com
  2. Cancel the event so Stalwart sends an iTIP cancellation.
  3. Check the outbound SMTP recipient.

Relevant Log Output

RCPT TO:<mailto example [at] example [dot] com>

Stalwart Version

v0.16.x

Installation Method

Docker

Database Backend

RocksDB

Blob Storage

RocksDB

Search Engine

Internal

Directory Backend

LDAP

Additional Context

Seen with Gmail app → Z-Push/ActiveSync → Stalwart.

It strips mailto: case-insensitively before lowercasing the address.

I have reviewed the documentation and FAQ and confirm that my issue is NOT addressed there.

on

I have searched this support forum (open and closed topics) and confirm this is not a duplicate.

on

I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.

on

Fixed in v0.16.14 (not yet released).