The following section is meant to aid in the research, design, and implementation of the messaging system.
The size of the server(s) is dependent on the user populations assigned to them. There are no absolute rules to apply here. The best approach is to apply some general guidelines in calculating the expected load on the server. It is recommended that one errs on the side of caution by estimating one's load, plus a healthy percentage above that. Use of the facility beyond its capabilities will result in degraded performance. It will never result in denial of service, except at the explicit request of the System Administrator. If the host facility is running, there is nothing in the M-Store software that would result in the denial of service without notification. It is up to each site to determine what level of performance is acceptable and scale their facilities appropriately.
The following is a guideline for scaling the server facilities. The values presented in the guidelines are averages for an M-Store infrastructure that is less than two years old. An increase in the average amount of resources can be expected over time as users send greater volumes of mail, message complexity increases, and new users are added.
The resources consumed by the Message Service (MS) are dependent on both the active and the total number of users. Typically, active users are approximately 5% of the total user base, and active users are defined as the number of users continually accessing their mailstore. Active users impact virtual memory and CPU usage. The total number of users impacts overall disk space usage. Typically, a single user will consume the following resources:
Memory: | 1 Mbyte per active user |
Disk Space: | 5 Mbytes per user |
The suggested layout is:
Database on a separate disk from the mail partitions
256 Mbytes minimum to avoid system paging
Current CPU class - Pentium
Mailstore performance is most greatly effected by I/O, not the CPU. The only major effect on the CPU is the concurrent number of users creating I/O such as checking, retrieving and sending mail. Additionally, the CPU is taxed in such a case by worker threads. Generally speaking, 10,000 users/CPU will be adequate for maximum performance.
The M-Store mail transfer agent (MTA) is an enhanced version of the public Sendmail 8.9.3 release. It has been tailored for sites running the IMAP4/POP3 enabled M-Store. The amount of resources required depends on the average number of mail messages being delivered and the peak load level, in other words, enough memory and spool disk space to handle average loads and peaks in message traffic. The average site needs an additional 20 Mbytes of memory for the MTA and 500 Mbytes of disk space for the MTA spool/queue. 500 Mbytes gives enough room for peak loads and to handle any large queues because of outages.
A mail server that contains the Sendmail MTA, M-Store and an MSS (Multiprotocol Switching Service) component, with 400 permanent users of which 150 are active at any given time, would resemble the following configuration:
Memory: | 256 Mbytes Physical, 512 Mbytes Swap |
Disk Space: | 3 Gbytes |
CPU: | Recent 32-bit class CPU |
This configuration can adequately handle peak loads and also includes room for future growth.
One file per message (similar to traditional usenet news storage)
IMAP Mail data kept on a server has a potential to grow, and is constantly changing (unlike POP-based Mail Servers)
Numerous relatively inactive concurrent[1] processes
Mission critical data backup and protection
This section is an overview of the minimum hardware requirements for the efficient operation of M-Store.
A server dedicated to Mail or Directory services.
Numerous small disks with data striped across disks utilizing RAID level 5 striping and failed disk recovery.
Multiple SCSI controllers to spread I/O across channels.
Multiple CPUs typically perform better than a single more powerful CPU, especially if the load of multiple concurrent processes is being run in parallel across the multiple CPUs. M-Store\ runs with many independent processes, which is ideal for multiple CPUs setups. (Note that this is dependent on the OS being used.)
Large mail spool area for mail data (that is, 5 - 10 Mbytes per user).
Multiple swap partitions on separate disks.
Real memory large enough to hold all active processes[2] in memory .
Network throughput to support average mail usage. For example, to support 100,000 users delivering an average of 25 messages (each 10 Kbytes) per 8 hour day, one would require an average network throughput of 6.78 Mbytes. The throughput figure was obtained using the following assumptions and formulae:
Table 1-1. Messaging Usage for Minimum Hardware Requirements
| |
|---|---|
25 messages sent or received offsite per user (msr) | 100 000 (users) |
10 KB per message sent or received (msize) | 8 hours per day (hrs) |
3600 seconds per hour (shr) | 1024 KB per byte (Kbytes) |
8 bits per Byte (bytes) |
|
Throughput = (users x msr x msize x bytes)/(Kbytes x hrs x shr)
Throughput = (100000 x 25 x 10 x 8)/(1024 x 8 x 3600) = 6.7MBperSec
The most important features of a server are:
amount of physical memory
amount of swap space
amount of disk space
I/O performance
When planning server capacity, one must take into account the total number of concurrent connections and the total amount of disk space required. The disk usage can be controlled by setting the domain quota and the user quotas, which will limit the amount of space that users are allowed to use for their mail.
Table 1-2. Hard Drive Space Requirements by OS Platform
Platform | /usr/local/md |
|---|---|
IRIX 6.5 | 20 Mbytes |
Red Hat Linux 6.0 | 13 Mbytes |
You should allow for at least 100 Mbytes for the mailstore alone; 1 Gbyte is recommended depending on user numbers and the expected number of stored messages per user.
Table 1-3. Important File Locations
File Path | Description |
|---|---|
/etc/md/store | Contains the configuration file and the sample boot script; requires 20 Kbytes. |
/var/md/store | Contains all data for the message store, and its size depends on the size of |
M-Store requires only a network connection and a TCP stack.
The Linux platform requires a change to the system parameters. The default Linux OS configuration disables synchronous meta-data updates in the ext2fs filesystem. This is a serious design flaw that can make it impossible for fsck to recover filesystem data after a system crash. We strongly recommend that Linux sites add the sync option to all ext2fs entries in /etc/fstab. (Reboot the server for this change to take effect.)
The following work sheet summarizes the various settings for the M-Store installation process. Except for the “example only” settings, the default values of all other settings are strongly recommended.
Table 1-4. List of Installation Settings
Data Type Description | Default Setting | Planned Setting |
|---|---|---|
Install Directory | /usr/local/md |
|
Owner | sms (example only) |
|
Group | sms (example only) |
|
Base Path | /var/md/store |
|
Mailstore Partition (This should be on a separate partition from the other ore files.) | /var/md/store/ |
|
Number of Users | 10000 |
|
Directories in the first level (This is available to set during installation only if the number of users entered is 10000 or greater.) | 20 |
|
Directories in the second level (This is available to set during installation only if the number of users entered 10000 or greater.) | 200 |
|
Use Internal Authentication | ON |
|
CRAM-MD5 | ON |
|
DIGEST | ON |
|
PLAIN | OFF |
|
KERBEROS_V4 | OFF |
|
GSSAPI | ODD |
|
Disable Cleartext Login | OFF |
|
IMAP Port (Internet Standard) | 143 |
|
POP Port (Internet Standard) | 110 |
|
httpd Port (Internet Standard) (This is available to set during installation only if it was selected as an install package.) | 80 |
|
[1] Concurrent processes are defined as processes that is running and can be swapped-out. For example, the IMAP process for a person's inbox when the person is not reading mail is typically the state of most processes on a IMAP mail server.
[2] Active processes are defined as processes that are currently in a processing state. For example, the IMAP process for a person's inbox while reading and processing mail or an IMSP process when a person is searching in an address book.