Tcl Library Source Code


[ Main Table Of Contents | Table Of Contents | Keyword Index | Categories | Modules | Applications ]


pop3d - Tcl POP3 server implementation

Table Of Contents


package require Tcl 8.5 9
package require pop3d ?1.2.0?

::pop3d::new ?serverName?
serverName option ?arg arg ...?
serverName up
serverName down
serverName destroy ?mode?
serverName configure
serverName configure -option
serverName configure -option value...
serverName cget -option
serverName conn list
serverName conn state id
authCmd exists name
authCmd lookup name
storageCmd dele mbox msgList
storageCmd lock mbox
storageCmd unlock mbox
storageCmd size mbox ?msgId?
storageCmd stat mbox
storageCmd get mbox msgId


The command serverName may be used to invoke various operations on the server. It has the following general form:

A pop3 server can be started on any port the caller has permission for from the operating system. The default port will be 110, which is the port defined by the standard specified in RFC 1939 ( After creating, configuring and starting a the server object will listen for and accept connections on that port and handle them according to the POP3 protocol.

Note: The server provided by this module will handle only the basic protocol by itself. For the higher levels of user authentication and handling of the actual mailbox contents callbacks will be invoked.

The following commands are possible for server objects:


The following options are available to pop3 server objects.


Here we describe the interface which has to be provided by the authentication callback so that pop3 servers following the interface of this module are able to use it.


Here we describe the interface which has to be provided by the storage callback so that pop3 servers following the interface of this module are able to use it. The mbox argument is the storage reference as returned by the lookup method of the authentication command, see section Authentication.

Secure mail transfer

The option -socket (see Options) enables users of the package to override how the server opens its listening socket. The envisioned main use is the specification of the tls::socket command, see package tls, to secure the communication.

package require tls
tls::init \

pop3d::new S -socket tls::socket


  1. RFC 1939

  2. RFC 2449

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. 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.


internet, network, pop3, protocol, rfc 1939, secure, ssl, tls




Copyright © 2002-2009 Andreas Kupries
Copyright © 2005 Reinhard Max