Problems during local JMAP setup regarding HTTP 405 response

stanimir at audriga.com stanimir at audriga.com
Wed Apr 15 01:34:58 EDT 2020


Hello everyone,

I'm currently trying to test a JMAP client library against a locally 
running Cyrus instance.
The issue which I'm experiencing is that when trying to make a JMAP 
request like the one described in the docs here: 
https://www.cyrusimap.org/dev/imap/developer/jmap.html, I'm getting a 
"405 Method Not Allowed" response.

My setup is:
  - OS: Debian Bullseye
  - Cyrus version: 3.2.0-beta3-Debian-3.2.0~beta3-1 (I got the Cyrus as a 
Debian package and managed to get it running)

Here are my .conf files:

=== cyrus.conf ===
START {
     recover        cmd="/usr/sbin/cyrus ctl_cyrusdb -r"
     delprune    cmd="/usr/sbin/cyrus expire -E 3"
     tlsprune    cmd="/usr/sbin/cyrus tls_prune"
}

SERVICES {
     imap        cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
     #imaps        cmd="imapd -s -U 30" listen="imaps" prefork=0 
maxchild=100
     pop3        cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
     #pop3s        cmd="pop3d -s -U 30" listen="pop3s" prefork=0 
maxchild=50
     nntp        cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100
     #nntps        cmd="nntpd -s -U 30" listen="nntps" prefork=0 
maxchild=100
     #http        cmd="httpd -U 30" listen="8008" prefork=0 maxchild=100
     #https        cmd="httpd -s -U 30" listen="8443" prefork=0 
maxchild=100
     http        cmd="httpd" listen="http" prefork=0
     https        cmd="httpd -s" listen="https" prefork=0

     lmtpunix    cmd="lmtpd" listen="/run/cyrus/socket/lmtp" prefork=0 
maxchild=20
     sieve        cmd="timsieved" listen="localhost:sieve" prefork=0 
maxchild=100
     notify        cmd="notifyd" listen="/run/cyrus/socket/notify" 
proto="udp" prefork=1
}

EVENTS {
     checkpoint    cmd="/usr/sbin/cyrus ctl_cyrusdb -c" period=30
     delprune    cmd="/usr/sbin/cyrus expire -E 3" at=0401
     tlsprune    cmd="/usr/sbin/cyrus tls_prune" at=0401
     deleteprune    cmd="/usr/sbin/cyrus expire -E 4 -D 28" at=0430
     expungeprune    cmd="/usr/sbin/cyrus expire -E 4 -X 28" at=0445
}

DAEMON {
     squatter cmd="squatter -R"
}


=== imapd.conf ===
configdirectory: /var/lib/cyrus

proc_path: /run/cyrus/proc
mboxname_lockpath: /run/cyrus/lock

#defaultpartition: default
partition-default: /var/spool/cyrus/mail

# News setup
partition-news: /var/spool/cyrus/news
newsspool: /var/spool/news

altnamespace: no

unixhierarchysep: 1

lmtp_downcase_rcpt: yes

admins: cyrus imapuser

allowanonymouslogin: no

popminpoll: 1

autocreate_quota: 0

umask: 077

sieveusehomedir: false

sievedir: /var/spool/sieve

httpmodules: caldav carddav jmap

hashimapspool: true

allowplaintext: yes

sasl_pwcheck_method: auxprop

sasl_auto_transition: no

tls_client_ca_dir: /etc/ssl/certs

tls_session_timeout: 1440

lmtpsocket: /run/cyrus/socket/lmtp

idlesocket: /run/cyrus/socket/idle

notifysocket: /run/cyrus/socket/notify

syslog_prefix: cyrus

sync_log: on
sync_log_channels: squatter
search_engine: xapian
search_index_headers: no
search_batchsize: 8192
defaultpartition: base
defaultsearchtier: t1
partition-base: /var/cyrus/spool
t1searchpartition-base: /var/cyrus/search

conversations: 1
conversations_db: twoskip


calendarprefix: #calendars



I also ran an OPTIONS request for all paths (with the * operator) on 
port 80 for localhost via telnet, which showed that pretty much all HTTP 
methods are possible (including DAV). However, when running the OPTIONS 
request for the /jmap route, only OPTIONS, GET and HEAD are allowed.

I would be very happy if somebody could offer some insights on this 
issue.


Best regards,

Stanimir Bozhilov


More information about the Info-cyrus mailing list