∟Install and Configure Postfix on CentOS

This section provides a tutorial example on how to install, configure and run Postfix server on CentOS systems.

Installing Postfix on CentOS 8 is relatively easy, since it has a ready-to-run binary package in CentOS repository. Here is what I did to install, configure and run Postfix on my CentOS 8 computer.

1. Install Postfix with "dnf" command.

herong$ sudo dnf install postfix
...
Installed:
  postfix-2:3.3.1-12.el8.x86_64

2. Configure Postfix.

herong$ sudo vi /etc/postfix/main.cf

...
myhostname = mail.herongyang.com
mydomain = herongyang.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
home_mailbox = Maildir/
...

3. Make sure that my local IP address is mapped to $myhostname.

herong$ sudo vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.100 mail.herongyang.com mail

herong$ ping mail
  PING mail.herongyang.com (192.168.1.100) 56(84) bytes of data.
  64 bytes from mail.herongyang.com (192.168.1.100): icmp_seq=1 ttl=64

3. Make sure that "sendmail" daemon is un-installed to avoid conflicts. The output shows that "sendmail" is not running and not installed.

herong$ ps -ef | grep sendmail
herong   17214  4230  0 06:46 pts/0    00:00:00 grep --color=auto sendmail

herong$ sudo dnf info sendmail
Available Packages
Name         : sendmail
...

4. Activate and state Postfix server.

herong$ sudo systemctl enable postfix

herong$ sudo systemctl start postfix

herong$ sudo systemctl status  postfix
* postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; ...)
   Active: active (running) since Fri 2023-11-13 06:15:38 EST; 26s ago
  Process: 29008 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Process: 29006 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, ...)
  Process: 29003 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, ...)
 Main PID: 29075 (master)
    Tasks: 3 (limit: 26213)
   Memory: 14.3M
   CGroup: /system.slice/postfix.service
           |-29075 /usr/libexec/postfix/master -w
           |-29076 pickup -l -t unix -u
           |-29077 qmgr -l -t unix -u

06:15:37 localhost.localdomain systemd[1]: Starting Postfix Mail Transport Agent...
06:15:38 localhost.localdomain postfix/master[29075]: daemon started
   -- version 3.3.1, configuration /etc/postfix
06:15:38 localhost.localdomain systemd[1]: Started Postfix Mail Transport Agent.

Cool! I think my Postfix server is running and ready to handle SMTP requests.

Table of Contents

 About This Book

 Introduction to Email

►Postfix - Mail Transport Agent (MTA)

 What Is Postfix

►Install and Configure Postfix on CentOS

 Test Postfix Server with "telnet" Client

 SMTP Submission Service on Port 587 in Postfix

 Archive Emails using "always_bcc" Setting in Postfix

 Move /var/spool/postfix to New Location

 "postconf" Command to Manage Postfix Configuration

 Turn on Postfix Server Logging for Troubleshooting

 SSL/TLS Secure Connections with Postfix Server

 Dovecot - IMAP and POP3 Server

 SSL/TLS Secure Connections with Dovecot Server

 Email Client Tools - Mail User Agents (MUA)

 Mozilla Thunderbird - Mail User Agents (MUA)

 PHPMailer - PHP Package for Sending Emails

 Email Message Format and Headers

 References

 Full Version in PDF/EPUB