------------------------------
There are two notions of being "subscribed" to a mailing list/recipient.
(1) Hard subscribed == being on the recipient's .mail_forward list so that mail sent to this list is forwarded to one's own .messages as well (see `help mail-forwarding').
(2) Soft subscribed == keeping track of a current message for this recipient and (optionally) being on the recipient's .mail_notify list.
Each player has a .current_message property that contains, for each recipient the player cares to keep track of, a current message number and a last read date.
player:current_message(rcpt) (somewhat obsolete)
=> player's current message number for rcpt
player:get_current_message(rcpt)
=> player's {current message number for rcpt, last-read-date for rcpt}
player:make_current_message(rcpt)
=> adds a current_message entry for rcpt (NOOP if rcpt == player)
player:set_current_message(rcpt,n|E_NONE,[,date])
=> sets player's current message number for rcpt to n iff n!=E_NONE
updates the last-read-date for rcpt to date iff date > last-read-date
player:kill_current_message(rcpt)
=> removes current-message info for rcpt (NOOP if rcpt == player)
On $mail_recipient, .mail_forward and .mail_notify are -c so one needs to use the following verbs to actually modify them.
:add_forward(@new_recipients)
:delete_forward(@recpients)
:add_notify(@new_notifiees)
:delete_notify(@notifiees)
A recipient's owner is, of course, allowed to make arbitrary changes to .mail_forward and .mail_notify. However, the default versions of these verbs also allow any player to add him/herself to a recipient's .mail_forward or .mail_notify if the recipient is readable (see `help MR-access') by him/her.
Likewise any player may use the :delete* verbs to delete him/herself from any .mail_forward/.mail_notify list, regardless of his actual access to the list.