10. Mailbox Operator Manual#
10.1. Introduction#
10.1.1. About Taler Mailbox#
The Taler Mailbox facilitates sending and receiving payment requests. The service does not require any registration and offers limited inbox space for any wallet address.
10.1.2. About this manual#
This manual targets system administrators who want to install, operate or integrate the mailbox service. To report issues or learn about known limitations, please check our bug tracker.
10.1.3. Architecture overview#
The following illustrations gives an overview of the architecture and the main interactions:


The user, in this case Alice, first requires a mailbox URI. In the case of GNU Taler Mailboxes offered through the mailbox service, mailbox URIs can be generated from wallet addresses.
The mailbox URI can then be associated with one or more aliases by Alice with the directory service. To do so, Alice must prove that she is actually behind a respective alias. For example, a validation link is sent to Alices email address if she wants to associate her email alias with the mailbox URI. The validation process differs depending on the alias used.
Other users, in this case Bob, may then resolve the mailbox URI using one of Alice’s aliases in order to request a payment, or use Alice’s wallet address to send money.
10.2. Installation#
In this guide’s shell-session fragments, the command prompt shows two pieces of information:
Who is performing the command (
$user
vsroot
, and ending character$
vs#
).
10.2.1. Installing from source#
The following instructions will show how to install libgnunetutil and the core GNU Taler libraries from source.
The package sources can be find in our download directory.
GNU Taler components version numbers follow the MAJOR.MINOR.MICRO
format.
The general rule for compatibility is that MAJOR
and MINOR
must match.
Exceptions to this general rule are documented in the release notes.
For example, taler-mailbox 1.3.0 should be compatible with Taler exchange 1.4.x
as the MAJOR version matches. A MAJOR version of 0 indicates experimental
development, and you are expected to always run all of the latest releases
together (no compatibility guarantees).
First, the following packages need to be installed before we can compile the backend:
Golang >= 1.19
10.2.2. Installing the mailbox binary packages on Debian#
To install the GNU Taler Debian packages, first ensure that you have the right Debian distribution. At this time, the packages are built for Debian trixie.
You need to add a file to import the GNU Taler packages. Typically,
this is done by adding a file /etc/apt/sources.list.d/taler.list
that
looks like this:
deb [signed-by=/etc/apt/keyrings/taler-systems.gpg] https://deb.taler.net/apt/debian trixie main
Next, you must import the Taler Systems SA public package signing key into your keyring and update the package lists:
# wget -O /etc/apt/keyrings/taler-systems.gpg \
https://taler.net/taler-systems.gpg
# apt update
Note
You may want to verify the correctness of the Taler Systems SA key out-of-band.
Now your system is ready to install the official GNU Taler binary packages using apt.
To install taler-mailbox you can now simply run:
# apt install taler-mailbox
Note that the package does not perform any configuration work except for setting up the various users and the systemd service scripts. You still must configure at least the database, HTTP reverse proxy (typically with TLS certificates) and the terms of service.
10.2.3. Installing the GNU Taler binary packages on Trisquel#
To install the GNU Taler Trisquel packages, first ensure that you have the right Trisquel distribution. Packages are currently available for Trisquel GNU/Linux 10.0. Simply follow the same instructions provided for Ubuntu.
10.2.4. Installing the GNU Taler binary packages on Ubuntu#
To install the GNU Taler Ubuntu packages, first ensure that you have
the right Ubuntu distribution. At this time, the packages are built for
Ubuntu Lunar and Ubuntu Jammy. Make sure to have universe
in your
/etc/apt/sources.list.d/ubuntu.sources
(after main
)
as we depend on some packages from Ubuntu universe
.
A typical /etc/apt/sources.list.d/taler.list
file for this setup
would look like this for Ubuntu Noble:
deb [signed-by=/etc/apt/keyrings/taler-systems.gpg] https://deb.taler.net/apt/ubuntu/ noble main
Next, you must import the Taler Systems SA public package signing key into your keyring and update the package lists:
# wget -O /etc/apt/keyrings/taler-systems.gpg \
https://taler.net/taler-systems.gpg
# apt update
Note
You may want to verify the correctness of the Taler Systems key out-of-band.
Now your system is ready to install the official GNU Taler binary packages using apt.
To install the Taler exchange, you can now simply run:
# apt install taler-mailbox
Note that the package does not perform any configuration work except for setting up the various users and the systemd service scripts. You still must configure at least the database, HTTP reverse proxy (typically with TLS certificates), and the terms of service.
10.2.5. Services, users, groups and file system hierarchy#
The taler-mailbox package will use several system users to compartmentalize different parts of the system:
mailbox-httpd
: runs the HTTP daemon with the core business logic.postgres
: runs the PostgreSQL database (from postgresql package).www-data
: runs the frontend HTTPS service with the TLS keys (from nginx package).
The package will deploy a systemd service files in
/usr/lib/systemd/system/
for taler-mailbox:
taler-mailbox.service
: the business logic with the public REST API.
10.3. Configuration Fundamentals#
This chapter provides fundamental details about the exchange configuration.
The configuration for all Taler components uses a single configuration file
as entry point: /etc/mailbox/mailbox.conf
.
System defaults are automatically loaded from files in
/usr/share/mailbox/config.d
. These default files should never be modified.
The default configuration mailbox.conf
configuration file also includes all
configuration files in /etc/mailbox/conf.d
.
10.3.1. Configuration format#
All GNU Taler components are designed to possibly share the same configuration files. When installing a GNU Taler component, the installation deploys default values in configuration files located at ${prefix}/share/taler/config.d/ where ${prefix} is the installation prefix. Different components must be installed to the same prefix.
In order to override these defaults, the user can write a custom configuration
file and either pass it to the component at execution time using the -c
option, or name it taler.conf and place it under $HOME/.config/ which is where
components will look by default. Note that the systemd service files pass -c
/etc/taler/taler.conf
, thus making /etc/taler/taler.conf
the primary location for the configuration.
A config file is a text file containing sections, and each section contains maps options to their values. Configuration files follow basically the INI syntax:
[section1]
value1 = string
value2 = 23
[section2]
value21 = string
value22 = /path22
Comments start with a hash (#
). Throughout the configuration, it is
possible to use $
-substitution for options relating to names of files or
directories. It is also possible to provide defaults values for those
variables that are unset, by using the following syntax:
${VAR:-default}
. There are two ways a user can set the value
of $
-prefixable variables:
by defining them under a
[paths]
section:[paths] TALER_DEPLOYMENT_SHARED = ${HOME}/shared-data .. [section-x] path-x = ${TALER_DEPLOYMENT_SHARED}/x
or by setting them in the environment:
$ export VAR=/x
The configuration loader will give precedence to variables set under
[path]
over environment variables.
The utility taler-config
, which gets installed along with the exchange,
can be used get and set configuration values without directly editing the
configuration file. The option -f
is particularly useful to resolve
pathnames, when they use several levels of $
-expanded variables. See
taler-config --help
.
The repository git://git.taler.net/deployment
contains example code
for generating configuration files under deployment/netzbon/
.