On Tue, Jan 10, 2023 at 05:10:41PM -0800, Dan Mahoney wrote:

> Construct an email like this:
> 
> To: support-st...@dayjob.org
> From: Support Staff <support-st...@dayjob.org>
> BCC: internal-al...@dayjob.org

So far, so good.  Presumably, once this leaves the MUA, the initial
envelope the MUA hands off to the MSA (or sendmail(1)) is:

    MAIL FROM:<support-st...@dayjob.org>
    RCPT TO:<support-st...@dayjob.org>
    RCPT TO:<internal-al...@dayjob.org>

> And then, in our delivery maps, we map:
> 
> internal-al...@dayjob.org to support-contacts-someno...@support.dayjob.org 

When you say 'delivery maps', I assume you mean some aliases(5)-like
files configured to be used by the local(8) delivery agent and that the
destination domain is (or at least that particular recipient address
ends up in the local(8)) delivery agent for processing.

> 1) We wanted the address that was bcc'd to be "secret" (and security
> through obscurity is bad, but any real security postfix could offer us
> (checking the sender?) could be easily spoofed as well.  The overhead
> of making an address internally-deliverable only is complicated: the
> RT machine *needs to accept mail*.

A non-public redistribution address is fine, you can also use a domain
that would be refused if it arrived at your door via SMTP from outside:

    inernal-alias@local.invalid

with the inbound MX smtpd(8) rejecting all ".invalid" recipients via
some recipient access(5) lookup.

> 2) This weirdness.
> 
> These original mailing lists (on the "support" system did not have the
> additional support-contacts-somenonce-owner: alias present.

Actually, the "owner-" token is a *PREFIX* not a *suffix*.  So that
would be:

    owner-support-contacts-somenonce: ...

> Whatever expanded that internal list, was leaking that somewhere into
> the headers.

It might only show up in "Delivered-To:", otherwise since it appears
in "Bcc:" from the MUA, it should not appear in "To:" or "Cc:" or
"Received: ... for <...>", unless the envelope "splits" with an
intermediate forwading hop before the alias expansion happens.

> Looking at the internal bounce I got back from Office365, I see that
> the message made it *somewhere* into the bowels of o365 before being
> rejected, but the headers don't have the usual "for" line.

Microsoft does not add these IIRC.

> Received: from mx.pao1.dayjob.org (149.20.64.53) by
>  BN8NAM12FT017.mail.protection.outlook.com (10.13.182.170) with Microsoft SMTP
>  Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
>  15.20.6002.11 via Frontend Transport; Tue, 10 Jan 2023 19:08:19 +0000

They accepted the message (violating the trace header syntax as always,
since "Microsoft SMTP" and "Frontend Transport" are not "atoms" as
required for the "with" and "via" clauses:

    https://www.rfc-editor.org/rfc/rfc5321#page-60

    Via            = CFWS "VIA" FWS Link
    With           = CFWS "WITH" FWS Protocol
    Link           = "TCP" / Addtl-Link
    Addtl-Link     = Atom
                   ; Additional standard names for links are
                   ; registered with the Internet Assigned Numbers
                   ; Authority (IANA).  "Via" is primarily of value
                   ; with non-Internet transports.  SMTP servers
                   ; SHOULD NOT use unregistered names.
   Protocol       = "ESMTP" / "SMTP" / Attdl-Protocol
   Attdl-Protocol = Atom
                  ; Additional standard names for protocols are
                  ; registered with the Internet Assigned Numbers
                  ; Authority (IANA) in the "mail parameters"
                  ; registry [9].  SMTP servers SHOULD NOT
                  ; use unregistered names.

The one thing that would be particularly useful here, is if "id
15.20.6002.11" is actually a unique id for the message envelope, that
you could match against your logs.  Then as an alternative to "VERP"
(mentioned below) if you *temporarily* configure the transport used to
hand off mail to Microsoft with a recipient limit of "1", each recipient
would get a separate message, and the logs will have a unique id for
the message accepted by Microsoft, which might match up with the trace
information in the bounce.

> Received: from support.dayjob.org (support.dayjob.org [IPv6:2001:4f8:1:f::43])
>   (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
>   key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest 
> SHA256)
>   (Client did not present a certificate)
>   by mx.pao1.dayjob.org (Postfix) with ESMTPS id 94D313AB02F;
>   Tue, 10 Jan 2023 19:08:17 +0000 (UTC)
> 
> I should note that we have several users using o365 and only got one
> bounce, and I'm not sure what deep inspection they're doing.  They are
> an opaque box.

Presumably, some sort of rule was put in place the restricts who can
send mail to some mailbox that is an ultimate recipient of the message.
To assign blame, you'd need to use VERP when submitting the message
so that each recipient gets a unique envelope address, allowing the
bounce to disclose the original recipient address (handed off to
Microsoft).

> I'm going to spin up both testing-with-owner-aliases and
> testing-without-owner-aliases that use the same mail flow, and see if
> I can narrow down the problem-set, but something's not right.

Seems at first blush to be a case of restricted posting rights to some
mailbox on Microsoft side.  Not much you can do about that.  If that
recipient does not want your message, does it matter?

> My actual question of "is there a mailing list engine that *just*
> handles a tiny subset of what a full-blown mailman does (no cgi, no
> membership management, some basic body tagging perhaps)" remains
> unanswered and I can't believe that such an animal doesn't exist.
> This is exactly the featureset we'd get with some kind of ESP, except
> in-house.

Your question is unrelated to your problem description.  Why do you
believe that mailman or similar would help?  It is only really useful
for automated archiving, s-u-b-scribe, u-n-s-u-b-scribe, and bounce
handling, which it doesn't seem you need.

If you're lucky, "owner-" aliases will help.  Otherwise, perhaps more
likely, you'll have to track down which particular recipient doesn't
want your mail.

-- 
    Viktor.

Reply via email to