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.
Postfix
Email messages are sent and received through the
Postfix
mail-server.
GroupServer
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.
ZODB
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.
PostgreSQL
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.
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.