Dovecot /postfix with Roundcube WebUI
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*.rpmRemove sendmail and install dovecot:
yum remove sendmail yum install postfix dovecot chkconfig dovecot on chkconfig postfix on service dovecot start service postfix startInstall php if not yet installed:
yum install phpInstall php extentions:
yum install php-xml php-pdo php-mbstring php-mcrypt php-intl php-mysqlAdd to your php.ini:
extension=dom.so extension=pdo.soYou can locate your working php.ini with the command:
php -i | grep 'Configuration File'Restart Apache
service httpd restartInstall some database server. In this guide we use MySQL.
yum install mysql-server chkconfig mysqld on service mysqld startSet mysql root password:
mysqladmin -u root password <password>Enter to mysql:
mysql -pCreate 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; exitDownload 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-1.0.1.tar.gzFor newest version refer to: http://roundcube.net/
Now you can give some shorter name to it, for example - webmail:
mv roundcubemail-1.0.1 webmail cd webmail chmod 777 -R temp chmod 777 -R logsGo 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/html/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 pagePress "CONTINUE"
Perform test and finish installation.
Also you can note that the webmail UI do not show the time. You need to define your timezone in php.ini. For example:
[Date] date.timezone = Europe/Amsterdam
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.confprotocols = imap mail_location = maildir:~/Maildircheck auth parameters in configfile etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain loginset maillocation in /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/MaildirAdd/uncomment in /etc/dovecot/conf.d/10-master.conf
unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix }List mailboxex
doveadm mailbox listCreate mailbox (if you set satndard linux auth this will not work for you)
doveadm mailbox create -u test testCreate 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/Maildirset password for newly created user:
passwd testNow 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 muttAfter use commands like:
mutt -f imap://john@example.com@localhost mutt -f imap://ndi@localhostAfter 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_FILESYou can map aliases with the following command:
postmap /path/to/fileEnable 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_destinationAdd 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 Postfix IP address bind configuration.
netstat -tulpnif you see the next line as one of the output
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 25367/masterit means that postfix can receive emails only from localhost. Change the allowed networks:
Edit/Add the next line in postfix config /etc/postfix/main.cf to:
inet_interfaces = localhost, 1.1.1.1Where 1.1.1.1 is your main server IP. restart postfix after
replace "test" with actual username.
ADD: Using Virtual mailboxes:
Create the user vmail. Note the user GUID. In our example the GUID wqill be 500. Add/edit the next lines in /etc/postfix/main.cf:
virtual_mailbox_domains = vpsget.com,ndisolutions.co.uk, youdomain.com virtual_mailbox_maps = hash:/etc/postfix/vmailbox #this is txt file with emails and path to email folders virtual_alias_maps = hash:/etc/postfix/virtual_aliases #txy file with aliases virtual_mailbox_base = /home/vmail #the vmail folder. you should chown it to vmail:vmail. virtual_mailbox_limit_override = yes virtual_maildir_extended = yes virtual_overquota_bounce = yes #virtual_mailbox_limit_maps = hash:/etc/postfix/vmailbox_limit #txt file with limits virtual_create_maildirsize = yes virtual_trash_count = yes virtual_trash_name = ".Trash" virtual_mailbox_limit_inbox = no virtual_minimum_uid = 500 #vmail user GUID. take a look on it in /etc/passwd for example. virtual_uid_maps = static:500 virtual_gid_maps = static:500Edit the mail location in /etc/dovecot.dovecot.conf :
mail_location = maildir:/home/vmail/%d/%nCreate the directory for user under /home/vmail/<domain>. For example: mkdir /home/vmail/vpsget.com mkdir /home/vmail/vpsget.com/info Mkae sure that correct permissions are set for vmail:vmail (*use chown)
Add user in /etc/postfix/vmailbox . For example:
info@vpsget.com vpsget.com/info/ #mail #path from vmail, not full.Create aliases if need in /etc/postfix/virtual_aliases:
admin@vpsget.com info@vpsget.comUse postmap to apply settings from vmailbox and virtual_aliases:
postmap /etc/postfix/vmailbox postmap /etc/postfix/virtual_aliasesGenerate CRAM-MD5 password hash for the user using doveadm command:
doveadm pw Enter new password: password Retype new password: password {CRAM-MD5}26b633ec8bf9dd526293c5897400bddeef9299fadCopy the result line . you will need to put it into the next step Open for edit the /etc/dovecot/users. Add/edit the user:
info@vpsget.com:{CRAM-MD5}26b633ec8bf9dd526293c5897400bddeef9299fad:500:500:/home/vmail/vpsget.com/infoThat's all. For sure you can restart postfix and dovecot services.
- Postfix delete mail queue
Remove all mail from the queue:
postsuper -d ALLRemove all mails in the deferred queue:
postsuper -d ALL deferred