How to setup mail server in centos 6 ( postfix-dovecot )

This article describes how to setup a mail server in centos 6 . Here i have used three popular packages which is very easy to configure .
» Postfix ( for sending )
» Dovecot ( for receiving )
» Squirrelmail ( for webmail access )
This guide is strictly for learning purpose , not for real time servers .
Let’s start

Setup mail server in centos 6

» Installing and configuring  postfix

» Installing and configuring  dovecot

» Creating users and testing

» Installing and configuring squirrelmail

» Installing and configuring  postfix

Step 1 »Before installation assign a static ip and add a host entry for your domain to that IP in the /etc/hosts file like below.
192.168.0.15 krizna.com

Step 2 » Issue the below command to install postfix

[root@mail ~]# yum -y install postfix

Step 3 » Now issue the below command to install SMTP AUTH packages .

[root@mail ~]# yum -y install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain

Postfix package installation is completed .
Step 4 » Issue the below commands one by one for creating SSL Cert.
[root@mail ~]# mkdir /etc/postfix/ssl
[root@mail ~]# cd /etc/postfix/ssl/
[root@mail ssl]# openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
[root@mail ssl]# chmod 600 smtpd.key
[root@mail ssl]# openssl req -new -key smtpd.key -out smtpd.csr
[root@mail ssl]# openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
[root@mail ssl]# openssl rsa -in smtpd.key -out smtpd.key.unencrypted
[root@mail ssl]# mv -f smtpd.key.unencrypted smtpd.key
[root@mail ssl]# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 365

Step 4 » Now open /etc/postfix/main.cf file .
Find and comment the below lines .
#inet_interfaces = localhost #---> line no 116
#mydestination = $myhostname, localhost.$mydomain, localhost #--> line no 164

and add these lines at the bottom of the file.

myhostname = mail.krizna.com
mydomain = krizna.com
myorigin = $mydomain
home_mailbox = mail/
mynetworks = 127.0.0.0/8
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Step 5 » Now open /etc/postfix/master.cf file and add the below line after smtp

smtps     inet  n       -       n       -       -       smtpd
      -o smtpd_sasl_auth_enable=yes
      -o smtpd_reject_unlisted_sender=yes
      -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
      -o broken_sasl_auth_clients=yes

Step 6 » Now start postfix and saslauthd service
[root@mail ~]# service postfix start
[root@mail ~]# service saslauthd start
» Issue the below commands to start the postfix and saslauthd at startup
[root@mail ~]# chkconfig --level 235 postfix on
[root@mail ~]# chkconfig --level 235 saslauthd on
Step 7 » Now check your smtp connectivity . just telnet localhost on port 25 and type this command ehlo localhost
[root@mail ~]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.krizna.com ESMTP Postfix
ehlo localhost <---- type this command
250-mail.krizna.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

If you get this output .. Great .. everything is fine till now.

» Installing and configuring dovecot

Step 8 » Issue this command to install dovecot
[root@mail ~]# yum -y install dovecot
Step 9 » After installation open /etc/dovecot/dovecot.conf file and add the below line at the end of the file. please make sure mail_location and home_mailbox in postfix configuration are using the same name.
protocols = imap pop3
mail_location = maildir:~/mail
pop3_uidl_format = %08Xu%08Xv

Step 10 » Now start dovecot service
[root@mail ~]# service dovecot start
» Issue the below command to start the dovecot at startup
[root@mail ~]# chkconfig --level 235 dovecot on
Step 11 » Now test your pop3 connectivity .
[root@mail ~]# telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
quit
+OK Logging out
Connection closed by foreign host.

Yes .. your server is ready to receive mails .

» Creating users and testing

Step 11 » Now create users to test your configuration.
[root@mail ~]# useradd -m bobby -s /sbin/nologin
[root@mail ~]# useradd -m leela -s /sbin/nologin
and create passwords for the users created
[root@mail ~]# passwd bobby
[root@mail ~]# passwd leela
Step 12 » Test your configuration in thunderbird . Refer the below image for configuration details.
Mail server centos 6 testing
Step 13 » Now you can send and receive mails using this server. In case of any issues please check the log file /var/log/maillog )

your mail server is ready …

» Installing and configuring squirrelmail

Step 14 » you need to add EPEL repository to install squirrelmail package. you can find latest EPEL repository rpm here ( http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/repoview/epel-release.html )
[root@mail ~]# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm
Step 15 » Issue the below command to install squirrelmail.
[root@mail ~]# yum install squirrelmail
This command will install squirrelmail along with apache and php.
Step 16 » Now run the below command to configure squirrelmail .
[root@mail ~]# perl /usr/share/squirrelmail/config/conf.pl
»»» 1 »»» 1 »»» krizna (type Organization name ) »»» R ( return )
»»» 2 »»» 1 »»» ( hit space for empty Domain name ) and choose 3 »»» SMTP ( choose SMTP ) »»» R ( return )
»»» D »»» dovecot ( type ) »»» press enter with default
»»» s ( save and quit)
Step 17 » Open /etc/httpd/conf.d/squirrelmail.conf file and uncomment below lines
# RewriteCond %{HTTPS} !=on
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Step 18 » start apache service
[root@mail ~]# service httpd start
» Issue the below commands to start the httpd at startup
[root@mail ~]# chkconfig --level 235 httpd on
Step 19 » Now open http://serverip/webmail path in your browser . you could able to see the below page .
setup mail server postfix-dovecot-squirrelmail
and after login
setup mail server postfix-dovecot-squirrelmail
If any issues with apache check this page Installing Apache2 , Mysql server and PHP on Centos 6 (LAMP)
Also see :
» Setup mail server on centos 7
» Setup mail server on Ubuntu 14.04
Good luck.

