switching to dovecot

PhilipSteenland

Verified User
Joined
Mar 6, 2009
Messages
5
I would like to update my directadmin to dovecot. I already read a lot on the internet about it. Because it is an production server I would like to ask you guys some questions about the update.

We have 10 gigabyte of email, so how long will it take to convert the mail files to maildir?

Secondly where put dovecot the mail files? because the reason why I would like to update is that the /var disc is to small. I thought that it was in /home, that’s is in the /usr partition isn’t it? Only that one is big enough.

The /var disc is almost full, is that a problem while converting to dovecot?

I am sure you understand that I look forward to receiving your reply.
 
Can't tell how long 10GB will be, it depends on your box. Expect to grab a soda and wait.

Maildir files are located within the user account under /home.

How full is full on /var? I don't think that'll be an issue really.
 
if it will be that fast then i have no worries. On my /var disc i have 200mb of free size.

You dont think i will run into trouble while converting to dovecot?
 
Just do it in the middle of the night when not many people will care :) It shouldnt take long to convert them at all.
 
problems after upgrade

After the conversion dovecot was not started i needed to add a line in rc.d/rc.conf with dovecot_enable = "ON" and i needed to create a config file in /usr/local/etc/ named dovecot.conf, i used the one below.

after that it started, but i can only login with my admin account, not with my virtual accounts

After a lot of trying i get the following errors while connect trough imap

Mar 7 14:45:33 server dovecot: Killed with signal 15
Mar 7 14:45:37 server dovecot: Dovecot v1.0.13 starting up
Mar 7 14:45:52 server dovecot: auth(default): passwd([email protected],127.0.0.1): unknown user
Mar 7 14:45:52 server dovecot: auth(default): passwd-file([email protected],127.0.0.1): no passwd file: username_format=philip.steenland /etc/virtual/hypoplaza.nl/passwd
Mar 7 14:45:53 server dovecot: imap-login: Disconnected: user=<[email protected]>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured

Is it save to reinstall dovecot? I'm using the custombuild functions

I hope someone can help me.

////////////////////////

the config file i used:


## Dovecot 1.1 configuration file

protocols = imap imaps pop3 pop3s

#ssl_cert_file = /etc/exim.cert
#ssl_key_file = /etc/exim.key
ssl_cert_file = /etc/httpd/conf/ssl.crt/server.crt
ssl_key_file = /etc/httpd/conf/ssl.key/server.key


disable_plaintext_auth = no

##
## Login processes
##

#login_chroot = yes

login_user = dovecot
login_processes_count = 16

login_greeting = Dovecot DA ready.

##
## Mail processes
##

verbose_proctitle = yes

first_valid_uid = 500
last_valid_uid = 0


mail_access_groups = mail

#mail_debug = no

#default_mail_env = maildir:~/Maildir
mail_location = maildir:~/Maildir

# Like mailbox_check_interval, but used for IDLE command.
#mailbox_idle_check_interval = 30

# Copy mail to another folders using hard links. This is much faster than
# actually copying the file. This is problematic only if something modifies
# the mail in one folder but doesn't want it modified in the others. I don't
# know any MUA which would modify mail files directly. IMAP protocol also
# requires that the mails don't change, so it would be problematic in any case.
# If you care about performance, enable it.
#maildir_copy_with_hardlinks = no

# umask to use for mail files and directories
umask = 0007

# Set max. process size in megabytes. Most of the memory goes to mmap()ing
# files, so it shouldn't harm much even if this limit is set pretty high.
#mail_process_size = 256

# Log prefix for mail processes. See doc/variables.txt for list of possible
# variables you can use.
#mail_log_prefix = "%Us(%u): "

##
## IMAP specific settings
##

