Hello Bron, Ken, To clarify, that I do not use official FastMail server. I've built Cyrus sever from https://github.com/cyrusimap/cyrus-imapd With JMAP and HTTP/2 support enabled. Assume this is the closest implementation to the JMAP RFC? Seem the problem is with HTTP/2 settings frame. Client and server exchange their settings frame, but on the first data frame, the server reset the stream with PROTOCOL_ERROR 0x1.From the source, I saw that Cyrus uses nghttp2 and they provide sample http/2 server, so I'll try to use it to see what happens.So most probably it is a http/2 compatibility issue.
After dig the Cyrus code seems HTTP/2 callback code is located in http_h2.c and there are syslog calls , but cannot make it log. Thanks a lot, Zhivko Vasilev On Tue, May 22, 2018, at 7:19 AM, Ken Murchison wrote: > I am just back home after a holiday. I will look into this sometime > today or tomorrow after I catch up on other items.> > > On 05/21/2018 01:47 PM, Zhivko Vasilev wrote: >> Hello Everyone, >> >> I hope you can help me. >> >> I'm implementing a JMAP client and try to use Cyrus as reference >> server.>> Send and Receive via IMAP/SMTP work fine. >> But when I try to connect via HTTP/2 , connection is reset by HTTP/2 >> reset stream command.>> >> imapd.log file show only "starttls: TLSv1.2 with cipher >> ECDHE-RSA-AES256-GCM- >> SHA384 (256/256 bits new) no authentication">> >> My http2 call is POST https://[1]cyrus.mailtemi.com[2]:443/jmap[3] >> HEADERS: >> "accept", "application/json" >> "content-type", "application/json" >> "Authorization", "base64 encoded user name:pass" >> BODY: >> {"methodCalls":[["Mailbox/get",{},"#1"]],"using":["jmap-core","jmap- >> mail"]}>> >> Is there a way to turn on HTTP log to track what I do incorrectly. >> >> I tried to track with curl the server allways reponded with HTTP >> error 301.>> The command I've tried was >> "curl --verbose --http2 -X POST \ >> -H "Content-Type: application/json" \ >> -H "Accept: application/json" \ >> --user u...@cyrus.mailtemi.com:q \ >> -d '[["Mailbox/get", {}, "#1"],"using":["jmap-core","jmap- >> mail"]]' \>> http://[4]35.192.121.94:443[5]/jmap[6]" >> returned >> * Connected to 35.192.121.94 (35.192.121.94) port 80 (#0) >> * Server auth using Basic with user 'u...@cyrus.mailtemi.com' >> > POST /jmap HTTP/1.1 >> > Host: 35.192.121.94 >> > Authorization: Basic dTFAY3lydXMubWFpbHRlbWkuY29tOnE= >> > User-Agent: curl/7.58.0 >> > Connection: Upgrade, HTTP2-Settings >> > Upgrade: h2c >> > HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA >> > Content-Type: application/json >> > Accept: application/json >> > Content-Length: 61 >> > >> * upload completely sent off: 61 out of 61 bytes >> < HTTP/1.1 101 Switching Protocols >> < Connection: Upgrade >> < Upgrade: h2c >> * Received 101 >> * Using HTTP2, server supports multi-use >> * Connection state changed (HTTP/2 confirmed) >> * Copying HTTP/2 data in stream buffer to connection buffer after >> upgrade: len=0>> * Connection state changed (MAX_CONCURRENT_STREAMS >> updated)! >> < HTTP/2 301 >> < date: Mon, 21 May 2018 17:36:58 GMT >> < location: /jmap/ >> < vary: Accept-Encoding >> < content-length: 0 >> < >> * Connection #0 to host 35.192.121.94 left intact >> >> Please give me some advice or clue how to track what is the problem.>> I'm >> stuck at this point for two days :( >> >> Thanks , >> Zhivko Vasilev >> > > -- Ken Murchison Cyrus Development Team FastMail US LLC > Email had 1 attachment: > * murch.vcf > 1k (text/x-vcard) Links: 1. https://my.ip.address:443/jmap 2. mailto:u...@cyrus.mailtemi.com 3. https://my.ip.address:443/jmap 4. http://35.192.121.94/jmap 5. https://my.ip.address:443/jmap 6. http://35.192.121.94/jmap