36 Comments

    • Good set of instructions -thanks

      For anyone getting Relay access denied you need to change the SMTP setting in Squirrel mail to login with IMAP user name and password (option B)

    • Good set of instructions -thanks

      For anyone getting Relay access denied you need to change the SMTP setting in Squirrel mail to login with IMAP user name and password (option B)

  1. At top of tutorial ”This guide is strictly for learning purpose , not for real time servers .” Why not for real time servers? What problems would be if use for real time servers?

  2. At top of tutorial ”This guide is strictly for learning purpose , not for real time servers .” Why not for real time servers? What problems would be if use for real time servers?

  3. receive mail ok but can’t send from thunderbird – error msg: Sending of message failed.

    The message could not be sent because the connection to SMTP server smtp.englishquestion.com timed out. Try again or contact your network administrator.

    chek /var/log/maillog as following;

    warning: SASL: Connect to private/auth failed: Connection refused

    fatal: no SASL authentication mechanisms

    warning: process /usr/libexec/postfix/smtpd pid 19579 exit status 1

    warning: /usr/libexec/postfix/smtpd: bad command startup — throttling

    Does any one know what is happening?

  4. receive mail ok but can’t send from thunderbird – error msg: Sending of message failed.

    The message could not be sent because the connection to SMTP server smtp.englishquestion.com timed out. Try again or contact your network administrator.

    chek /var/log/maillog as following;

    warning: SASL: Connect to private/auth failed: Connection refused

    fatal: no SASL authentication mechanisms

    warning: process /usr/libexec/postfix/smtpd pid 19579 exit status 1

    warning: /usr/libexec/postfix/smtpd: bad command startup — throttling

    Does any one know what is happening?

  5. Unable to connect

    Firefox can’t establish a connection to the server at 192.168.50.11.

    Can’t find out where I went wrong, doublechecked the config-files and I just can’t get into the webmail server.. It’s driving me crazy

  6. Unable to connect

    Firefox can’t establish a connection to the server at 192.168.50.11.

    Can’t find out where I went wrong, doublechecked the config-files and I just can’t get into the webmail server.. It’s driving me crazy

  7. Hi ..!!

    i have installed/configured postfix mail server and now i want to send mass mails, is there option to break those bulk mails into single mails and queue 1000 recipients to one after the other ?

  8. Hi ..!!

    i have installed/configured postfix mail server and now i want to send mass mails, is there option to break those bulk mails into single mails and queue 1000 recipients to one after the other ?

  9. hi, I have setup postfix as per the steps mentuoned in this blog. however i am not able to received emails from external users. getting error msg in log file as “”NOQUEUE: reject: RCPT from Recipient address rejected: Access denied;””

    Please help

  10. hi, I have setup postfix as per the steps mentuoned in this blog. however i am not able to received emails from external users. getting error msg in log file as “”NOQUEUE: reject: RCPT from Recipient address rejected: Access denied;””

    Please help

  11. Great tutorial! Are the connection between the client (e.g. thunderbird) and server encrypted when sending emails via SMTP and receiving emails via IMAP? So a man in the middle can’t read my emails?

  12. Great tutorial! Are the connection between the client (e.g. thunderbird) and server encrypted when sending emails via SMTP and receiving emails via IMAP? So a man in the middle can’t read my emails?

  13. Just posting to say thanks for an excellent tutorial – this is the first time I’ve found all the information around configuration for Postfix, Dovecot and SSL/TLS in one place.

    Followed it all through and it is all now working perfectly.

    Only gotcha I found was getting mod_ssl installed and setup – followed the guide here:
    https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-centos-6

    And all good. Thanks Again !

  14. Just posting to say thanks for an excellent tutorial – this is the first time I’ve found all the information around configuration for Postfix, Dovecot and SSL/TLS in one place.

    Followed it all through and it is all now working perfectly.

    Only gotcha I found was getting mod_ssl installed and setup – followed the guide here:
    https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-centos-6

    And all good. Thanks Again !

  15. Hi Krizna,

    After configuring everything (all up and running), when I login to squirrelmail it comes an error:

    ————————————————-
    ERROR
    Unknown user or password incorrect
    ————————————————-
    Please help.

    Thanks,
    POM

  16. Hi Krizna,

    After configuring everything (all up and running), when I login to squirrelmail it comes an error:

    ————————————————-
    ERROR
    Unknown user or password incorrect
    ————————————————-
    Please help.

    Thanks,
    POM

3 Trackbacks / Pingbacks

  1. maillog error found
  2. How to setup mail server in centos 6 postfix-dovecot | Brainless Blog
  3. عدم دریافت ایمیل در CentOS 6

Leave a Reply

Your email address will not be published.


*