protocol imap {

# Maximum IMAP command line length in bytes. Some clients generate very long
# command lines with huge mailboxes, so you may need to raise this if you get
# "Too long argument" or "IMAP command line too large" errors often.
#imap_max_line_length = 65536

# Send IMAP capabilities in greeting message. This makes it unnecessary for
# clients to request it with CAPABILITY command, so it saves one round-trip.
# Many clients however don't understand it and ask the CAPABILITY anyway.
#login_greeting_capability = no

# Workarounds for various client bugs:
# delay-newmail:
# Send EXISTS/RECENT new mail notifications only when replying to NOOP
# and CHECK commands. Some clients ignore them otherwise, for example
# OSX Mail. Outlook Express breaks more badly though, without this it
# may show user "Message no longer in server" errors. Note that OE6 still
# breaks even with this workaround if synchronization is set to
# "Headers Only".
# outlook-idle:
# Outlook and Outlook Express never abort IDLE command, so if no mail
# arrives in half a hour, Dovecot closes the connection. This is still
# fine, except Outlook doesn't connect back so you don't see if new mail
# arrives.
# netscape-eoh:
# Netscape 4.x breaks if message headers don't end with the empty "end of
# headers" line. Normally all messages have this, but setting this
# workaround makes sure that Netscape never breaks by adding the line if
# it doesn't exist. This is done only for FETCH BODY[HEADER.FIELDS..]
# commands. Note that RFC says this shouldn't be done.
# tb-extra-mailbox-sep:
# With mbox storage a mailbox can contain either mails or submailboxes,
# but not both. Thunderbird separates these two by forcing server to
# accept '/' suffix in mailbox names in subscriptions list.
#imap_client_workarounds = outlook-idle
}

##
## POP3 specific settings
##

protocol pop3 {

# Don't try to set mails non-recent or seen with POP3 sessions. This is
# mostly intended to reduce disk I/O. With maildir it doesn't move files
# from new/ to cur/, with mbox it doesn't write Status-header.
#pop3_no_flag_updates = no

# Support LAST command which exists in old POP3 specs, but has been removed
# from new ones. Some clients still wish to use this though. Enabling this
# makes RSET command clear all \Seen flags from messages.
#pop3_enable_last = no

# POP3 UIDL format to use. You can use following variables:
#
# %v - Mailbox UIDVALIDITY
# %u - Mail UID
# %m - MD5 sum of the mailbox headers in hex (mbox only)
# %f - filename (maildir only)
#
# If you want UIDL compatibility with other POP3 servers, use:
# UW's ipop3d : %08Xv%08Xu
# Courier version 0 : %f
# Courier version 1 : %u
# Courier version 2 : %v-%u
# Cyrus (<= 2.1.3) : %u
# Cyrus (>= 2.1.4) : %v.%u
#
# Note that Outlook 2003 seems to have problems with %v.%u format which is
# Dovecot's default, so if you're building a new server it would be a good
# idea to change this. %08Xu%08Xv should be pretty fail-safe.

#pop3_uidl_format = %v.%u
pop3_uidl_format = %08Xu%08Xv

# POP3 logout format string:
# %t - number of TOP commands
# %T - number of bytes sent to client as a result of TOP command
# %r - number of RETR commands
# %R - number of bytes sent to client as a result of RETR command
# %d - number of deleted messages
# %m - number of messages (before deletion)
# %s - mailbox size in bytes (before deletion)
#pop3_logout_format = top=%t/%T, retr=%r/%R, del=%d/%m, size=%s

# Support for dynamically loadable modules.
#mail_use_modules = no
#mail_modules = /usr/lib/dovecot/pop3

# Workarounds for various client bugs:
# outlook-no-nuls:
# Outlook and Outlook Express hang if mails contain NUL characters.
# This setting replaces them with 0x80 character.
# oe-ns-eoh:
# Outlook Express and Netscape Mail breaks if end of headers-line is
# missing. This option simply sends it if it's missing.
#pop3_client_workarounds =
}

##
## Authentication processes
##

# Set max. process size in megabytes.
#auth_process_size = 256

# Authentication cache size in kilobytes.
auth_cache_size = 0
# Time to live in seconds for cached data. After this many seconds a cached
# record is forced out of cache.
#auth_cache_ttl = 3600

# List of allowed characters in username. If the user-given username contains
# a character not listed in here, the login automatically fails. This is just
# an extra check to make sure user can't exploit any potential quote escaping
# vulnerabilities with SQL/LDAP databases. If you want to allow all characters,
# set this value to empty.
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&

# More verbose logging. Useful for figuring out why authentication isn't
# working.
auth_verbose = yes

# Even more verbose logging for debugging purposes. Shows for example SQL
# queries.
#auth_debug = no

