Technical Architecture

Technical architecture diagram

GroupServer combines Web and email servers, and connects them to different back-end storage facilities. By doing this, people can share messages using the Web and email simultaneously.

Web server
A Web server (such as Apache or nginx) is used to mediate connections between browsers and the core GroupServer software.
Email messages are sent and received through the Postfix mail-server.
GroupServer itself is written in Python, using the Zope framework ― specifically Zope application server. GroupServer mediates between email and the Web, ensuring that all users have a similar experience, no matter what software is used by the group members. It contains all the logic for the security, joinability, and membership of the groups; bounce detection, moderation, digest compilation, and the modification of user and group settings is all handled by the core GroupServer software. The security of data รขย€ย” including users, posts and files รขย€ย” is handled by this layer.
The static Web pages, delivered by GroupServer (such as this one) are stored in ZODB. The ZODB also stores the structure of the sites, such as which group belongs to which site.
The messages posted to groups, and information about users, as well as some secondary data, is stored in the PostgreSQL relational database. The connection between Zope and PostgreSQL is made using the SQLAlchemy toolkit.
File System
Finally, files that are added to groups, such as message attachments, are stored using the standard file-system of the host machine.

Standards Compliance

  • XHTML (1 and 5) is used to specify the content of Web pages.
  • CSS is used to style the Web pages.
  • Atom is used to generate Web feeds of the messages posted to groups.
  • The standards for email, including RFC 2822 and RFC 4021, are followed as closely as possible, while remaining compatible with as many existing email systems as possible.
  • Unicode is used throughout GroupServer, so people may author content, and send and receive messages, using character sets other than the Latin alphabet used for the English language.

Scaling GroupServer

Each of GroupServer's four main components (a web server, a mail server, an object database, and a relational database) can be placed on a separate machine, or multiple machines in the case of the database and web server. Even in a single-machine configuration, GroupServer can handle tens of thousands of users posting and viewing messages throughout the day.

GroupServer is more flexible than scaling a single site over multiple machines. A single machine can contain multiple Zope installations, and each Zope installation can contain multiple GroupServer instances, and each instance can contain multiple sites, and each site can contain multiple groups! This should provide enough flexibility for most situations.