Configuring a Fedora Linux Email Server

From Techotopia
Revision as of 19:43, 27 August 2007 by Neil (Talk | contribs) (New page: Email is one of the primary uses of a Fedora Linux based server or desktop system in both home and business environments. Given both the importance and popularity of email it is surprising...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Email is one of the primary uses of a Fedora Linux based server or desktop system in both home and business environments. Given both the importance and popularity of email it is surprising to some people to find out how complex the email structure is on a Linux system and this complexity can often be a little overwhelming to the Linux newcomer.

The good news is that much of the complexity is there to allow experienced Linux administrators achieve complicated configurations for large scale enterprise installations. The fact is that for most Linux users it is relatively straight forward to set up a basic email systems so that they can send and receive electronic mail.

In this chapter of Fedora Linux Essentials, we will explain the basics of Linux based email configuration and step through configuring a basic email environment. In the interests of providing the Essentials, we will leave the complexitiesof the email system for more advanced books on the subject.


Contents


The structure of the Email System

There are a number of components that make up a complete email system. Below is a brief description of each one:

Mail User Agent

This is the part of the system that the typical user is likely to be most familiar with. The Mail User Agent (MUA), or mail client, is the application that is used to write, send and read email messages. Anyone who has written and sent a message on any computer has used a Mail User Agent of one type or another.

Typical Graphical MUA’s on Linux are Evolution and KMail. For those who prefer a text based mail client, there are also the more traditional pine and mail tools.


Mail Transfer Agent

The Mail Transfer Agent (MTA) is the part of the email system that does much of the work of transferring the email messages from one computer to another (either on the same local network or over the internet to a remote system). Once configured correctly, most users will not have any direct interaction with their chosen MTA unless they wish to re-configure it for any reason. There are many choices of MTA available for Linux including sendmail, Postfix, Fetchmail, Qmail and Exim.

Mail Delivery Agent

Another part of the infrastructure that is typically hidden from the user, the Mail Delivery Agent (MDA) sits in the background and performs filtering on the email messages between the Mail Transfer Agent and the mail client (MUA). The most popular form of MDA is a spam filter to remove all the unwanted email messages from the system before they reach the inbox of the user’s mail client (MUA). Popular MDAs are Spamassassin and Procmail. It is important to note that some Mail User Agent applications (such as Evolution and KMail) include their own MDA filtering. Others, such as Pine and Basla, do not. This can be a source of confusion to the Linux beginner.

SMTP

SMTP is an acronym for Simple Mail Transport Protocol. This is the protocol used by the email systems to transfer mail messages from one server to another. This protocol is essentially the communications language that the MTAs use to talk to each other and transfer messages back and forth.

Configuring the Linux Email System

Many systems use the Sendmail MTA to transfer email messages and on many Linux distributions this is the default Mail Transfer Agent. Sendmail is, however, a complex system that can be difficult for beginner and experienced user alike to understand and configure. It is also falling from favor because it is considered to be slower at processing email messages than many of the more recent MTAs available.

Many system administrators are now using Postfix or Qmail to handle email. Both are faster and easier to configure than Sendmail.

For the purposes of this chapter, therefore, we will look at Postfix as an MTA because of its simplicity and popularity. If you would prefer to use Sendmail there are many books that specialize in the subject and that will do the subject much more justice than we can in this chapter.

Postfix Pre-Installation Steps

The first step before installing Postfix is to make sure that Sendmail is not already running on your system. You can check for this using the following command:

 	/sbin/service sendmail status

If sendmail is not running the following output will be displayed:

 	sendmail is stopped

If sendmail is running you will see the following:

	sendmail is running 

If sendmail is running on your system it is necessary to stop it before installing and configuring Postfix. To stop sendmail run the following command as super user:

	/sbin/service sendmail stop

The next step is to ensure that sendmail does not get restarted automatically when the system is rebooted. The first step is find out which run levels will automatically start sendmail. To do this we can use the chkconfig commandline tool as follows:

 	/sbin/chkconfig --list | grep sendmail

The above command will typically result in output similar to:

	sendmail     0:off   1:off   2:on   3:off   4:on    5:on   6:off

This means that if the system boots into runlevels 2, 4 or 5 then the sendmail service will automatically start. To turn off sendmail we can once again use the sendmail command as follows:

	/sbin/chkconfig sendmail off

The chkconfig defaults to changing the settings for runlevels 2, 3, 4 and 5. If you can configure for specific runlevels using the –levels command line option if necessary.

To verify the settings run chkconfig one more time as follows:

	/sbin/chkconfig --list | grep sendmail

And check that the output is as follows:

	sendmail        0:off  1:off   2:off   3:off  4:off   5:off   6:off 

Sendmail is now switched off and configured so that it does not auto start when the system is booted. We can now move on to installing Postfix.

Installing Postfix on Fedora Linux

By default, the Fedora Linux installer does not install Postfix. To verify if Postfix is already installed, use the following rpm command in a Terminal window:

rpm -q postfix

If rpm reports that postfix is not installed, it may installed as follows:

su -
yum install postfix

The yum tool will download and install postfix, and configure a special postfix user in the /etc/passwd file.

== Configuring Postfix

The main configuration settings for Postfix are located in the /etc/postfix/main.cf. There are many resources on the internet that provide detailed information on Postfix so this section will focus on the basic options required to get email up and running.

The key options in the main.cf file are:

myhostname = mta1.domain.com mydomain = domain.com myorigin = $myhostname inet_interfaces = $myhostname

Other settings will have either been set up for you by the installation process or are not needed unless you are feeling adventurous and want to configure a more sophisticated email system.

The format of myhostname is host.domain.extension. For example if your Linux system is called MyLinuxHost and you internet domain is MyDomain.com you would set the myhostname option as:

myhostname = mylinuxhost.mydomain.com

The mydomain setting is just the domain part of the above setting. For example:

mydomain = mydomain.com

The myorigin and inet_interfaces options use the settings we have just created so do not need to be changed (although the inet_interfaces may be commented out by default so you should remove the # at the beginning of this particular line in the main.cf file).

Starting Postfix on Fedora Linux

Once the /etc/postfix/main.cf file is configured with the correct settings it is now time to start up postfix. This can be achieved from the command line as follows:

/usr/sbin/postfix start

The postfix process should now start up. The best way to check that everything is working is to check you mail log. This is typically in /var/log/maillog and should now contain an entry that looks like:

Nov 21 13:05:46 mylinuxhost postfix/postfix-script: starting the Postfix mail system Nov 21 13:05:46 mylinuxhost postfix/master[10334]: daemon started -- version 2.2.5, configuration /etc/postfix

As long as you don't see any error messages you have successfully installed and started Postfix and you are ready to set up a mail client and start communicating with the outside world.