snowbox - a POP3 server



snowbox [--configfile]



Snowbox is a POP3 server written in Go. It supports SSL and IPv6.


The default configuration file is /etc/snowbox/config. This file must exist, even if it is empty. In this case internal (sane) defaults are used. The default config creates a listener on localhost pop3/110.

Server config

listen (default=
Interface and port to listen on. Use to bind to all available interfaces.

use_ssl (default=no)
Activates pop3s. Needs an SSL certificate. See ssl_key and ssl_cert below.

ssl_only (default=no)
If set to 'yes', only pop3s will be activated.

listen_ssl (default=
Interface and port to use for pop3s. Use to bind to all available interfaces.

ssl_key (default=/etc/snowbox/snowbox.key)
SSL key file in PEM format.

ssl_cert (default=/etc/snowbox/snowbox.cert)
SSL certificate file in PEM format.

authfile (default=/etc/snowbox/user.auth)
This is the location of the user authentication file. See the section below for the format description.

maildir (default=/var/mail)
This is the location of the system's mail spool directory. Usually this is /var/mail where your MTA dumps mails.

maildir_gid (default=mail)
This is the group ID of the mail spool directory. This is unused in the Go version of snowbox.

loglevel (default=1)
For normal operation leave loglevel at default setting (1). Possible values are:
0: disable logging
1: default
2: unusual events usually only interesting for debugging
3: logs every connection and sent command. Aka "I want more noise in my syslog" mode.

logfacility (default=syslog)
Valid options are syslog or stdout (which is mainly useful for debugging and testing).

maildir (default=/var/mail)
The directory of the maildrop. Usually /var/mail.

This option is unused in snowbox 2. The process will run as root all the time since at the time of writing there was no way to change the user ID of a running Go routine.


You can use IPv6 addresses for the listen and listen_ssl config options. The format is [IP]:port. To listen on all interfaces use [::]:port. Note that also binds to IPv6 when available.

User config

This is the user authentication file. It should be owned by root and have strict file permissions. The default format is:

username:<blank space> password

The blank space can be whitespaces or tabs and as much you need for funny looking ASCII art config files. (It is matched with regular expression \s*)


kiza: foobar
bar: foo
foo: bar

Advanced configuration options

The custom maildrop configuration from version 1.x is not supported yet.


You can create a self-signed certificate with the following command line:
openssl req -new -x509 -nodes -out snowbox.cert -keyout snowbox.key -days 365 -subj '/CN=localhost'

where 'CN=localhost' is the hostname you want to use.

Snowbox can use PEM encoded certificates and keys.

Launching snowbox

An init.d script is provided with the package. There is a very simple one that is installed by default. If you are on Debian you can use the debianized version in init.d/debian. The deb package installs that one by default.

That's it. You should be able to use the server now. If you encounter a bug or have a problem with the configuration you can contact me at



--configfile, Specify a different config file to load.






Oliver Feiler <>
Additional code and ideas: Rene Puls <>



Snowbox is released under the GNU General Public License version 3.




This document was created by man2html, using the manual pages.
Time: 07:56:18 GMT, May 20, 2013