# Maximum number of dovecot-auth worker processes. They're used to execute
# blocking passdb and userdb queries (eg. MySQL and PAM). They're
# automatically created and destroyed as needed.
#auth_worker_max_count = 30

auth default {
mechanisms = plain

#FreeBSD may require this instead of 'passdb shadow'
passdb passwd {
}

#passdb shadow {
#}

passdb passwd-file {
args = username_format=%n /etc/virtual/%d/passwd
}

userdb passwd {
}

userdb passwd-file {
args = username_format=%n /etc/virtual/%d/passwd
}


# User to use for the process. This user needs access to only user and
# password databases, nothing else. Only shadow and pam authentication
# requires roots, so use something else if possible. Note that passwd
# authentication with BSDs internally accesses shadow files, which also
# requires roots. Note that this user is NOT used to access mails.
# That user is specified by userdb above.
user = root

# Number of authentication processes to create
#count = 1
}
 
Problem solved. It took me some time...

passdb passwd-file {
args = username_format=%n /etc/virtual/%d/passwd
}


userdb passwd-file {
args = username_format=%n /etc/virtual/%d/passwd

changed in

passdb passwd-file {
args = /etc/virtual/%d/passwd
}


userdb passwd-file {
args = /etc/virtual/%d/passwd
 
Glad to see it all worked out for you; I have no idea why changes to exim.conf weren't all automatic; they should have been.

As you've already noticed by now, space in /var isn't the issue; in fact you'll clear up a lot of space in /var once you delete the old mailboxes. The Maildir structure used by Dovecot uses a lot of space in /home, and a byproduct is that if you have quotas turned on in your /home partition your users may now be affected by low quotas if they weren't previously.

Speed of the conversion isn't really affected by processor speed, or even system load, except insofar as system load affects disk read/write. Disk read/write is the major limiter in the conversion; it helps if you have separate /var and /home partitions on separate drives.

Years ago, on linux, Maildir almost required the ReiserFS system, as the ext3 file system didn't have enough blocks available for many thousands of small files. But on todays large drives that's never been a problem for us.

If I'd seen this post sooner I would have said more like go out for supper; I be it took a bit longer than just a drink :).

Please let us know how long the conversion took.

Thanks.

Jeff
 
Hey Philip,

Part of the problem you saw (after you fixed other things) was from having Dovecot 1.0.x installed and using a Dovecot 1.1 config file... Obviously you see there are some compatibility issues with the two.

Just wanted to let you know...

David
 
hello skruf, No i installed dovecot 1.1.11. So i thought i needed also the config file of 1.1. There is simply no difference between the two. Also the lines I changed were the same in the config of 1.0

Thank you jlasman for your comments. The conversion took only 30 min tops. For the 10g of email. So that was not the problem. To get it working? that took my whole saturday.

but afterall I am very happy with the results. Dovecot is nice and fast. Secondly I learned some new stuff about freebsd/directadmin.
 
Hey,

hello skruf, No i installed dovecot 1.1.11. So i thought i needed also the config file of 1.1.

Well, according to your post you had 1.0.13 installed with a 1.1 conf...


After the conversion dovecot was not started i needed to add a line in rc.d/rc.conf with dovecot_enable = "ON" and i needed to create a config file in /usr/local/etc/ named dovecot.conf, i used the one below.

after that it started, but i can only login with my admin account, not with my virtual accounts

Mar 7 14:45:37 server dovecot: Dovecot v1.0.13 starting up

////////////////////////

the config file i used:

## Dovecot 1.1 configuration file

As best as I can tell from your post, as noted above, you had Dovecot 1.0.13 starting up and you show you were using a Dovecot 1.1 config file...

This is from the Dovecot wiki...

Upgrading Dovecot v1.0 to v1.1

•passwd-file: If you use %d in args, it no longer means that domain isn't looked up from the passwd-file. You'll need to add username_format=%n prefix to args (e.g. args = username_format=%n /etc/virtual.%d).

That's what I was making note of... The servers we're running with Dovecot 1.1 all have the passwd-file changes mentioned above.

From what I understand, a 1.0 conf file will work in 1.1 but, a 1.1 conf file will not work in 1.0..

Of course, I may not really understand all this!

David
 
Back
Top