Debian/Ubuntu Tips and Tricks


Debian/Ubuntu Tips and Tricks

How-To: Virtual emails accounts with Postfix and Dovecot — page 3

Posted by chantra on January 18th, 2009

This entry is part 2 of 3 in the series How-To: Virtual emails accounts with Postfix and Dovecot

5. Configuring Dovecot

Dovecot has its SQL configuration gathered in a separated file: /etc/dovecot/dovecot-sql.conf, so let's edit edit with our settings:

# vi /etc/dovecot/dovecot-sql.conf

driver = mysql
connect = host= dbname=virtual_email user=vemailuser password=vemailpass
default_pass_scheme = PLAIN-MD5
password_query = SELECT password FROM virtual_users AS V LEFT JOIN virtual_domains AS D ON WHERE V.user='%n' AND'%d'

this will take care of getting the password from the database for a given user@domain.

Now, comes the biggest part of the config in /etc/dovecot/dovecot.conf. In this case, we are going to only enable IMAPS and the emails will be stored in /var/vmail/domain/user/Maildir.

You need to edit your conf file so it looks like:

# vi /etc/dovecot/dovecot.conf

protocols = imaps
mail_location = maildir:/var/vmail/%d/%n/Maildir
## uncomment this if you already have email from
## courier for instance.
#namespace private {
#  separator = .
#  prefix = INBOX.
#  inbox = yes
## change section "protocol lda" to:
protocol lda {
  # Address to use when sending rejection mails.
  postmaster_address =
  log_path = /var/vmail/dovecot-deliver.log
  # Hostname to use in various parts of sent mails, eg. in Message-Id.
  # Default is the system's real hostname.
  #hostname =
  # Support for dynamically loadable plugins. mail_plugins is a space separated
  # list of plugins to load.
  #mail_plugins =
  #mail_plugin_dir = /usr/lib/dovecot/modules/lda
  # Binary to use for sending mails.
  #sendmail_path = /usr/lib/sendmail
  # UNIX socket path to master authentication server to find users.
  auth_socket_path = /var/run/dovecot/auth-master
  # Enabling Sieve plugin for server-side mail filtering
  # handy for storing spam in their folders
  mail_plugins = cmusieve
  global_script_path = /var/vmail/globalsieverc
## in section auth default
## change :
mechanisms = plain login
## comment out "passdb pam"
## and make sure the following is in
## to look for users in the DB
  passdb sql {
    # Path for SQL configuration file, see /etc/dovecot/dovecot-sql.conf for example
    args = /etc/dovecot/dovecot-sql.conf
## and add this so dovecot does not deal with uid/gid
## we use uid and gid 5000 for everybody
  userdb static {
    args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
## next make sure the section "socket listen" looks like this
## so dovecot and postfix work happily together
  socket listen {
     master {
       path = /var/run/dovecot/auth-master
       mode = 0600
       user = vmail # User running Dovecot LDA
       #group = mail # Or alternatively mode 0660 + LDA user in this group
     client {
      # The client socket is generally safe to export to everyone. Typical use
      # is to export it to your SMTP server so it can do SMTP AUTH lookups
      # using it.
      path = /var/spool/postfix/private/auth
      #path = /var/run/dovecot/auth-client
      mode = 0660
      user = postfix
      group = postfix

Optionally we can create a system wide sieve rule that will move spam the Spam folder:

# vi /var/vmail/globalsieverc

require ["fileinto"];
# Move spam to spam folder
if anyof(header :contains "X-Spam-Flag" ["YES"], header :contains "X-DSPAM-Result" ["Spam"]) {
  fileinto "Spam";

And finally, we need to set the appropriate rights on the dovecot conf files:

# chgrp vmail /etc/dovecot/dovecot.conf
# chmod g+r /etc/dovecot/dovecot.conf

6. Restarting the services

Now, everything should be good, and restarting postfix and dovecot get our setting working:

# /etc/init.d/postfix restart
# /etc/init.d/dovecot restart

If issues were to come, well.... /var/log/mail.log is the place to check.

7. References

Series Navigation<< How-To: Virtual emails accounts with Postfix and Dovecot

One Response to “How-To: Virtual emails accounts with Postfix and Dovecot — page 3”

  1. I have found this tutorial awesome. I had tried several times to set up an environment like the one you've explained unsuccessfully. However, I have found something I don't know how to handle: now the regular mail program from Linux console is not working anymore,because Postfix is handling all the mail to root (example) to the Maildir structure. Does this mean that mail to root can not be read anymore from command line? How have you tackled this issue?

    Thank you!

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>