Return-Path: <neilj@fastmailteam.com>
X-Original-To: jmap@mail2.ietf.org
Delivered-To: jmap@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1])
	by mail2.ietf.org (Postfix) with ESMTP id 5BFFA2A83ACD
	for <jmap@mail2.ietf.org>; Mon, 19 May 2025 21:10:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.798
X-Spam-Level: 
X-Spam-Status: No, score=-2.798 tagged_above=-999 required=5
	tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
	DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001,
	RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,
	RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001]
	autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key)
	header.d=fastmailteam.com header.b="KCs/HmgY";
	dkim=pass (2048-bit key) header.d=messagingengine.com
	header.b="hHN0lEEL"
Received: from mail2.ietf.org ([166.84.6.31])
	by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id HapnM_EouLRs for <jmap@mail2.ietf.org>;
	Mon, 19 May 2025 21:10:24 -0700 (PDT)
Received: from fout-b8-smtp.messagingengine.com
 (fout-b8-smtp.messagingengine.com [202.12.124.151])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256)
	(No client certificate requested)
	by mail2.ietf.org (Postfix) with ESMTPS id 520C22A83AC6
	for <jmap@ietf.org>; Mon, 19 May 2025 21:10:24 -0700 (PDT)
Received: from phl-compute-02.internal (phl-compute-02.phl.internal
 [10.202.2.42])
	by mailfout.stl.internal (Postfix) with ESMTP id B399B114017E
	for <jmap@ietf.org>; Tue, 20 May 2025 00:10:23 -0400 (EDT)
Received: from phl-imap-15 ([10.202.2.104])
  by phl-compute-02.internal (MEProxy); Tue, 20 May 2025 00:10:23 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	fastmailteam.com; h=cc:content-type:content-type:date:date:from
	:from:in-reply-to:in-reply-to:message-id:mime-version:references
	:reply-to:subject:subject:to:to; s=fm1; t=1747714223; x=
	1747800623; bh=5l+OYmgxss1D9lf+ITT8gSivkT/ZZPwbgKCyjyGjJYA=; b=K
	Cs/HmgYprSot9QxrdqRvAH6mavvKNhpNJCMIvykApSnd8SOBnXnubcI3QHz01Na9
	oEl3DcwYUB9SY8QEctr4K275KN9iHIocWky/Uib9XVtlqO/sVUs2PdySc+kgwXx8
	RroEOeWbhUdr/z5kvYTzuLeyiE9uDTRkNJ20OZxAn+teqaysGPF8vLEjc2AVveOD
	WiTplUTeWAziOa/om8PYGtoi75D9kD7qBy5aecD0XGxIW67+ayx/7Lw54apjsRB0
	+RnhTMWHVh/ZKOvXosiYp9dDM7fqBo8DGLoyFJeJ0kc+Gov80c5XydgS0PmIYdWW
	KTBmm189K+ErydIh84lmg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=
	1747714223; x=1747800623; bh=5l+OYmgxss1D9lf+ITT8gSivkT/ZZPwbgKC
	yjyGjJYA=; b=hHN0lEELdrhRsbI156l+vKHL5za3gaDmtW8YKIFSIOu3rN1bUcJ
	E79+LlnJUWrIU1lV1Yj2PwV+q5fmClfqVnlM6EluWvrO1bZy3BT3v6dcOi7KVF0w
	REI/tIwknq2Ii8pj2rVhlAGiq6f2xNUzeuS71F8ubmLDZQpRXcnX59Cyx/LfhP4o
	1ek5a7myFmLFdXvMD4oBjCL52r3cPOXN8ZYMZBfREjLaeLvMtWtHtFDCVUGB4+1d
	IvDkdX9tQb01MxMcp7HqfcTJIPqqK6bZsWVpTj/UiIPck/4MhrXJbbkjN2vkisDe
	utJzOSoVsnzG8C1PrZGUtAFnSGIUDi9+MFw==
X-ME-Sender: <xms:rwAsaH-f5aHiuorb0xbpcMe_8fQTcXjIZpeR_0QegokwBwnv05dgdQ>
    <xme:rwAsaDsfG68LIy5nDs8qIOBTZjjuoDhmTGDISjWCaOvud82hB_icmtbMRtURJDVVQ
    zt8cGCb1be3XA>
