MBQ, or Mailbox Quota mode, uses key as the name of a local user. It obtains the user parameters via Mailutils authorization mechanism and then switches to this user privileges and opens his mailbox for a brief period of time. After opening it determines the mailbox size and closes it. The mode returns ‘positive-reply’ if the mailbox size is less than the quota, and ‘netagive-reply’ otherwise.
If the key value consists of two words, separated by whitespace, then the first word is used as a user name, and the second one as a size of a message which is about to be delivered to that user’s mailbox (the size may be optionally prefixed by ‘SIZE=’). In this case, ‘positive-reply’ is returned if the actual mailbox size plus the message size is less than quota.
Two additional meta-variables may be used in reply templates to return quota-related information:
Mailbox size, in bytes. Defined only in ‘mbq’ mode.
Expected message size, in bytes. Defined only in ‘mbq’ mode.
The following example shows a definition of ‘mbq’ database which the author uses on his servers:
database mbq mailutils mode=mbq \ positive-reply="OK [${diag}] ${mailbox} ${mbsize} ${quota}"\ negative-reply="NOTFOUND [${diag}] ${mailbox} ${mbsize} ${quota}"\ onerror-reply="NOTFOUND [${diag}]"
The ‘diag’ meta-variable contains a diagnostic string suitable for passing it back to the MTA. For example, in the case of ‘negative-reply’, ‘${diag}’ expands to:
mailbox quota exceeded for this recipient
if the mailbox has grown beyond the allowed quota, and
message would exceed maximum mailbox size for this recipient
if message of the given size cannot be delivered to mailbox without violating its quota.
Notice, that this mode requires superuser privileges.