I've thought of that; but it really needs to be run whenever a mailbox is created or destroyed. Or at least when a shared mailbox or user's
I'm perhaps biased; I assumed only checking the username componant and not any folders underneath a given user's inbox.
What about shared mailboxes?
And whatever utility I used to do that would need to know the same Cyrus implementation details and be kept in sync with any Cyrus changes.
ctl_mboxlist -d
While it isn't 100% transparent, it can at least leave the implementation details to ctl_mboxlist, which might change over time (and stay in sync).
Close; but it still requires conversion for namespace (and hierarchy separator ?) details that the MTA really shouldn't have to worry about. At least not when using LMTP for final delivery.
Otherwise, if you really must have up to the second data, and you're checking more than just usernames, then you might indeed be stuck with just flat out attempting to run the delivery itself.
I've been thinking about finding the cycles to whip out a utility that would take a local_part on the command line; and return success or failure to indicate whether it is deliverable. It would work by starting an LMTP session and issuing a RCPT; then RSET and QUIT after getting the response to the RCPT. Having to spawn a task to do that is a bit ugly; but I don't think Exim has a way to do it internally. (Or at least not directly. I might be able to do something with the built-in perl lib...)
-Pat