X-ME-Proxy-Cause: 
 gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdefvdefvdeiucetufdoteggodetrf
    dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv
    pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih
    gvnhhtshculddquddttddmnecujfgurhepofggfffhvffkjghfufgtsegrtderreertddt
    necuhfhrohhmpedfpfgvihhlucflvghnkhhinhhsfdcuoehnvghilhhjsehfrghsthhmrg
    hilhhtvggrmhdrtghomheqnecuggftrfgrthhtvghrnhepvdetiedvvefgieelveeggeeg
    geeugfdvuddvudehtddvkefhteefudetffdutedunecuvehluhhsthgvrhfuihiivgeptd
    enucfrrghrrghmpehmrghilhhfrhhomhepnhgvihhljhesfhgrshhtmhgrihhlthgvrghm
    rdgtohhmpdhnsggprhgtphhtthhopedupdhmohguvgepshhmthhpohhuthdprhgtphhtth
    hopehjmhgrphesihgvthhfrdhorhhg
X-ME-Proxy: <xmx:rwAsaFCmX9iPiv7uHTt6fP3Gg7UAD8CMsEd6VfM_feCRnxs-JtR0dA>
    <xmx:rwAsaDccyQbZ4QE_eZw9ubJOrSRigi4V4vbBhxgCfLD9ljcvyvDQrg>
    <xmx:rwAsaMMx8oOjQdVWqbx8RLiBPmeTqceBA5e2RiI_iK52v-tCjjyzow>
    <xmx:rwAsaFn-fkFwkzhudVxnM-i9q5wvtS74JLsUdHFjGHgNnL1n640bLQ>
    <xmx:rwAsaIDihXca2kRKmSUtTO1RypneSdthY6NPzCH1CjEpnL6f8k0YsDBu>
Feedback-ID: ibc614277:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
	id 50F0678006C; Tue, 20 May 2025 00:10:23 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
MIME-Version: 1.0
X-ThreadId: T6e63edbaabfe256a
Date: Tue, 20 May 2025 14:10:02 +1000
From: "Neil Jenkins" <neilj@fastmailteam.com>
To: "IETF JMAP Mailing List" <jmap@ietf.org>
Message-Id: <24db4c6a-4f21-41d5-88f4-4112207d2b1a@localhost:3000>
In-Reply-To: 
 <ZR0P278MB1026513E7F5A05A6129A3150DC9CA@ZR0P278MB1026.CHEP278.PROD.OUTLOOK.COM>
References: 
 <ZR0P278MB1026513E7F5A05A6129A3150DC9CA@ZR0P278MB1026.CHEP278.PROD.OUTLOOK.COM>
Content-Type: multipart/alternative;
 boundary=38e9b66b6d8b4a4899e03e00e6c97960
Message-ID-Hash: LHSFFBO6KWXT3GCZDHV62PFI6J5Z2PDH
X-Message-ID-Hash: LHSFFBO6KWXT3GCZDHV62PFI6J5Z2PDH
X-MailFrom: neilj@fastmailteam.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency;
 loop; banned-address; member-moderation; header-match-jmap.ietf.org-0;
 nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size;
 news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: =?utf-8?q?=5BJmap=5D_Re=3A_GroupedAddresses_suggests_grouping_consecutive_ad?=
 =?utf-8?q?dresses_into_own_group=2C_is_this_correct=3F?=
List-Id: JSON Message Access Protocol <jmap.ietf.org>
Archived-At: 
 <https://mailarchive.ietf.org/arch/msg/jmap/InVkjJTGM1zC7CHnLlZixq8c28I>
List-Archive: <https://mailarchive.ietf.org/arch/browse/jmap>
List-Help: <mailto:jmap-request@ietf.org?subject=help>
List-Owner: <mailto:jmap-owner@ietf.org>
List-Post: <mailto:jmap@ietf.org>
List-Subscribe: <mailto:jmap-join@ietf.org>
List-Unsubscribe: <mailto:jmap-leave@ietf.org>

--38e9b66b6d8b4a4899e03e00e6c97960
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

On Tue, 20 May 2025, at 06:19, Craven wrote:
> RFC8621 holds the following statement:
> "Consecutive "mailbox" values that are not part of a group are still collected under an EmailAddressGroup object to provide a uniform type."
> 
> IIUC this means that after parsing both "To: <x@y.com>, group: <x@y.com>;, <x@y.com>" and "To: <x@y.com>, <x@y.com>, group: <x@y.com>;" this will result in two parse trees that are not simply a reordering of each other.

