Set the 'debug' option in imapd.conf to 'on' and make sure that your syslog config is  logging 'local6' at the debug level.

On 05/22/2018 10:49 AM, Zhivko Vasilev wrote:

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:// <https://my.ip.address:443/jmap>cyrus.mailtemi.com <mailto:u...@cyrus.mailtemi.com>:443/jmap <https://my.ip.address:443/jmap>
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 <mailto:u...@cyrus.mailtemi.com>:q \
     -d '[["Mailbox/get", {}, "#1"],"using":["jmap-core","jmap-mail"]]' \ http:// <http://35.192.121.94/jmap>35.192.121.94:443 <https://my.ip.address:443/jmap>/jmap <http://35.192.121.94/jmap>"
returned
* Connected to 35.192.121.94 (35.192.121.94) port 80 (#0)
* Server auth using Basic with user 'u...@cyrus.mailtemi.com <mailto: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)



--
Ken Murchison
Cyrus Development Team
FastMail US LLC

<<attachment: murch.vcf>>

Reply via email to