Binc IMAP (version 2)
What is Binc IMAP?
Binc IMAP is a C++ written IMAP4ver1 server created by
Andreas Aardal Hanssen back in 2002. The last 'official' version was 1.2.13final
and the last public and incomplete version is labeled 1.3.4.
Binc IMAP is based on the software engineering principles Dan J. Bernstein
has raised, though C++ provides choices of a much wider platform.
Binc IMAP in particular supports the Maildir++ format and
the virtual mail managers VPopMail and VMailMgr.
After using Binc IMAP for a while, I thought it is important to carry out a modern version based on DJB's /slashpackage deployment infrastructure. This was the birth of Binc IMAP version 2.
Features
- Binc IMAP 2 currently supports IMAP4ver1 only.
- Binc IMAP 2 comes in the common /slashpackage format for easy installation but does not depend on it.
- Binc IMAP 2 does not have a network stack. Unencrypted service is possible with UCSPI-TCP6's tcpserver, TLS support including IMAPS and StartTLS is achieved with UCSPI-SSL's sslserver.
- Authentication is based on the PAMs available from VPopMail or VMailMgr. Additionally, a checkpassword.pl Perl PAM is shipped. Multi-backend authentication is provided by s/qmail's (version 4.3) qmail-authuser.
- Binc IMAP 2 provides logging through multilog or the Syslog facility.
Binc IMAP complements as light-weight IMAP server s/qmail's POP3 service using the same interface while providing a common management and logging scheme for SMTP, POP3, and now IMAP services.
The available TLS and X.509 infrastructure can be shared by all these daemons.
Sources
Version & Download | Description | Verification | Binc IMAP 2.0.16 | The third release with small improvements and OmniOS compatibility. | MD5: af11ee2fe4176377b047e2e8ad68c7b0 Build: 20240901115844 |
Binc IMAP 2.0.15 | The second release (fully working). | MD5: 932b3421554ce64392320717a30d70fd Build: 20231024185037 (new!) |
---|
Binc IMAP 2 's source files are documented in doxygen.
How to install Binc IMAP
Binc IMAP 2 is a self-contained C++ implementation and does not involve particular libraries outside STL and POSIX.
- Binc IMAP 2 uses D.J. Bernstein's /package conventions for installation.
- Un-tar the archive under /package, change to mail/bincimap/bincimap-<version> and call package/install.
- Binc IMAP is 64 bit clean and comes with additional man-pages.
- The three binaries bincimap-up, bincimapd, and bincimap-updatecache are typically installed at /usr/local/bin. No particular running permissions are required.
- Binc IMAP builds and installs well (at least) on x86(-64) and ARM hardware architecture.
Andreas Aardal Hanssen: Binc IMAP - Goals
"The Binc IMAP project is more than programming. This is a list of the main goals and visions that the author of Binc IMAP has put to ground.
- Helpful, hospitable community
- Although it is expected that users of Binc IMAP do their homework before posting, the server author and community of the Binc IMAP mailing list will be friendly and will approach everyone with respect. The same is expected from those who post to the list.
- There will be no RTFM on the project's mailing list. Flaming and personal insults on the project's mailing list will result in banning of the originator.
- The community is encouraged to pay back to the project's contributors by sharing their own contributions to Binc IMAP through the GPL license.
- Security through good design
- A well designed server is less exposed to bugs than a poorly designed server.
- The server will strive to use every kind of security enhancing feature, while keeping the implementation details as simple as possible.
- The source is open and downloadable. Potential bugs and/or nasty pieces of code are easily uncovered when the whole community is able to study every line of code in detail. Bugs should always be reported to the project's mailing list.
- No competition
- Under no circumstance will this project be in market driven competition with other IMAP servers.
- Binc IMAP is first and foremost a quality driven project.
- This project is meant to influence the community of authors of network protocols and servers, and hopes to increase the general quality of software that is used all over the globe and beyond.
- Modularity
- Binary modularity
Pluggable extension support. Modules that are loaded into Binc can change a great deal of Binc's behavior. Adding your own extension or altering Binc IMAP's behavior should be as easy as it can get, and it should not require a recompile of the Binc IMAP core.
Pluggable authentication support. By supporting checkpassword compatible authentication modules, Binc IMAP clients can authenticate against great number of authorities. - Source modularity
With a modular and simple yet advanced object oriented design, it should be easy to quickly understand what every method and function does. This will increase third party developers' ability to write extensions and modifications fast.
Development of the design and implementation of Binc IMAP will focus on extensibility, robustness and speed.
- Binary modularity
- Quality over quantity
- Binc IMAP's:w releases are milestones. We strive for perfection.
- Work on improving the existing design and extensibility will always go ahead of adding new features.
- Through extensive module support, the community is encouraged to contribute to the adding and testing of new features. Core design and implementation will always focus on quality.
Last updated: 2003-03-24"
In June 2023 Andreas gave me permissions to fork his Binc IMAP and I'm glad being able to follow his approach successfully.
A word of caution
I'm using now BincIMAP 2.0.15 for over one year, on my local system and this server. It works quite well, but ...
- bincimap-up leaks about 1K memory on call (authentication).
- bincimapd - under certain circumstances - eats up immediately all your available memory.
These things are under investigation and may harmless in case tools like Charles Cazabon's getmail are used, but not suited for a production environment. If you run BincIMAP, consider softlimit as an insurance to keep your IMAP server at least alive.
These issues can only be fixed with a radical new design and architecture, potentially available in ... BincIMAP ?.?. The current design of BincIMAP is more than 20 years old and completely broken given today's C++ methods and standards.
Documentation
Andreas has generated a LaTeX document for Binc IMAP 1.2 which I used as a blueprint for Binc IMAP 2.0 together with the some miscellaneous materials:
Man pages
Servers | Auxiliary |
---|---|
bincimap-up stub | bincimap |
bincimapd | bincimap-updatecache |