How to configure Postfix Mail Server in Linux

configure Postfix

1. What is mail server?


A mail server (sometimes also referred to an e-mail server) is a server that handles and delivers e-mail over a network, usually over the Internet. A mail server can receive e-mails from client computers and deliver them to other mail servers. A mail server can also deliver e-mails to client computers. A client computer is normally the computer where you read your e-mails, for example your computer at home or in your office. Also an advanced mobile phone or Smartphone, with e-mail capabilities, can be regarded as a client computer in these circumstances.

{getToc} $title={Table of Contents}

2. How many types of mail servers available in Linux?

There are two types of mail servers.

(i) Sendmail server (default in RHEL - 5, available in 6 and 7)

(ii) Postfix (default in RHEL - 6 and 7)

These both mail server are used to send and receive the mails, but we cannot used both mail servers at a time ie., we have to use only one server at a time. These mail servers are used as CLI mode. Outlook express in windows is used to send or receive the mails. Thunderbird is used to send or receive the mails using GUI mode in Linux. # mail is the command used to send the mails in CLI mode.

3. What are MUA, MTA, SMTP, MDA and MRAs?

MUA:

MUA stands for Mail User Agent. It is the e-mail client which we used to create-draft-send emails. Generally, Microsoft Outlook, Thunderbird, kmail, .... etc., are the examples for MUAs.

MTA:

MTA stands for Mail Transfer Agent. It is used to transfer the messages and mails between senders and recipients. Exchange, Qmail, Sendmail, Postfix, ....etc., are the examples for MTAs.

SMTP:

SMTP stands for Simple Mail Transfer Protocol. It is used to transfer the messages and mails between the MTAs.

MDA:

MDA stands for Mail Delivery Agent. It is a computer software component that is responsible for the delivery of e-mail messages to a local recipient's mailbox. Within the Internet mail architecture, local message delivery is achieved through a process of handling messages from the message transfer agent and storing mail into the recipient's environment (typically a mailbox).

MRA:

MRA stands for Mail Retrieval Agent. It is a computer application that retrieves or fetches e-mail from a remote mail server and works with a mail delivery agent to deliver mail to a local or remote email mailbox. MRAs may be external applications by themselves or be built into a bigger application like an MUA. Significant examples of standalone MRAs include fetchmail, getmail and retchmail.

4. What is the profile of mail server?

Package : sendmail (in RHEL - 5, 6 and 7) or postfix (in RHEL - 6 and 7).
Configuration file : /etc/postfix/main.cf, /etc/dovecot/dovecot.conf
Log file : /var/log/mail.log
User's mails location : /var/spool/mail/<user name> 
root user's mail location : /var/spool/mail/root 
Deamons : postfix
Port number : 25

5. How to configure the mail server?

The pre-requisite for mail server is DNS. ie., Domain Naming System should be configured first.
(i) Check the hostname of the server by

# hostname command. 

(ii) Install the mail server package by

# yum install postfix* dovecot* -y command. 
(iii) Open the mail configuration file and at last type as below.
# vim /etc/postfix/main.cf  myhostname = server9.example.com mydomain = example.com
   myorigin = $mydomain
   inet_interfaces = $myhostname, localhost
   mydestination = $myhostname, localhost.$localdomain, localhost, $mydomain 
   home_mailbox = Maildir / (save and exit this file)

(iv) Open the another configuration file and at last type as below.

# vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp (save and exit this file) 

(v) Restart the mail server services.

# service postfix restart  (to restart the postfix deamon in RHEL - 6)
# service dovecot restart  (to restart the dovecot deamon in RHEL - 6)
# chkconfig postfix on  (to enable the postfix deamon at next boot in RHEL - 6)
# chkconfig dovecot on  (to enable the dovecot deamon at next boot in RHEL - 6)
# systemctl restart postfix doveco0t  (to restart the postfix and dovecot deamons in RHEL - 6)
# systemctl enable postfix dovecot  (to enable the deamons at next boot in RHEL - 6)
 

