Applications

Once you have a secure reliable base to build from it is time to think about the functionality which any production system will be required to provide. Due to the demands placed on modern systems many different software packages are usually required to be installed and configured correctly at the same time, usually on a limited hardware platform.

The documents in this section aim to provide detailed instructions on how to install and configure a wide range of software packages usually found on production installations. These include database servers, DNS servers, email servers, etc. As these documents are aimed at users wishing to deploy the software packages in a production environment particular attention will be paid to security and reliability as well as the more common performance tuning and usability documentation.

We have attempted to organise the documentation into a logical order so that the most commonly used applications, especially those used by other documents as part of the base infrastructure, are covered first with those applications which are less often used or require a greater quantity of base infrastructure to be installed appearing towards the end. Each document contains a brief summary of the type of documentation which can be found there as well as a comprehensive table of contents.

DNS server using PowerDNS

One of the key requirements of almost every TCP/IP based network is the ability to resolve host names to network addresses. This is a central function as, amongst other things, it allows users to address hosts on a network using human readable names, such as www.example.com, instead of having to use the network address directly, such as 10.23.117.4, which besides being more convenient is also far less error prone. This functionality is usually provided by one or more DNS servers as part of the Domain Name System which is described in detail in RFC-1034 and RFC-1035.

This document aims to be a how-to describing the installation and configuration of the PowerDNS server which uses a database to store the DNS records making it ideal for applications involving large domains with thousands of records, dynamic records which are regularly updated by automated systems, or user-managed sub-domains where an interactive application is needed as a front-end to the system. Topics covered include simple DNS resolution, recursive queries, mail exchange records and reverse DNS.

Database server using PostgreSQL
PostgreSQL logo

These days the vast majority of organisations have at least one database in use which should be deemed "mission critical" be it a simple database of customer details or invoices to much more complex systems involving hundreds of tables storing a myriad of details about a particular business operation. Whatever the database role security, availability and data consistency, are of paramount importance. For this reason we exclusively use the PostgreSQL database server in production environments wherever possible.

This document aims to be a how-to describing the installation and configuration of the PostgreSQL database server with the emphasis firmly on security and stability. This document is not a tutorial on the SQL language or database design although some links to such resources are provided in the appendix.

E-mail virtual-hosting system using Postfix and CourierIMAP
Postfix logoCourierIMAP logo

Electronic mail, or email as it has become known, is one of the most far reaching uses of the Internet with almost every organisation having a system for its users. Perhaps because of the ubiquity of email it has become increasingly important to ensure that an organisation's email system is capable of not only handling the ever increasing load placed upon it by its users but is also tightly secured against the external threats of unsolicited bulk email and automated organised attacks aimed at denying legitimate users access to the system.

This document aims to describe how to install and configure an Internet mail system capable of sending and receiving email, relaying email on behalf of other servers and user agents, as well as as allowing users access to stored email, all using the most common standard protocols. As usual the focus of this document will be security and stability although there are also sections devoted to spam prevention and attachment scanning, for viruses as well as unauthorised content, to enhance not just the overall functionality and user experience of the system but the security of the entire organisation.

Time synchronisation using NTP the Network Time Protocol

When managing a network of computers, especially where those computers interact in complex ways, it is often critical that the system clocks of those computers remain synchronised to an accurate time source. This is especially true when analysing the logs from multiple systems as without a common time to work from matching log events between those systems can be difficult if not impossible.

This document aims to be a how-to describing the installation and configuration of the NTP daemon developed by the Network Time Protocol project as a client, to enable synchronisation of the local clock, and also as a server to make this accurate time information available to other clients.

Web virtual-hosting system using Apache 2

Since the creation of the World Wide Web in the early part of the 1990s the number of Web Sites had increased from the single site hosted by Tim Berners-Lee to an estimated 2,000,000 distinct sites by 2009. The Netcraft Web Server Survey provides an interesting history, complete with graphs and information broken down by, amongst other things, the server software used to host each site.

In 1996 the Apache web server first took the number one spot from the then most commonly used web server at the time which was written by the National Centre for Supercomputing Applications. It has never relinquished that position and it is still the most popular web server software in use today with more than twice the market share of its nearest rival. This document describes how to install and use the Apache 2 web server in a variety of configurations including address and name based virtual hosting as well as how to integrate the Apache 2 web server with scripting languages such as Python and PHP.