[Dovecot] Benchmarking: Dovecot vs Courier. Courier wins as POP3 server

Alexandr Sabitov alexandr.sabitov at netregistry.com.au
Thu Jan 17 01:47:33 EET 2013


Hi All,

I have compared Dovecot performance to Courier and it appears that as a POP3 server Dovecot is slower in 2 times but as an IMAP server it is faster in 1.5 times. The same node (16CPUs), testing time is 30 min, please see results and dovecot configs attached.
Benchmark software is MStone used by Sendmail Inc so is is quite reliable.

I do not see anything else to tweak in Dovecot to increase POP3 performance. Can we all have some tips to improve it please ?

This is how my Dovecot set up:
(LDAP user) -> Dovecot Director -> (Master user) -> Dovecot

Dovecot Director:
dovecot-shared-4:~# /usr/local/dovecot/bin/doveconf -n -c /usr/local/dovecot/etc/dovecot/dovecot-proxy.conf
# 2.1.12: /usr/local/dovecot/etc/dovecot/dovecot-proxy.conf
# OS: Linux 2.6.32-5-amd64 x86_64 Debian 6.0.6
auth_debug = yes
auth_mechanisms = plain login cram-md5 ntlm
auth_verbose = yes
base_dir = /var/run/dovecot-proxy
default_internal_user = webmail
director_mail_servers = 192.168.100.102
director_servers = 192.168.100.101
disable_plaintext_auth = no
doveadm_password = blah
doveadm_proxy_port = 9292
instance_name = dovecot-proxy
listen = 192.168.100.101
log_path = /var/log/dovecot-proxy.log
login_greeting = Dovecot Proxy ready.
mail_location = maildir:~/
passdb {
  args = /usr/local/dovecot/etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
service auth-worker {
  user = webmail
}
service auth {
  client_limit = 2400
}
service director {
  fifo_listener login/proxy-notify {
    mode = 0666
  }
  inet_listener {
    port = 9191
  }
  unix_listener director-userdb {
    mode = 0600
  }
  unix_listener login/director {
    mode = 0666
  }
}
service doveadm {
  inet_listener {
    port = 9292
  }
}
service imap-login {
  executable = imap-login director
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service imap {
  service_count = 0
}
service lmtp {
  inet_listener lmtp {
    port = 24
  }
}
service pop3-login {
  executable = pop3-login director
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
service pop3 {
  service_count = 0
}
ssl_cert = </usr/local/dovecot/ssl/dovecot.pem
ssl_key = </usr/local/dovecot/ssl/dovecot.pem
userdb {
  args = /usr/local/dovecot/etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
protocol imap {
  mail_max_userip_connections = 100
}
protocol doveadm {
  auth_socket_path = director-userdb
}

Dovecot (back-end):
dovecot-shared-4:~# /usr/local/dovecot/bin/doveconf -n
# 2.1.12: /usr/local/dovecot/etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-5-amd64 x86_64 Debian 6.0.6
auth_debug = yes
auth_master_user_separator = *
auth_mechanisms = plain login
auth_verbose = yes
base_dir = /var/run/dovecot/
default_internal_user = webmail
disable_plaintext_auth = no
doveadm_password = blah
listen = 192.168.100.102
log_path = /var/log/dovecot.log
mail_fsync = always
mail_location = maildir:~/
mail_nfs_index = yes
mail_nfs_storage = yes
mail_plugins = " quota fts fts_lucene"
mmap_disable = yes
namespace {
  inbox = yes
  location =
  prefix = INBOX.
  separator = .
}
passdb {
  args = /usr/local/dovecot/etc/dovecot/passwd.masterusers
  driver = passwd-file
  master = yes
  pass = yes
}
passdb {
  driver = static
}
plugin {
  fts = lucene
  fts_lucene = whitespace_chars=@.
  quota = maildir:User quota
}
service director {
  unix_listener director-admin {
    mode = 00
  }
}
service doveadm {
  inet_listener {
    port = 9292
  }
}
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
  process_limit = 20
  process_min_avail = 8
}
service imap-postlogin {
  executable = script-login /usr/local/dovecot/bin/imap-postlogin.sh
  user = webmail
}
service imap {
  executable = imap imap-postlogin
}
service lmtp {
  inet_listener lmtp {
    port = 24
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
  process_limit = 20
  process_min_avail = 8
}
service pop3-postlogin {
  executable = script-login /usr/local/dovecot/bin/pop3-postlogin.sh
  user = webmail
}
service pop3 {
  executable = pop3 pop3-postlogin
}
ssl_cert = </usr/local/dovecot/ssl/dovecot.pem
ssl_key = </usr/local/dovecot/ssl/dovecot.pem
userdb {
  args = /usr/local/dovecot/etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
protocol imap {
  mail_plugins = " quota fts fts_lucene imap_quota"
}

Best Regards,
Alexandr Sabitov
Netregistry
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: results_pop3_courier.txt
URL: <http://dovecot.org/pipermail/dovecot/attachments/20130116/31f9c516/attachment-0004.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: results_imap_courier.txt
URL: <http://dovecot.org/pipermail/dovecot/attachments/20130116/31f9c516/attachment-0005.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: results_pop3_dovecot.txt
URL: <http://dovecot.org/pipermail/dovecot/attachments/20130116/31f9c516/attachment-0006.txt>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: results_imap_dovecot.txt
URL: <http://dovecot.org/pipermail/dovecot/attachments/20130116/31f9c516/attachment-0007.txt>


More information about the dovecot mailing list