The package pop3d::dbox provides simple/basic mailbox management facilities. Each mailbox object manages
a single base directory whose subdirectories represent the managed mailboxes. Mails in a mailbox are
represented by files in a mailbox directory, where each of these files contains a single mail, both
headers and body, in RFC 822 (http://www.rfc-editor.org/rfc/rfc822.txt) conformant format.
Any mailbox object following the interface described below can be used in conjunction with the pop3
server core provided by the package pop3d. It is especially possible to directly use the objects created
by this package in the storage callback of pop3 servers following the same interface as servers created
by the package pop3d.
::pop3d::dbox::new ?dbName?
This command creates a new database object with an associated global Tcl command whose name is
dbName.
The command dbName may be used to invoke various operations on the database. It has the following
general form:
dbNameoption ?argarg...?
Option and the args determine the exact behavior of the command.
The following commands are possible for database objects:
dbNamedestroy
Destroys the mailbox database and all transient data. The directory associated with the object is
not destroyed.
dbNamebasebase
Defines the base directory containing the mailboxes to manage. If this method is not called none
of the following methods will work.
dbNameaddmbox
Adds a mailbox of name mbox to the database. The name must be a valid path component.
dbNameremovembox
Removes the mailbox specified through mbox, and the mails contained therein, from the database.
This method will fail if the specified mailbox is locked.
dbNamemoveoldnew
Changes the name of the mailbox old to new.
dbNamelist
Returns a list containing the names of all mailboxes in the directory associated with the
database.
dbNameexistsmbox
Returns true if the mailbox with name mbox exists in the database, or false if not.
dbNamelockedmbox
Checks if the mailbox specified through mbox is currently locked.
dbNamelockmbox
This method locks the specified mailbox for use by a single connection to the server. This is
necessary to prevent havoc if several connections to the same mailbox are open. The complementary
method is unlock. The command will return true if the lock could be set successfully or false if
not.
dbNameunlockmbox
This is the complementary method to lock, it revokes the lock on the specified mailbox.
dbNamestatmbox
Determines the number of messages in the specified mailbox and returns this number. This method
fails if the mailbox mbox is not locked.
dbNamesizembox ?msgId?
Determines the size of the message specified through its id in msgId, in bytes, and returns this
number. The command will return the size of the whole maildrop if no message id was specified. If
specified the msgId has to be in the range "1 ... [dbNamestat]" or this call will fail. If stat
was not called before this call, size will assume that there are zero messages in the mailbox.
dbNamedelemboxmsgList
Deletes the messages whose numeric ids are contained in the msgList from the mailbox specified via
mbox. The msgList must not be empty or this call will fail. The numeric ids in msgList have to
be in the range "1 ... [dbNamestat]" or this call will fail. If stat was not called before this
call, dele will assume that there are zero messages in the mailbox.
storageCmdgetmboxmsgId
Returns a handle for the specified message. This handle is a mime token following the interface
described in the documentation of package mime. The token is read-only. In other words, the caller
is allowed to do anything with the token except to modify it. The msgId has to be in the range "1
... [dbNamestat]" or this call will fail. If stat was not called before this call, get will
assume that there are zero messages in the mailbox.