Dovecot /postfix with Roundcube WebUI

From vpsget wiki
Jump to: navigation, search

Following guide was tested on CentOS 6.


Install epel repository:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

Remove sendmail and install dovecot:

yum remove sendmail
yum install postfix dovecot
chkconfig dovecot on
chkconfig postfix on
service dovecot start
service postfix start

Install php if not yet installed:

yum install php

Install php extentions:

yum install php-xml php-pdo php-mbstring php-mcrypt php-intl php-mysql

Add to your php.ini:

extension=dom.so
extension=pdo.so

You can locate your working php.ini with the command:

php -i | grep 'Configuration File'

Restart Apache

service httpd restart

Install some database server. In this guide we use MySQL.

yum install mysql-server
chkconfig mysqld on
service mysqld start

Set mysql root password:

mysqladmin -u root password <password>

Enter to mysql:

mysql -p

Create user for Rouncube:

CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'password';

Create database:

CREATE DATABASE roundcubemail;

Grant privileges:

GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit

Download roundcube and extract it in web accessible directoty:

cd /var/www/html
wget http://freefr.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.9.5/roundcubemail-0.9.5.tar.gz
tar xvf roundcubemail-0.9.5.tar.gz

For newest version refer to: http://roundcube.net/

Now you can give some shorter name to it, for example - webmail:

mv roundcubemail-0.9.5 webmail
cd webmail
chmod 777 -R temp
chmod 777 -R logs

Go to web installer using url: http://YourDomainOrIP/webmail/installer

Press "NEXT" at the bottom of the page

Find "Database setup" section and set password for database that you've created in previous steps. You may also configure other options in this step.

Press "CREATE CONFIG" at the bottom of the page.

Two files will be generated and you should place them to your roundcube folder. In our case it is /var/www/html/webmail/config

cd /var/www/webmail/config
nano main.inc.php      #Copy content of the generated file from web page
nano db.inc.php        #Copy content of the generated file from web page

Press "CONTINUE"

Perform test and finish installation.


dovecot config

Basic management is available in webmin: Servers -> Dovecot IMAP/POP3 Server


for example we will done some basic config using CLI Edit dovecot config, /etc/dovecot/dovecot.conf

protocols = imap
mail_location =  maildir:~/Maildir

check auth parameters in configfile etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain login

set maillocation in /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir

Add/uncomment in /etc/dovecot/conf.d/10-master.conf

unix_listener /var/spool/postfix/private/auth {
   mode = 0666
 user = postfix
  }

List mailboxex

doveadm mailbox list

Create mailbox (if you set satndard linux auth this will not work for you)

 doveadm mailbox create -u test test

Create mailbox (if Data source for users, homes and IDs set to Standard Unix user database)

useradd test
mkdir /home/test/Maildir
chown test:test /home/test/Maildir
chmod -R 700 /home/test/Maildir

set password for newly created user:

passwd test 

Now you can login to roundcube WebUI using created user "test". Use "yourdomain.com" or "localhost" as Server

Set dovecot autostart

chkconfig --level 345 dovecot on



test imap/ check mails from console You can install mutt

yum install mutt

After use commands like:

mutt -f imap://john@example.com@localhost
mutt -f imap://ndi@localhost

After login you will get to the CLI UI and be able to see mailbox and send mails

Here is an example of working /etc/postfix/main.cf:

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = localhost
mydomain = mydomain.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5 

sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

You can map aliases with the following command:

postmap /path/to/file

Enable postfix to use an external mail clients

Add following lines to /etc/postfix/main.cf for enabling sasl authentication:

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination 

Add the following to /etc/dovecot/conf.d/10-auth.conf:

auth_mechanisms = plain login


Mail client settings:

Account type: IMAP
Incoming mail server: mail.example.com
port 993, SSL
Outgoing mail server (SMTP): mail.example.com
Auth required
port 25, unencrypted


___________ If the emails do not appear in user mailbox but there no errors in the mailserver logfiles you can try to the next fix. Please note that for testing this case you need to send email to yourself .

postconf -e 'home_mailbox = Maildir/'
export MAIL=/home/test/Maildir
service postfix restart


If you able to send emails but you can receive the emails only from yourself or/and from other your email server users you should check the next:


replace "test" with actual username.