Hello,
We are using imap_id_log='*' (and imap_id_retain=yes) to log user client
information to the dovecot logs, and this information is aggregated to give us
extra debugging information for customer support.
However, as some clients send the ID information pre-login and others send it
post-login, the aggregation logic is needlessly complex as we need to correlate
the session IDs of the pre-login ID messages in order to determine the correct
user.
Hoping to simplify this, I wanted to log the client_id variable on logout, in
imap_logout_format:
imap_logout_format = in=%i out=%o deleted=%{deleted} expunged=%{expunged}
trashed=%{trashed} hdr_count=%{fetch_hdr_count} hdr_bytes=%{fetch_hdr_bytes}
body_count=%{fetch_body_count} body_bytes=%{fetch_body_bytes}
client_id="%{client_id}"
However, this only results in the following log being printed:
client_id="UNSUPPORTED_VARIABLE_client_id"
While examining the source code (login-common/client-common.c), it seems like
this could be trivially supported by adding `client_id` to the
`login_var_expand_empty_tab` struct, and adding the relevant code to populate
this variable to `get_var_expand_table(struct client *client)`.
I am willing to write a pull request for this, unless I am missing some obvious
reason why expansion of the client's `client_id` field is not supported in the
first place?
- Eirik