Re: [calsify] RFC7986 and EMAIL parameter

Michael Douglass <mikeadouglass@gmail.com> Wed, 17 February 2021 16:04 UTC

Return-Path: <mikeadouglass@gmail.com>
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 3EA403A1B2D for <calsify@ietfa.amsl.com>; Wed, 17 Feb 2021 08:04:49 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 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, FREEMAIL_FROM=0.001, NICE_REPLY_A=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 myrZnbO2X-k4 for <calsify@ietfa.amsl.com>; Wed, 17 Feb 2021 08:04:47 -0800 (PST)
Received: from mail-qk1-x734.google.com (mail-qk1-x734.google.com [IPv6:2607:f8b0:4864:20::734]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1F02B3A1B25 for <calsify@ietf.org>; Wed, 17 Feb 2021 08:04:47 -0800 (PST)
Received: by mail-qk1-x734.google.com with SMTP id r77so13164627qka.12 for <calsify@ietf.org>; Wed, 17 Feb 2021 08:04:47 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=rCLpuEiky02sAWoi3YNU2spQJj80pNNve+tWkALDmFo=; b=TSYheaWRVTAfvIppUBPIAkPTPl1PFTuu4vULl3wAJ7TxaXCwVSqj+ZOCtWjDpijW3F D3K12nUvmiNFx8h/Yo3SkYHqu6ca+HzAyKiRs4ioWM2mPQgllW2GbaybuVP/Qsr9iVJl mDYt/9WMuIt7qlqc/rDIKMDhkMmQtyoWoULGox16Y1GofLQ2c/gljtzx2u+4VkRlvfFb SsdpWOGVirzGnptwwrFIeP3v9HbRTULbk5R9T7BaModox0g4oyFtFZYKI63OZ1I24oIb K1g6LOAygc79yWRwit9twZxQQmXwkmwQqtCWKsaXT34+CtAuPppFC+Y0dy9dhvOxtyE4 ulmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=rCLpuEiky02sAWoi3YNU2spQJj80pNNve+tWkALDmFo=; b=ToNxUOpMNHjUpLqLVmd7nGo2hUA7EuXJ6imsEqOkwFTyZOHQIji2Qv3pH8EwRHlt7p 2SGhBlwL+4i0P7I6bDRFPFUF7pNAwQfaTqgojplONvcsCC59VBreqzBsanQHZx5q7zNW /Nlb3f0xqTnduS5GZFAOB0juD0azEWUZkaoGA3rWp0kbZDMwnhvAzceoeBkBR30+bVUR i15JNZq56jaxwtOnYXFT/va/tcussq3Lv0sWevkvZ3pCErdddoADk7i/i46nCP29x4gP cEXPxqUSutiXX0QvFGkbkqlu0cnrun7rTRG/eDQc0IG2n7yPzv3MJgly3T81cijWsPCQ i9gA==
X-Gm-Message-State: AOAM530+HX0ofCxwAN52+Hs9PzJrAmfuA3HxXTkVkjdyIVVhyT/Pc7kd QMb5XY2QPsiww/2yGy4rXBDXEs1lSmE=
X-Google-Smtp-Source: ABdhPJwdYPoZ1UKxwscgkGEd6KA8H+SSqNoJ8ZRgsvMR2S15b955H8+9p57JFLsHK9y485mDAzFlEQ==
X-Received: by 2002:a37:67d3:: with SMTP id b202mr24000327qkc.178.1613577883628; Wed, 17 Feb 2021 08:04:43 -0800 (PST)
Received: from [192.168.1.150] (cpe-74-70-70-237.nycap.res.rr.com. [74.70.70.237]) by smtp.googlemail.com with ESMTPSA id d22sm1439211qtp.34.2021.02.17.08.04.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 17 Feb 2021 08:04:42 -0800 (PST)
To: Cyrus Daboo <cyrus@daboo.name>, Calsify <calsify@ietf.org>
References: <a44f9c2c-18ff-9f6f-ca43-82e0a104889f@gmail.com> <c816206e-13de-4dda-afac-1f8923257296@cyrus.local>
From: Michael Douglass <mikeadouglass@gmail.com>
Message-ID: <304feeb6-9633-358d-5143-bd5264776c74@gmail.com>
Date: Wed, 17 Feb 2021 11:04:41 -0500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:78.0) Gecko/20100101 Thunderbird/78.6.1
MIME-Version: 1.0
In-Reply-To: <c816206e-13de-4dda-afac-1f8923257296@cyrus.local>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Content-Language: en-US
Archived-At: <https://mailarchive.ietf.org/arch/msg/calsify/pQJDFzOPsv2aazH1i8Jnincyzec>
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 16:04:49 -0000

Thanks Cyrus.

See below

On 2/17/21 10:22, Cyrus Daboo wrote:
> 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.
>
I think I meant only if the value is not a mailto:. I assume in the 
absence of any other indication (e.g. a valid email) this might be a 
fallback?


>> 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.

One of those was generated by Apple. I created an event yesterday which 
in full is

BEGIN:VCALENDAR
PRODID:-//CALENDARSERVER.ORG//NONSGML Version 1//EN
METHOD:REQUEST
VERSION:2.0
BEGIN:VEVENT
DTEND;TZID=America/New_York:20210219T100000
DTSTART;TZID=America/New_York:20210219T090000
ORGANIZER;CN=Michael Douglass;EMAIL=mikeadouglass@gmail.com:mailto:2_GM4T
  GNJSHAZTSMZVGI4DGOJTGW7UOVQIXU6S7IXFKVSLJVS4VP4YX5J2UCRWN6KC2YMIGY25PWAA
  I@imip.me.com
UID:E5C6F579-5003-4755-B29D-572E0FF147B1
DTSTAMP:20210217T051817Z
SEQUENCE:1
SUMMARY:Testing email param
LAST-MODIFIED:20210217T051817Z
CREATED:20210217T051744Z
ATTENDEE;CUTYPE=INDIVIDUAL;EMAIL=mdouglass@bedework.com;RSVP=TRUE;PARTSTA
  T=NEEDS-ACTION:mailto:mdouglass@bedework.com
ATTENDEE;CN=Ken Murchison;CUTYPE=INDIVIDUAL;EMAIL=murch@fastmail.com;RSVP
  =TRUE;PARTSTAT=NEEDS-ACTION:mailto:murch@fastmail.com
ATTENDEE;CN=Michael Douglass;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;ROLE=CHA
  IR;EMAIL=mikeadouglass@gmail.com:/aMzkzNTI4MzkzNTI4MzkzNQPuXCcDTdG5iXfOh
  cljjCSqMYrUXDcs6f1z7CyXejTR/principal/
END:VEVENT

I believe a URI doesn't require a scheme - a simple path is sufficient