Home › Tcl POP3 Server Package tcllib
pop3d::dbox
Simple mailbox database for pop3d
literal type exactly as shown
argument replace with your value
?optional? may be omitted
Synopsis#
package require Tcl 8.5 9
package require pop3d::dbox ?1.0.3?
::pop3d::dbox::new ?dbName?
dbName option ?arg arg ...?
dbName destroy
dbName base base
dbName add mbox
dbName remove mbox
dbName move old new
dbName list
dbName exists mbox
dbName locked mbox
dbName lock mbox
dbName unlock mbox
dbName stat mbox
dbName size mbox ?msgId?
dbName dele mbox msgList
storageCmd get mbox msgId
Description#
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
dbNamemay be used to invoke various operations on the database. It has the following general form: dbNameoption ?arg arg ...?#-
Option and the args determine the exact behavior of the command.
The following commands are possible for database objects:
- dbName
destroy -
Destroys the mailbox database and all transient data. The directory associated with the object is not destroyed.
- dbName
basebase -
Defines the base directory containing the mailboxes to manage. If this method is not called none of the following methods will work.
- dbName
addmbox -
Adds a mailbox of name mbox to the database. The name must be a valid path component.
- dbName
removembox -
Removes the mailbox specified through mbox, and the mails contained therein, from the database. This method will fail if the specified mailbox is locked.
- dbName
moveold new -
Changes the name of the mailbox old to new.
- dbName
list -
Returns a list containing the names of all mailboxes in the directory associated with the database.
- dbName
existsmbox -
Returns true if the mailbox with name mbox exists in the database, or false if not.
- dbName
lockedmbox -
Checks if the mailbox specified through mbox is currently locked.
- dbName
lockmbox -
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. - dbName
unlockmbox -
This is the complementary method to
lock, it revokes the lock on the specified mailbox. - dbName
statmbox -
Determines the number of messages in the specified mailbox and returns this number. This method fails if the mailbox mbox is not locked.
- dbName
sizembox ?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 ... [dbName
stat]" or this call will fail. Ifstatwas not called before this call,sizewill assume that there are zero messages in the mailbox. - dbName
delembox msgList -
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 ... [dbName
stat]" or this call will fail. Ifstatwas not called before this call,delewill assume that there are zero messages in the mailbox. - storageCmd
getmbox msgId -
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. Ifstatwas not called before this call,getwill assume that there are zero messages in the mailbox.
Bugs, ideas, feedback#
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category pop3d of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist]. Please also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.
Category#
Networking
Copyright#
Copyright (c) 2002 Andreas Kupries <andreas_kupries@users.sourceforge.net>