Dovecot "Cannot allocate memory" errorDovecot "Cannot allocate memory" error

Posted March 12th, 2008 in Email Servers

Installing the Dovecot IMAP/POP server onto a CentOS 5.1 x86_64 machine I was unable to log in via POP or IMAP and got the error message "imap-login: imap-login: error while loading shared libraries: libsepol.so.1: failed to map segment from shared object: Cannot allocate memory" in the mail log file when Dovecot started up. This post looks at the error messages reported and the solution. This issue will be the same on a Red Hat Enterprise Linux x86_64 installation as well; whether it affects the 32 bit version I do not know.

Installing Dovecot

I installed dovecot in the usual way:

yum install dovecot

and then started the dovecot service:

/etc/init.d/dovestart start

and enabled it to start automatically on boot:

chkconfig dovecot on

No response when logging in via POP

To test everything was working OK, I attempted to log into the POP server from the command line like so:

telnet localhost 110

I received the usual initialisation information:

Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

but then nothing happened. I knew something was up so checked the log files.

Checking the log files, error messages

I ran "tail -f /var/log/maillog" against the log files and watched what happened when I restarted dovecot, and discovered the following error messages:

Mar  6 09:19:33 www dovecot: Dovecot v1.0.rc15 starting up
Mar  6 09:19:34 www dovecot: Temporary failure in creating login processes, slowing down for now
Mar  6 09:19:34 www dovecot: imap-login: imap-login: error while loading shared libraries: libsepol.so.1: failed to map segment from shared object: Cannot allocate memory
Mar  6 09:19:34 www dovecot: pop3-login: pop3-login: error while loading shared libraries: libsepol.so.1: failed to map segment from shared object: Cannot allocate memory
Mar  6 09:19:34 www dovecot: child 2148 (login) returned error 127

Set the login_process_size variable

After a quick search on Google, I discovered that on 64 bit machines the login_process_size variable must be set to 64 in order for dovecot to work. The default setting is 32, which seems to work fine for 32 bit machines because I have a 32 bit installation of CentOS running dovecot and the default 32MB setting seems to be fine.

To change the setting, edit /etc/dovecot.conf and find the following section:

# Set max. process size in megabytes. If you don't use
# login_process_per_connection you might need to grow this.
#login_process_size = 32

Uncomment the #login_process_size and change it to 64 like so:

login_process_size = 64

Then it's simply a matter of restarting dovecot and everything should work fine:

/etc/init.d/dovecot restart

Problem Solved

After restarting dovecot with the above command, the output from the maillog looked like this:

Mar  6 09:20:33 www dovecot: Killed with signal 15
Mar  6 09:20:33 www dovecot: Dovecot v1.0.rc15 starting up

and there were no error messages. Connecting to the pop server from the command line now looks like this:

Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.

So that looks good as well. I was then succesfully able to log in as a valid user and download mail.

Comments

blog comments powered by Disqus