Re: [calsify] RFC7986 and EMAIL parameter
Cyrus Daboo <cyrus@daboo.name> Wed, 17 February 2021 15:23 UTC
Return-Path: <cyrus@daboo.name>
X-Original-To: calsify@ietfa.amsl.com
Delivered-To: calsify@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
by ietfa.amsl.com (Postfix) with ESMTP id AEFB43A1ADD
for <calsify@ietfa.amsl.com>; Wed, 17 Feb 2021 07:23:13 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5
tests=[BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001]
autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44])
by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id umCvxwjOkCnV for <calsify@ietfa.amsl.com>;
Wed, 17 Feb 2021 07:23:12 -0800 (PST)
Received: from daboo.name (daboo.name [173.13.55.49])
by ietfa.amsl.com (Postfix) with ESMTP id 077933A1ADA
for <calsify@ietf.org>; Wed, 17 Feb 2021 07:23:11 -0800 (PST)
Received: from localhost (localhost [127.0.0.1])
by daboo.name (Postfix) with ESMTP id 1F63130449D25C;
Wed, 17 Feb 2021 10:23:05 -0500 (EST)
X-Virus-Scanned: amavisd-new at daboo.name
Received: from daboo.name ([127.0.0.1])
by localhost (daboo.name [127.0.0.1]) (amavisd-new, port 10024)
with ESMTP id eT9o52cN7uvR; Wed, 17 Feb 2021 10:23:00 -0500 (EST)
Received: from cyrus.local (unknown [173.13.55.49])
by daboo.name (Postfix) with ESMTPSA id A212430449D243;
Wed, 17 Feb 2021 10:23:00 -0500 (EST)
Date: Wed, 17 Feb 2021 10:22:57 -0500
From: Cyrus Daboo <cyrus@daboo.name>
To: Michael Douglass <mikeadouglass@gmail.com>, Calsify <calsify@ietf.org>
Message-ID: <c816206e-13de-4dda-afac-1f8923257296@cyrus.local>
In-Reply-To: <a44f9c2c-18ff-9f6f-ca43-82e0a104889f@gmail.com>
References: <a44f9c2c-18ff-9f6f-ca43-82e0a104889f@gmail.com>
X-Mailer: Mulberry/5.0.0a1 (macOS/10.16)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; size=6558
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/8MTpKczT7q5G9j41_njGnjVvXI0>
Subject: Re: [calsify] RFC7986 and EMAIL parameter
X-BeenThere: calsify@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <calsify.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/calsify>,
<mailto:calsify-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/calsify/>
List-Post: <mailto:calsify@ietf.org>
List-Help: <mailto:calsify-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/calsify>,
<mailto:calsify-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 17 Feb 2021 15:23:14 -0000
Hi Michael, --On Tue, 16 Feb 2021 23:46:31 -0500 Michael Douglass <mikeadouglass@gmail.com> wrote: Some background first: when we were working on CalendarServer and deploying it within Apple, we initially used email addresses as the ORGNAIZER/ATTENDEE calendar user address value. However, we quickly ran into a problem with that: it turns out that there are frequent email address (and name) changes that happen for individuals for a variety of reasons, and we needed a way to change the mailto: values. Doing that with scheduling messages is problematic because it requires rewriting/resending invites to all particpants. With recurring messages, we probably would not want to re-write past instances, so that would require "splitting" the recurrence. In the end we decided on a different solution: internally, the server would use a `urn:uuid` URI for the calendar user address values. Those URIs were the stable directory GUID for each user, and would not change even if other properties of the user record did (email, name, etc). So CalendarServer would return urn:uuid values in any iCalendar data transmitted over CalDAV. But when sending scheduling messages externally (via iMIP and iSchedule, when that was a thing) we would rewrite the ORGANIZER and ATTENDEE property values to the current value of the corresponding user's email address URI. Similarly, for scheduling messages being delivered from an outside source into the server, we would rewrite the mailto URIs to urn:uuid ones. There were some client-side implications to this: the client does an attendee auto-complete when an organizer is adding attendees to an event. It does that using the CalDAV principal search, querying on name, email etc, and it extracts one of several prossible calendar user addresses for the attendee and inserts that into the iCalendar object sent to the server. The server always rewrites incoming (PUT) iCalendar data to "normalize" ORGANIZER and ATTENDEE property values to the urn:uuid form. The problem with this on the client side, was that they wanted to be able to relate calendar particpants to address book entries, so that they could show additional details about the attendee (i.e., show a telephone number, or IM contact info etc). However, the urn:uuid values are not in any contacts records (yes we - Apple/CalConnect - had lots of dicussions about the need for a separate calendar user address field in contact databases but there was never consensus on how best to do that, or even whether users would grasp the purpose). So, to allow the client to match urn:uuid values to local contact data, we added the EMAIL parameter. The server always rewrites the EMAIL parameter to the most recent value for incoming (PUT)/outgoing (GET) events sent over CalDAV, so there is a strong liklihood it will match a contact (or match a record in the directory service the AddressBook.app can use). Also, in the case no contact could be matched, the EMAIL value could be used as an alternative, out-of-band, way to contact the particpant over email. > So > > question 1: > > Is it the case that the value - the calendar address is still the > identifier for the attendee? Yes, the calendar user address is always the "key" for identifying/matching ORGANIZER and ATTENDEE properties across iCalendar objects, be they distinct events or recurrence instances. > Question 2: > > is it legal to send a REPLY back with a different EMAIL value - e.g. > attendee decides they want to use a different email address? The EMAIL parameter value was never intended to be an iMIP address used for scheduling. The calendar user address value of the relevent iCalendar property would always be the scheduling address. We handled that by always rewriting iCalendar data on the way into, and out of, our external scheduling system. > Question 3: > > Does "Recipients can also use this value as an alternative means of > contacting the calendar user via email." include sending iMip messages? As per above, no, it was never intended that EMAIL be used for iMIP. It is important to note, that some calendar systems allow users to "sign-up" using a 3rd party email address as their "identifier", but generate their own mailto calendar user address for iMIP (usually with a domain set to the calendar server host and an "opaque" identifier for thew local part). In such a case there could be two email addresses on a property: one in the EMAIL paramater (the 3rd party address that could be matched to a contact record); and the other the calendar user address value in the property. > Question 4: (already past a 'couple') > > 5546 says: > > When used to provide a delegation response, > the "Delegator" SHOULD include the calendar address of the "Delegate" > on the "DELEGATED-TO" property parameter of the "Delegator's" > "ATTENDEE" property. The "Delegate" SHOULD include the calendar > address of the "Delegator" on the "DELEGATED-FROM" property parameter > of the "Delegate's" "ATTENDEE" property. > > So that implies that the DELEGATED-TO value might also be a non mailto URI? > 7986 says nothing about these parameters Those parameters typically reference other ATTENDEE properties (via the calendar user address value) and those other properties can have an EMAIL parameter that can be used with the delegate. > I assume that we could have something like: > > ATTENDEE;CN=Michael > Douglass;PARTSTAT=ACCEPTED;ROLE=CHAIR;EMAIL=mdouglass@bedework.com <mailto: > mikeadouglass@gmail.com>:/sadlksdfkkljklkjjklljkkjjLKJLKJjLKjJKLKLjJKLLkjKj > LkjLKJ/principal/ I think the EMAIL parameter value is wrong (at the very least it is missing some DQUOTEs). It should just be the address spec, not the full address. I think that is my fault as I know see that 7986 did not properly define the parameter value. It just said "email address", but shouyld have references RFC5322 3.4.1 for the addr-spec definition. > ATTENDEE;CN=Another Michael Douglass;PARTSTAT=ACCEPTED;DELEGATED-TO="/sadlk > sdfkkljklkjjklljkkjjLKJLKJjLKjJKLKLjJKLLkjKjLkjLKJ/principal/";EMAIL=mikead > ouglass@gmail.com <mailto:mikeadouglass@gmail.com>:/aMzkzNTI4MzkzNTI4MzkzNQ > PuXCcDTdG5iXfOhcljjCSqMYrUXDcs6f1z7CyXejTR/principal/ Same issue with EMAIL parameter value. However, the concept of relating properties via the DELEGATED-* parameters is fine. BTW: I am not sure the calendar user address values in your example are legal. As per RFC 3986, there should be a "scheme:" prefix present. -- Cyrus Daboo
- [calsify] RFC7986 and EMAIL parameter Michael Douglass
- Re: [calsify] RFC7986 and EMAIL parameter Cyrus Daboo
- Re: [calsify] RFC7986 and EMAIL parameter Michael Douglass
- Re: [calsify] RFC7986 and EMAIL parameter Cyrus Daboo
- Re: [calsify] RFC7986 and EMAIL parameter Mike Douglass
- Re: [calsify] RFC7986 and EMAIL parameter Neil Jenkins
- Re: [calsify] RFC7986 and EMAIL parameter Cyrus Daboo
- Re: [calsify] RFC7986 and EMAIL parameter Michael Douglass
- Re: [calsify] RFC7986 and EMAIL parameter Neil Jenkins
- Re: [calsify] RFC7986 and EMAIL parameter Neil Jenkins