(vi) Add the service to the IP tables and firewall.

In RHEL - 6:
# iptables -A INPUT -i eth0 -p tcp -m tcp --deport 25 -j ACCEPT 
# iptables -A OUTPUT -i eth0 -p tcp -m tcp --deport 25 -j ACCEPT 
# service iptables save 
# service iptables restart 
 
In RHEL - 7:
# firewall-cmd --permanent --add-port=25/tcp 
# firewall-cmd --complete-reload 
 

(vii) Send a test mail to the user.

# mail -s testmail raju
   Hi this is a test mail
   ok bye... bye .... (exit and send the mail by Ctrl + d )

(viii) Login as raju user and check the mail.

  # su - raju
  $ ls
  $ cd Maildir
  $ ls
  $ cd new
  $ cat <mail name>
 

6. How to configure mail server as null client in RHEL - 7 ?

(i) Open the configuration file and at last type as below.

# vim /etc/postfix/main.cf  relayhost = [client9.example.com] inet_interfaces = loopback-only mynetworks = 127.0.0.0/8 [ : : 1]/128 myorigin = server9.example.com mydestination =

    local_transport = error : local delivery disabled (save and exit this file) 

(ii) Restart the postfix deamons.

  # systemctl restart postfix
  # systemctl enable postfix
 

(iii) Add the postfix service to Firewall.

# firewall-cmd --permanent --add-port=25/tcp
# firewall-cmd --complete-reload
 

(iv) Send a test mail to the user.

# mail -s testmail raju or # mutt -s testmail raju
 
   Hi this is a test mail
   ok bye... bye .... (exit and send the mail by Ctrl + d ) 

(v) Login as raju user and check the mail.

  # su - raju
  $ ls
  $ cd Maildir
  $ ls
  $ cd new
  $ cat <mail name> 
 

Other useful commands:

* To send a mail to the local system, no need to configure the mail server.

* To send a mail to the remote system, then only we have to configure the mail server.

# mail "mailto:raju@server9.example.com" (to send the mail to the raju user of the server9) 

type the message whatever you want (press Ctrl + d to exit and send the mail)
 # su - raju (to switch to the raju user) 
	$ mail (to check the mails of the raju user) 
	N abcd 
	N efgh 
	N ijkl 
	N mnop (there are four mails in the mail box) 
	& 1 (to read the 1st mail) 
* If the mail is new one then 'N' letter is appears before the mail. If it is already seen then there is no letter before the mail.
* press 'q' to quit the mail utility.
# mail or mutt -s " hello " <user name1><user name2><user name3> type the matter whatever you want (press Ctrl + d to exit and send the mail to 3 users) 
 $ mail (to see all the mail in the mail box) 
	&<type the mail number> (to read the specified mail by it's number) 
	& r (to send the replay mail to that user) 
	& p (to send the mail to the printer for printing) 
	& w (to write the contents of the mail into a file, ie., save the contents of the mail ina file) 
	& q (to quit the mail box) 
	& d (to delete the mail) 
	& d <mail number> (to delete the specified mail by it's number) 
	& d 1-20 (to delete the mails from 1 to 20 numbers) 
# mail -s "hello" <user name>@<servername> . <domain name> (to send the mail to the remote system) 
# mailq (to see the mails in the queue) 

* If the mail server is not configured or not running, then the sent mails will be in the queue.

# mail -s "hello" <user name1><user name2><<File name> (send the mail with attached file to the 2 users) 
# postfixcheck (to verify the mail configuration file for syntax errors) 

Jay

I love keeping up with the latest tech trends and emerging technologies like Linux, Azure, AWS, GCP, and other cutting-edge systems. With experience working with various technology tools and platforms, I enjoy sharing my knowledge through writing. I have a talent for simplifying complex technical concepts to make my articles accessible to all readers. Always looking for fresh ideas, I enjoy the challenge of presenting technical information in engaging ways. My ultimate aim is to help readers stay informed and empowered on their tech journeys.

Post a Comment

Previous Post Next Post

Contact Form