In order to test a central mail server in a standard way using MX record, you will need to set up a master DNS server.
It is still possible to avoid setting up a master DNS server if you only want to test a null-client configuration (RHCE 7 requirement). In this case, you will have to use the relayhost = [mail.example.com] or relayhost = [ipaddress] syntax (see Configure a system to forward all email to a central mail server).
Also, you can set the disable_dns_lookups directive to yes, to force Postfix to read the local /etc/hosts file instead of sending DNS requests to get the MX records.
Install the postfix package (if it is not already there):
# yum install -y postfix
Add a new service to the firewall:
# firewall-cmd --permanent --add-service=smtp success
Reload the firewall configuration:
# firewall-cmd --reload success
Activate the postfix service at boot:
# systemctl enable postfix
Start the postfix service:
# systemctl restart postfix
Let’s assume that your server is called mail.example.com on the 192.168.1.0/24 network.
Edit the /etc/postfix/main.cf file and change the following directives:
myhostname = mail.example.com mydomain = example.com myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 192.168.1.0/24, 127.0.0.0/8
Check the syntax:
# postfix check
Check the non-default configuration:
# postconf -n
Set the SELinux allow_postfix_local_write_mail_spool boolean to ‘on‘:
# setsebool -P allow_postfix_local_write_mail_spool on
Restart the postfix configuration:
# systemctl restart postfix
Test from a client with the nmap command, it should display: “25/tcp open smtp“:
# yum install -y nmap # nmap mail.example.com Starting Nmap 6.40 ( http://nmap.org ) at 2014-08-05 23:41 CEST Nmap scan report for mail.example.com (192.168.1.24) Host is up (0.00076s latency). Not shown: 998 filtered ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp MAC Address: 52:54:00:44:23:51 (QEMU Virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 6.16 seconds
Alternatively, test from a client with the telnet command:
# yum install -y telnet # telnet mail.example.com 25 Trying 192.168.1.24... Connected to mail.example.com. Escape character is '^]'. 220 mail.example.com ESMTP Postfix HELO client 250 mail.example.com quit 221 2.0.0 Bye Connection closed by foreign host.
On the central mail server, create a user called me:
# adduser me
Then, send a mail to me:
# echo "This is a test." | mail -s "Test" email@example.com
Note: The echo command introduces the content of the mail. The -s option specifies the mail subject followed by the recipient.
Finally, check the user gets his mail:
# su - me $ mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/me": 1 message 1 new >N 1 root Tue Aug 5 23:47 21/785 "Test"