Installing and setting up Postfix SMTP Server in RHEL 4 or CentOS 4 is easy. Postfix has secure default settings so we just need to open it up a bit.

Install Postfix and Mail Transport Agent Switcher

Package Management1. If you did not add postfix and system-switch-mail-gnome during the CentOS installation, you can add it now. Postfix is located in the package Mail Server while system-switch-mail-gnome is in X Windows System. Learn how to add or remove applications here.

Switch to Postfix from Sendmail

By default, Sendmail is the active SMTP server. Here’s how to change it.

Mail Transport Agent Switcher Location1. Click Applications, select Preferences, select More Preferences and click Mail Transport Agent Switcher. This will launch the system-switch-mail window.
Mail Transport Agent Switcher2. In the system-switch-mail window, select Postfix and click Ok.

Configure Postfix

File Browser1. Click Applications then click File Browser. This will launch the File Browser window.
File Browser2. In the Location field, type in /etc/postfix and press Enter.
Edit main.cf3. Double click on the file to open it for editing. We need to make it listen to network request, accept mails bound to our domain and use maildir which is a better mailbox format than mbox the default.
Find the following keys and change its values as follows
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
In, lines starting with # are comments. Save the file after completing your changes.

NoteMake sure that all mail_spool_directory lines are commented out. Otherwise, it will override the setting in the home_mailbox line above.

Service Configuration4. Restart the postfix service. Learn how to restart services here.

Test Postfix

Terminal1. Click Applications, select System Tools, and click Terminal. This will launch the Terminal window.
Terminal2. In the Terminal window, type in the highlighted commands below.

Sample postfix session. Replace johndoe with any valid user account. The dot after the line test is a command that should be typed in.

NoteIf you need to add new user accounts, learn how to add or remove user accounts here.

[root@mail ~]# telnet localhost smtp
Connected to localhost.localdomain (
Escape character is '^]'.
220 mail.acme.local ESMTP Postfix
ehlo host
250-SIZE 10240000
mail from: johndoe
250 Ok
rcpt to: johndoe
250 Ok
354 End data with <CR><LF>.<CR><LF>
250 Ok: queued as 9729067C17
221 Bye
Connection closed by foreign host.
[root@mail ~]#


To check if the mail indeed exists

[root@mail ~]# cd /home/johndoe/Maildir/new
[root@mail new]# ls
[root@mail new]# cat 1185669817.Vfd00I18012M795756.mail.acme.local

Don’t worry, you don’t have to type in the whole filename above. Just type in the first few characters say 118 then press Tab to activate automatic completion.

From johndoe@mail.acme.local  Thu Feb 22 21:48:28 2007
Return-Path: <johndoe@mail.acme.local>
X-Original-To: johndoe
Delivered-To: johndoe@mail.acme.local
Received: from localhost.localdomain (localhost.localdomain [])
        by mail.acme.local (Postfix) with SMTP id 9729067C17
        for <johndoe>; Thu, 22 Feb 2007 21:48:26 -0500 (EST)
Message-Id: <20070222134827.9729067C17@mail.acme.local>
Date: Thu, 22 Feb 2007 21:48:26 -0500 (EST)
From: johndoe@mail.acme.local
To: undisclosed-recipients:;


[root@mail mail]#
NoteIf you encounter any problems, check the log file at /var/log/maillog.
NoteReview your Postfix aliases configuration file. There are some predefined email aliases that might conflict with your existing mail accounts like sales, marketing, info, etc.
ImportantBy default Postfix does not require authentication to send emails. This means any Tom, Dick and Harry that have access to your network can use your SMTP server to send spam emails. Learn how to enable SMTP Authentication (SMTP AUTH) in Postfix here.

Visit the forum to ask for help or to give a comment.

Posted on 3/12/2007 and last updated on 11/7/2009
Filed under CentOS 4 , Postfix , Red Hat Enterprise Linux 4