An Azure communication platform for deploying applications across devices and platforms.
Your analysis is correct, and I'll be straight about which of your four questions have real answers and which only the product group can resolve.
- No, there is no setting for this. The only DKIM surface exposed to customers on the Email Communication Service or domain resource is publishing the two selector CNAMEs. The h= header set is fixed by the platform signer, and nothing in the resource, the SMTP relay options or the SDKs lets you extend it. So your conclusion stands: as of today, mail signed only by ACS cannot be RFC 8058 eligible, since the spec requires List-Unsubscribe and List-Unsubscribe-Post to be covered by a valid DKIM signature, and Gmail enforces one-click unsubscribe for senders above 5,000 messages/day. Yes, this should be a product request, and this thread is a good vehicle for it. Ask explicitly that a moderator log it with the ACS Email product group as a design change request, and file the same text through a support ticket labeled as a DCR rather than a break/fix. Your framing (RFC 8058 section 4 MUST plus the mailbox provider mandates) is exactly the evidence such requests need.
- Not publicly documented, and nobody outside the product team can enumerate the relay's rewrites or confirm whether the REST path signs differently from SMTP. What you can do is settle it empirically for your exact content: send an identical MIME message through smtp.azurecomm.net and through the REST SDK to a mailbox you control, then diff the raw delivered sources against your submission. That diff answers which headers are added or normalized and whether the body bytes are re-encoded, and it becomes hard evidence for the DCR.
- Two signatures are structurally legal, and receivers evaluate each DKIM-Signature independently, so a valid client-side signature with your own selector on the same domain covering those two headers would satisfy RFC 8058 on its own. The field report you cite (signature preserved but failing) means the pipeline mutates something the client signed. If you want to give it a fair test: use relaxed/relaxed canonicalization, sign the minimal set (From, Subject, List-Unsubscribe, List-Unsubscribe-Post) and deliberately exclude Date, Message-ID, To, Cc, MIME-Version, Content-Type and Content-Transfer-Encoding, since those are what relays typically touch. After that, the only remaining failure point is bh=. If your diff from question 2 shows the body is re-encoded, then no client-side signature can survive this relay and the DCR is the only path. If the body is byte-identical and it still fails, the diff will show which signed header got touched.
- The public docs describe opt-out management as a centralized managed unsubscribe list meant to help meet one-click requirements, but they don't document injecting RFC 8058 headers into SMTP submissions, or how it would interact with sender-supplied List-Unsubscribe headers. That's genuinely unanswered publicly, so fold it into the same product group escalation rather than trusting any guess here. Until then, keep emitting your own headers.
Bottom line, being honest with you: questions 2 and 4 have no public answer, question 1 is a confirmed product gap, and question 3 has a real but unproven workaround that your own diff test will confirm or kill. The moderator escalation plus a DCR ticket is the correct route, and you've already written the justification better than most requests I've seen.
References: https://learn.microsoft.com/en-us/azure/communication-services/concepts/email/email-optout-management https://datatracker.ietf.org/doc/html/rfc8058#section-4