That's right. Just to confirm we're on the same page:
To: <x@y.com>, group: <x@y.com>; <x@y.com>
would be parsed as:
[
 { "name": null, "addresses": [
   { "name": null "email": "x@y.com" }
 ]},
 { "name": "group", "addresses": [
   { "name": null "email": "x@y.com" }
 ]},
 { "name": null, "addresses": [
   { "name": null "email": "x@y.com" }
 ]}
]
while 
To: <x@y.com>, <x@y.com>, group: <x@y.com>;
would be parsed as:
[
 { "name": null, "addresses": [
   { "name": null "email": "x@y.com" },
   { "name": null "email": "x@y.com" }
 ]},
 { "name": "group", "addresses": [
   { "name": null "email": "x@y.com" }
 ]}
]

> This is surprising because the text makes reference to RFC5322 for which the parse trees as addr-list would be equivalent up to reordering. 

Again, just to make sure we're on the same page, the relevant bits of ABNF:
address-list    =   (address *("," address)) / obs-addr-list
address         =   mailbox / group

So you would end up with `[mailbox, group, mailbox]`  for the first example, and `[group, mailbox, mailbox]`  for the second.

> Interpreting the addr-list as suggested by RFC8621 goes from being equivalent up to ordering to non-equivalent under reordering. Is this intended?

Yes. I mean, as stated in RFC8621, it deliberately wraps the `mailbox`  entries in the same group structure so you have a uniform type, but you can see from the `null` group name that these were originally just bare `mailbox`es if you want to decompose again for some reason.

Cheers,
Neil.
--38e9b66b6d8b4a4899e03e00e6c97960
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html><html><head><title></title></head><body><div>On Tue, 20 M=
ay 2025, at 06:19, Craven wrote:</div><blockquote type=3D"cite" id=3D"qt=
" style=3D""><div>RFC8621 holds the following statement:</div><div>"Cons=
ecutive "mailbox" values that are not part of a group are still collecte=
d under an EmailAddressGroup object to provide a uniform type."</div><di=
v><br></div><div>IIUC this means that after parsing both "To: &lt;<a hre=
f=3D"mailto:x@y.com">x@y.com</a>&gt;, group: &lt;<a href=3D"mailto:x@y.c=
om">x@y.com</a>&gt;;, &lt;<a href=3D"mailto:x@y.com">x@y.com</a>&gt;" an=
d "To: &lt;<a href=3D"mailto:x@y.com">x@y.com</a>&gt;, &lt;<a href=3D"ma=
ilto:x@y.com">x@y.com</a>&gt;, group: &lt;<a href=3D"mailto:x@y.com">x@y=
.com</a>&gt;;" this will result in two parse trees that are not simply a=
 reordering of each other.</div></blockquote><div><br></div><div>That's =
right. Just to confirm we're on the same page:<br></div><pre style=3D"bo=
rder-top-width:1px;border-right-width:1px;border-bottom-width:1px;border=
-left-width:1px;border-top-style:solid;border-right-style:solid;border-b=
ottom-style:solid;border-left-style:solid;border-top-color:rgb(204, 204,=
 204);border-right-color:rgb(204, 204, 204);border-bottom-color:rgb(204,=
 204, 204);border-left-color:rgb(204, 204, 204);border-image-source:init=
