--message-expiry-duration is an option that you can pass when creating a new tier (in your selfhosted instance). It is equivalent to the cache-duration for users publishing in that tier.
For instance, if you are a ntfy Pro user, your messages are cached much longer than the normal 12h (see https://ntfy.sh/v1/tiers).
The naming is a little odd. I think cache-duration should probably be called something else.
Given I have no tiers, I am covered just with cache-duration and can completely ignore message-expiry-duration?
I have a single service that POSTs messages to ntfy which sends them to subscribers. Any subscriber will have to connect within cache-duration or else ntfy deletes messages older than that from the database. Is that accurate? The intention is to keep the sqlite db lean and small.