This is on Debian jessie, with guam Version 0.8.3-1:
When I replace
{ certfile, "/etc/ssl/private/cyrus-imapd.pem }
in /etc/guam/sys.config with
{ certfile, "/etc/ssl/certs/my.domain.pem }
guam stops working, with the following entry in /var/log/guam/error.log
2017-02-11 11:28:36.903 [error] <0.188.0> gen_fsm <0.188.0> in state hello terminated with reason: bad argument in call to ets:select_delete(undefined, [{{{undefined,'_','_'},'_'},[],[true]}]) in ets:match_delete/2 line 655 2017-02-11 11:28:36.904 [error] <0.188.0> CRASH REPORT Process <0.188.0> with 0 neighbours exited with reason: bad argument in call to ets:select_delete(undefined, [{{{undefined,'_','_'},'_'},[],[true]}]) in ets:match_delete/2 line 655 2017-02-11 11:28:36.904 [error] <0.169.0> gen_server <0.169.0> terminated with reason: no match of right hand value {error,{keyfile,{badmatch,[]}}} in kolab_guam_session:accept_client/1 line 129 2017-02-11 11:28:36.904 [error] <0.169.0> CRASH REPORT Process <0.169.0> with 0 neighbours exited with reason: no match of right hand value {error,{keyfile,{badmatch,[]}}} in kolab_guam_session:accept_client/1 line 129 in gen_server:terminate/6 line 737 2017-02-11 11:28:36.905 [error] <0.84.0> Supervisor tls_connection_sup had child undefined started with {tls_connection,start_link,undefined} at <0.188.0> exit with reason bad argument in call to ets:select_delete(undefined, [{{{undefined,'_','_'},'_'},[],[true]}]) in ets:match_delete/2 line 655 in context child_terminated 2017-02-11 11:28:36.905 [error] <0.93.0> Supervisor {<0.93.0>,kolab_guam_listener} had child session started with {kolab_guam_session,start_link,undefined} at <0.169.0> exit with reason no match of right hand value {error,{keyfile,{badmatch,[]}}} in kolab_guam_session:accept_client/1 line 129 in context child_terminated
Maybe there should be a way to specify the private key in the config?