e5caacd8375ad429ec568e877ee1c7bb968cab51
Debian Trixie package bundle / packages (push) Failing after 14m29s
…
…
…
…
…
# Bongo
Bongo is an easy-to-use mail and calendar system, offering a simple yet
powerful user interface. The goal is to make sharing, organisation, and
communication simpler, quicker, and more useful.
It is intended for power home users, homelabs, small organisations, and mail
service operators who want an integrated server without assembling every
basic mail and calendar function from unrelated daemons.
This repository revives and modernises the original Bongo mail/calendar
server. The [upstream GitHub repository](https://github.com/bongo-project/bongo)
was archived in January 2025; active development now lives in the
[Disconnected by Peer Gitea repository](https://gitea.disconnected-by-peer.at/geos_one/bongo).
The historical project site remains available at
[bongo-project.org](https://bongo-project.org/).
## Project status
Bongo 0.7 is an active development line, not yet a final release. It ports the
server and Web interface to current C, CMake, and Python 3 while retaining the
small integrated-server design and the familiar Bongo Web appearance. Test a
staged installation before exposing it to Internet mail traffic and keep a
backup of all mail, account, key, and configuration data.
The 0.7 mail listeners are IPv4. IPv6 support is planned as one coherent
change for 0.9 so authentication, ACLs, SPF, logging, rate limits, and proxy
metadata all use the same address representation. JMAP is likewise outside
the 0.7 scope.
## Highlights of the 0.7 development tree
- SMTP receiving and delivery, authenticated submission, SMTPS, opportunistic
outbound STARTTLS, LMTP routing, and a rate-limited trusted-device relay.
- IMAP4, IMAP4rev1, and IMAP4rev2 compatibility, IMAPS, POP3/POP3S, and
ManageSieve with shared GNU SASL authentication.
- Webmail plus CalDAV and CardDAV for mail, calendars, and contacts; the Web
service is normally placed behind Apache, nginx, or Nginx Proxy Manager.
- Native SPF, DKIM, and DMARC verification, outbound DKIM signing, and SRS
forwarding/reversal without depending on a separate filtering service.
- Optional ClamAV and SpamAssassin integration. Distribution defaults keep
both agents disabled until their services are detected or configured.
- Argon2id account passwords, optional TOTP, recovery codes, service-scoped
app passwords, and LDAP/Active Directory authentication with a bounded local
outage cache.
- External POP3/IMAP collection and matching authenticated SMTP identities,
Sieve filters, user tasks, signatures, and provider presets.
- HAProxy PROXY protocol v1/v2 for trusted TCP4 mail frontends, configurable
Web forwarded-address handling, Fail2ban filters, systemd, and OpenRC files.
- Native RFC 8555 ACME renewal with HTTP-01 or DNS-01, ARI/Retry-After
scheduling, native ldns `nsupdate`/RFC 2136 with TSIG, and a scoped
Cloudflare provider plugin.
- GCC and Clang builds, split CMake files, CTest coverage, and CPack source and
binary packaging.
## Build requirements
Bongo requires a C11 compiler, CMake 3.16 or newer, POSIX threads, Gettext,
GLib, GMime, libgcrypt, GnuTLS, SQLite, libcurl, ldns, GNU Mailutils with Sieve,
GNU GSASL 2.2 or newer, OpenLDAP, libical, liboath, Argon2, libqrencode, libspf2,
OpenDKIM (including `opendkim-genkey`), OpenDMARC, libsrs2, libpsl, GnuTLS's
`certtool`, and Python 3 with development headers. The Python
environment must provide `dnspython`, `python-dateutil`, `nh3`, and `vobject`.
CMake reports missing Python modules during configuration; setup reports a
missing key-generation tool before changing the operative configuration.
Build outside the source tree:
```sh
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
ctest --test-dir build --output-on-failure
cmake --install build
```
For a debug installation use `-DCMAKE_BUILD_TYPE=Debug`. Do not work around
warnings by disabling them: GCC and Clang should both compile the tree cleanly.
Create packages with the generated CPack configurations:
```sh
cpack --config build/CPackConfig.cmake
cpack --config build/CPackSourceConfig.cmake
```
Source archives are named `bongo-<version>` without a `-linux` suffix.
Distribution packages should configure `CMAKE_INSTALL_PREFIX=/usr`; CMake then
uses `/etc/bongo` rather than incorrectly installing configuration below
`/usr/etc`.
## Initial setup
After installing the files, run the scenario-based curses wizard as root:
```sh
bongo-setup
```
`bongo-config wizard` opens the same interface. The wizard asks about the mail
identity and domains, reverse proxies, enabled protocols, trusted port 26
relay, LDAP, legacy-client TLS, DKIM, public mail DNS, ClamAV, and
SpamAssassin, and optional ACME HTTP-01 or DNS-01 renewal. It validates or
creates the TLS and per-domain DKIM material,
shows exact SPF/DKIM/DMARC records, and records unfinished DNS work in the
admin task list. Individual settings retain safe defaults. Passwords and the
initial configuration bundle are passed through anonymous file descriptors
and do not appear in process arguments.
The wizard probes local `clamd` and `spamd` services. For an installed but
unreachable scanner it offers an explicit local configuration editor: paths
and service actions are previewed, unrelated options are preserved, listeners
are restricted to loopback, and adjacent `.bongo-setup.bak` files plus a
transactional rollback protect the previous setup. Service enable/restart is a
separate choice and must pass a protocol probe before the Bongo setup commits.
Remote scanners are never edited. Loopback-only scanner fragments and Apache,
nginx, Nginx Proxy Manager, and HAProxy examples are installed below
`share/bongo/examples`.
Start Bongo with the service manager used by the host, for example:
```sh
systemctl enable --now bongo.service
```
Use the common editor and validator for later changes:
```sh
bongo-admin config
bongo-admin config check
```
Store configuration document names such as `smtp`, `imap`, `antispam`, and
`antivirus` deliberately have no `.json` suffix even though their contents are
JSON. Source and installed template names use the same convention.
## Security and compatibility
TLS 1.3 and TLS 1.2 are the defaults. Older TLS can be enabled only through an
explicit compatibility option and should be limited to trusted legacy
networks. Internet SMTP delivery remains opportunistic because not every peer
offers STARTTLS; certificate verification is enabled when TLS is used, while a
separate policy can require TLS for controlled destinations.
The internal relay is not an open relay. It binds to its own address/port,
accepts only configured networks, normalises legacy local senders, and applies
connection, message, recipient, and byte limits. PROXY, XCLIENT, XFORWARD, and
mail-header client metadata are accepted or emitted only for explicitly
trusted peers.
Before a public deployment, review at least the TLS, authentication, mail-auth,
proxy, scanner, and SMTP documentation linked below.
## Documentation
- [Documentation index](docs/README.md)
- [Architecture and data flow](docs/architecture.md)
- [Administration quick reference](docs/administration.md)
- [Installation and state directories](docs/directory-layout.md)
- [Network ports](docs/ports.md)
- [Protocols and client compatibility](docs/protocols.md)
- [Storage and backup](docs/storage.md)
- [Development and testing](docs/development.md)
- [Roadmap to 1.0](docs/roadmap.md)
- [Guided setup and configuration](docs/setup-wizard.md)
- [TLS policy and legacy-client compatibility](docs/tls.md)
- [Authentication, TOTP, app passwords, LDAP, and Fail2ban](docs/authentication.md)
- [SMTP, submission, LMTP, internal relay, and proxy metadata](docs/smtp.md)
- [IMAP compatibility and internationalised mailboxes](docs/imap.md)
- [Mail storage quotas](docs/quotas.md)
- [SPF, DKIM, DMARC, and SRS](docs/mail-authentication.md)
- [SpamAssassin and ClamAV](docs/antispam.md)
- [HAProxy PROXY protocol](docs/proxy-protocol.md)
- [External account collection and sender identities](docs/external-accounts.md)
The archived
[Bongo project documentation](https://github.com/bongo-project/bongo-project/tree/gh-pages/Documentation)
preserves the original administration guide, protocol descriptions,
architecture notes, and release notes. It is useful for historical context,
but its installation paths, dependencies, SSL advice, and feature status do
not describe this 0.7 tree and must not be copied into a current deployment.
Related historical source repositories are also preserved on GitHub:
- [Dragonfly](https://github.com/bongo-project/dragonfly) contains the original
Python/JavaScript Webmail and Hawkeye administration interface. The 0.7 Web
service keeps its familiar artwork and CSS where applicable, with maintained
Python 3 server code in this repository.
The maintained roadmap incorporates the still useful historical 1.0 goals.
Experimental Ruby rewrites are deliberately not part of the current plan:
the server and Web interface remain C and Python 3 respectively.
The manual pages `bongo-setup(1)`, `bongo-config(1)`, `bongo-admin(1)`,
`bongo-manager(1)`, and `bongoagents(8)` document the installed tools.
## History and licence
Bongo began as a community continuation of Novell Hula and retains the
original copyright notices throughout the source tree. Historical context is
preserved in `AUTHORS`, `ChangeLog`, `NEWS`, and the archived upstream
repository.
Bongo is free software under the GNU General Public License version 2. See
`COPYING` for the complete licence.
Description
Languages
C
75.3%
Python
18.5%
CSS
1.5%
CMake
1.4%
Shell
1.1%
Other
2.1%