ial;border-image-slice:initial;border-image-width:initial;border-image-o=
utset:initial;border-image-repeat:initial;border-top-left-radius:3px;bor=
der-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-le=
ft-radius:3px;background-image:initial;background-position-x:initial;bac=
kground-position-y:initial;background-size:initial;background-repeat:ini=
tial;background-attachment:initial;background-origin:initial;background-=
clip:initial;background-color:rgb(246, 246, 246);font-family:menlo, cons=
olas, monospace;font-size:90%;margin-top:7px;margin-right:0px;margin-bot=
tom:7px;margin-left:0px;padding-top:7px;padding-right:10px;padding-botto=
m:7px;padding-left:10px;white-space-collapse:preserve;text-wrap-mode:wra=
p;overflow-wrap:break-word;">To: &lt;<a href=3D"mailto:x@y.com">x@y.com<=
/a>&gt;, group: &lt;<a href=3D"mailto:x@y.com">x@y.com</a>&gt;; &lt;<a h=
ref=3D"mailto:x@y.com">x@y.com</a>&gt;</pre><div>would be parsed as:</di=
v><pre style=3D"border-top-width:1px;border-right-width:1px;border-botto=
m-width:1px;border-left-width:1px;border-top-style:solid;border-right-st=
yle:solid;border-bottom-style:solid;border-left-style:solid;border-top-c=
olor:rgb(204, 204, 204);border-right-color:rgb(204, 204, 204);border-bot=
tom-color:rgb(204, 204, 204);border-left-color:rgb(204, 204, 204);border=
-image-source:initial;border-image-slice:initial;border-image-width:init=
ial;border-image-outset:initial;border-image-repeat:initial;border-top-l=
eft-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3p=
x;border-bottom-left-radius:3px;background-image:initial;background-posi=
tion-x:initial;background-position-y:initial;background-size:initial;bac=
kground-repeat:initial;background-attachment:initial;background-origin:i=
nitial;background-clip:initial;background-color:rgb(246, 246, 246);font-=
family:menlo, consolas, monospace;font-size:90%;margin-top:7px;margin-ri=
ght:0px;margin-bottom:7px;margin-left:0px;padding-top:7px;padding-right:=
10px;padding-bottom:7px;padding-left:10px;white-space-collapse:preserve;=
text-wrap-mode:wrap;overflow-wrap:break-word;">[=0A { "name": null, "add=
resses": [=0A   { "name": null "email": "x@y.com" }=0A ]},=0A { "name": =
"group", "addresses": [=0A   { "name": null "email": "x@y.com" }=0A ]},=0A=
 { "name": null, "addresses": [=0A   { "name": null "email": "x@y.com" }=
=0A ]}=0A]<br></pre><div>while&nbsp;</div><pre style=3D"border-top-width=
:1px;border-right-width:1px;border-bottom-width:1px;border-left-width:1p=
x;border-top-style:solid;border-right-style:solid;border-bottom-style:so=
lid;border-left-style:solid;border-top-color:rgb(204, 204, 204);border-r=
ight-color:rgb(204, 204, 204);border-bottom-color:rgb(204, 204, 204);bor=
der-left-color:rgb(204, 204, 204);border-image-source:initial;border-ima=
ge-slice:initial;border-image-width:initial;border-image-outset:initial;=
border-image-repeat:initial;border-top-left-radius:3px;border-top-right-=
radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;=
background-image:initial;background-position-x:initial;background-positi=
on-y:initial;background-size:initial;background-repeat:initial;backgroun=
d-attachment:initial;background-origin:initial;background-clip:initial;b=
ackground-color:rgb(246, 246, 246);font-family:menlo, consolas, monospac=
e;font-size:90%;margin-top:7px;margin-right:0px;margin-bottom:7px;margin=
-left:0px;padding-top:7px;padding-right:10px;padding-bottom:7px;padding-=
left:10px;white-space-collapse:preserve;text-wrap-mode:wrap;overflow-wra=
p:break-word;">To: &lt;<a href=3D"mailto:x@y.com">x@y.com</a>&gt;, &lt;<=
a href=3D"mailto:x@y.com">x@y.com</a>&gt;, group: &lt;<a href=3D"mailto:=
x@y.com">x@y.com</a>&gt;;</pre><div>would be parsed as:</div><pre style=3D=
"border-top-width:1px;border-right-width:1px;border-bottom-width:1px;bor=
der-left-width:1px;border-top-style:solid;border-right-style:solid;borde=
r-bottom-style:solid;border-left-style:solid;border-top-color:rgb(204, 2=
04, 204);border-right-color:rgb(204, 204, 204);border-bottom-color:rgb(2=
04, 204, 204);border-left-color:rgb(204, 204, 204);border-image-source:i=
nitial;border-image-slice:initial;border-image-width:initial;border-imag=
e-outset:initial;border-image-repeat:initial;border-top-left-radius:3px;=
border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom=
-left-radius:3px;background-image:initial;background-position-x:initial;=
background-position-y:initial;background-size:initial;background-repeat:=
initial;background-attachment:initial;background-origin:initial;backgrou=
nd-clip:initial;background-color:rgb(246, 246, 246);font-family:menlo, c=
onsolas, monospace;font-size:90%;margin-top:7px;margin-right:0px;margin-=
bottom:7px;margin-left:0px;padding-top:7px;padding-right:10px;padding-bo=
ttom:7px;padding-left:10px;white-space-collapse:preserve;text-wrap-mode:=
wrap;overflow-wrap:break-word;">[=0A { "name": null, "addresses": [=0A  =
 { "name": null "email": "x@y.com" },=0A   { "name": null "email": "x@y.=
com" }=0A ]},=0A { "name": "group", "addresses": [=0A   { "name": null "=
email": "x@y.com" }=0A ]}=0A]<br></pre><div><br></div><blockquote type=3D=
"cite" id=3D"qt" style=3D""><div> This is surprising because the text ma=
kes reference to RFC5322 for which the parse trees as addr-list would be=
 equivalent up to reordering. </div></blockquote><div><br></div><div>Aga=
in, just to make sure we're on the same page, the relevant bits of ABNF:=
</div><pre style=3D"border-top-width:1px;border-right-width:1px;border-b=
ottom-width:1px;border-left-width:1px;border-top-style:solid;border-righ=
t-style:solid;border-bottom-style:solid;border-left-style:solid;border-t=
op-color:rgb(204, 204, 204);border-right-color:rgb(204, 204, 204);border=
-bottom-color:rgb(204, 204, 204);border-left-color:rgb(204, 204, 204);bo=
rder-image-source:initial;border-image-slice:initial;border-image-width:=
initial;border-image-outset:initial;border-image-repeat:initial;border-t=
op-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radiu=
s:3px;border-bottom-left-radius:3px;background-image:initial;background-=
position-x:initial;background-position-y:initial;background-size:initial=
;background-repeat:initial;background-attachment:initial;background-orig=
in:initial;background-clip:initial;background-color:rgb(246, 246, 246);f=
ont-family:menlo, consolas, monospace;font-size:90%;margin-top:7px;margi=
n-right:0px;margin-bottom:7px;margin-left:0px;padding-top:7px;padding-ri=
ght:10px;padding-bottom:7px;padding-left:10px;white-space-collapse:prese=
rve;text-wrap-mode:wrap;overflow-wrap:break-word;">address-list    =3D  =
 (address *("," address)) / obs-addr-list=0Aaddress         =3D   mailbo=
x / group</pre><div><br></div><div>So you would end up with <code style=3D=
"border-top-width:1px;border-right-width:1px;border-bottom-width:1px;bor=
der-left-width:1px;border-top-style:solid;border-right-style:solid;borde=
r-bottom-style:solid;border-left-style:solid;border-top-color:rgb(204, 2=
04, 204);border-right-color:rgb(204, 204, 204);border-bottom-color:rgb(2=
04, 204, 204);border-left-color:rgb(204, 204, 204);border-image-source:i=
nitial;border-image-slice:initial;border-image-width:initial;border-imag=
e-outset:initial;border-image-repeat:initial;border-top-left-radius:3px;=
border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom=
-left-radius:3px;background-image:initial;background-position-x:initial;=
background-position-y:initial;background-size:initial;background-repeat:=
initial;background-attachment:initial;background-origin:initial;backgrou=
nd-clip:initial;background-color:rgb(246, 246, 246);font-family:menlo, c=
onsolas, monospace;font-size:90%;padding-top:1px;padding-right:3px;paddi=
ng-bottom:1px;padding-left:3px;">[mailbox, group, mailbox]</code>&nbsp; =
for the first example, and <code style=3D"border-top-width:1px;border-ri=
ght-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-s=
tyle:solid;border-right-style:solid;border-bottom-style:solid;border-lef=
t-style:solid;border-top-color:rgb(204, 204, 204);border-right-color:rgb=
(204, 204, 204);border-bottom-color:rgb(204, 204, 204);border-left-color=
:rgb(204, 204, 204);border-image-source:initial;border-image-slice:initi=
al;border-image-width:initial;border-image-outset:initial;border-image-r=
epeat:initial;border-top-left-radius:3px;border-top-right-radius:3px;bor=
der-bottom-right-radius:3px;border-bottom-left-radius:3px;background-ima=
ge:initial;background-position-x:initial;background-position-y:initial;b=
ackground-size:initial;background-repeat:initial;background-attachment:i=
nitial;background-origin:initial;background-clip:initial;background-colo=
r:rgb(246, 246, 246);font-family:menlo, consolas, monospace;font-size:90=
%;padding-top:1px;padding-right:3px;padding-bottom:1px;padding-left:3px;=
">[group, mailbox, mailbox]</code>&nbsp; for the second.</div><div><br><=
/div><blockquote type=3D"cite" id=3D"qt" style=3D""><div>Interpreting th=
e addr-list as suggested by RFC8621 goes from being equivalent up to ord=
ering to non-equivalent under reordering. Is this intended?</div></block=
quote><div><br></div><div>Yes. I mean, as stated in RFC8621, it delibera=
tely wraps the <code style=3D"border-top-width:1px;border-right-width:1p=
x;border-bottom-width:1px;border-left-width:1px;border-top-style:solid;b=
order-right-style:solid;border-bottom-style:solid;border-left-style:soli=
d;border-top-color:rgb(204, 204, 204);border-right-color:rgb(204, 204, 2=
04);border-bottom-color:rgb(204, 204, 204);border-left-color:rgb(204, 20=
4, 204);border-image-source:initial;border-image-slice:initial;border-im=
age-width:initial;border-image-outset:initial;border-image-repeat:initia=
l;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-r=
ight-radius:3px;border-bottom-left-radius:3px;background-image:initial;b=
ackground-position-x:initial;background-position-y:initial;background-si=
ze:initial;background-repeat:initial;background-attachment:initial;backg=
round-origin:initial;background-clip:initial;background-color:rgb(246, 2=
46, 246);font-family:menlo, consolas, monospace;font-size:90%;padding-to=
p:1px;padding-right:3px;padding-bottom:1px;padding-left:3px;">mailbox</c=
ode>&nbsp; entries in the same group structure so you have a uniform typ=
e, but you can see from the <code style=3D"border-top-width:1px;border-r=
ight-width:1px;border-bottom-width:1px;border-left-width:1px;border-top-=
style:solid;border-right-style:solid;border-bottom-style:solid;border-le=
ft-style:solid;border-top-color:rgb(204, 204, 204);border-right-color:rg=
b(204, 204, 204);border-bottom-color:rgb(204, 204, 204);border-left-colo=
r:rgb(204, 204, 204);border-image-source:initial;border-image-slice:init=
ial;border-image-width:initial;border-image-outset:initial;border-image-=
repeat:initial;border-top-left-radius:3px;border-top-right-radius:3px;bo=
rder-bottom-right-radius:3px;border-bottom-left-radius:3px;background-im=
age:initial;background-position-x:initial;background-position-y:initial;=
background-size:initial;background-repeat:initial;background-attachment:=
initial;background-origin:initial;background-clip:initial;background-col=
or:rgb(246, 246, 246);font-family:menlo, consolas, monospace;font-size:9=
0%;padding-top:1px;padding-right:3px;padding-bottom:1px;padding-left:3px=
;">null</code> group name that these were originally just bare <code sty=
le=3D"border-top-width:1px;border-right-width:1px;border-bottom-width:1p=
x;border-left-width:1px;border-top-style:solid;border-right-style:solid;=
border-bottom-style:solid;border-left-style:solid;border-top-color:rgb(2=
04, 204, 204);border-right-color:rgb(204, 204, 204);border-bottom-color:=
rgb(204, 204, 204);border-left-color:rgb(204, 204, 204);border-image-sou=
rce:initial;border-image-slice:initial;border-image-width:initial;border=
-image-outset:initial;border-image-repeat:initial;border-top-left-radius=
:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-b=
ottom-left-radius:3px;background-image:initial;background-position-x:ini=
tial;background-position-y:initial;background-size:initial;background-re=
peat:initial;background-attachment:initial;background-origin:initial;bac=
kground-clip:initial;background-color:rgb(246, 246, 246);font-family:men=
lo, consolas, monospace;font-size:90%;padding-top:1px;padding-right:3px;=
padding-bottom:1px;padding-left:3px;">mailbox</code>es if you want to de=
compose again for some reason.</div><div><br></div><div>Cheers,</div><di=
v id=3D"sig64588216"><div class=3D"signature">Neil.<br></div></div></bod=
y></html>
--38e9b66b6d8b4a4899e03e00e6c97960--

