imap-login: Fatal: pipe() failed: Too many open files

Leander Schäfer info at netocean.de
Mon Jan 26 00:50:11 UTC 2015


Hi

I keep on getting errors and can't connect/login to Dovecot. I did my 
research but unfortunately without success. It is for sure not ulimit 
because ulimit is set to unlimited per default already. Still , it 
complains about "Too many open files" but this is a test system and the 
service dovecot and postfix have just been started. No one except me is 
testing on this system. This is very weired ;/


root at WM-01 [~]$ service dovecot stop; service postfix stop ; echo "" > 
/var/log/maillog ; echo "" > /var/log/slapd.log ; service postfix start 
; service dovecot start
Stopping dovecot.
Waiting for PIDS: 3245.
postfix/postfix-script: stopping the Postfix mail system
postfix/postfix-script: starting the Postfix mail system
Starting dovecot.

root at WM-01 [~]$ telnet 127.0.0.1 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

root at WM-01 [~]$ cat /var/log/mail
Jan 26 01:39:12 WM-01 dovecot: imap-login: Fatal: pipe() failed: Too 
many open files
Jan 26 01:39:12 WM-01 dovecot: master: Error: service(imap-login): 
command startup failed, throttling for 4 secs



If I uncoment port = 0 in POP and IMAP then it looks even worse then 
above. Telnet is not even closed by remote host and three of the "Too 
many open files" errors are showing up in maillog:



root at WM-01 [~]$ telnet 127.0.0.1 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.
root at WM-01 [~]$ cat /var/log/maillog

Jan 26 01:45:19 WM-01 postfix/postfix-script[60560]: starting the 
Postfix mail system
Jan 26 01:45:19 WM-01 postfix/master[60562]: daemon started -- version 
1.0, configuration /usr/local/etc/postfix
Jan 26 01:45:19 WM-01 dovecot: master: Dovecot v2.2.15 starting up for 
imap, pop3, lmtp
Jan 26 01:45:24 WM-01 dovecot: imap-login: Error: socket(login) failed: 
Too many open files
Jan 26 01:45:24 WM-01 dovecot: imap-login: Error: auth: connect(login) 
failed: Too many open files
Jan 26 01:45:24 WM-01 dovecot: imap-login: Error: net_accept() failed: 
Too many open files
root at WM-01 [~]$






Does anyone have an idea what could be wrong here? I attached the 
relevant configuration below. I use OpenLDAP as backend.
Please let me know if you need more information. Thank you very much.

Best Regards,
Leander









# ========================== dovecot -n ============================== #


# 2.2.15: /usr/local/etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.6 (3e924b1b6c5c+)
# OS: FreeBSD 10.1-RELEASE amd64  ufs
auth_debug = yes
auth_debug_passwords = yes
auth_failure_delay = 3 secs
auth_mechanisms = plain login
auth_verbose = yes
auth_verbose_passwords = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
login_greeting = Welcome to Mail Server.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k
mail_debug = yes
mail_gid = vmail
mail_location = maildir:/var/mail/%d/%n
mail_plugins = quota expire mail_log notify
mail_privileged_group = mail
mail_temp_dir = /tmp/Dovecot
mail_uid = vmail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character vacation subaddress comparator-i;ascii-numeric 
relational regex imap4flags copy include variables body enotify 
environment mailbox date ihave duplicate
namespace inbox {
   inbox = yes
   location =
   mailbox Drafts {
     special_use = \Drafts
   }
   mailbox Junk {
     special_use = \Junk
   }
   mailbox Sent {
     special_use = \Sent
   }
   mailbox "Sent Messages" {
     special_use = \Sent
   }
   mailbox Trash {
     special_use = \Trash
   }
   prefix =
}
passdb {
   args = /usr/local/etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
plugin {
   expire = Trash
   mail_log_events = delete undelete expunge copy mailbox_delete 
mailbox_rename
   mail_log_fields = uid box msgid size
   quota = maildir:User quota
   quota_exceeded_message = Storage quota for this account has been 
exceeded, please try again later.
   quota_rule = *:storage=1G
   quota_rule2 = Trash:storage=+30%%
   quota_rule3 = Sent:storage=+30%%
   quota_warning = storage=90%% quota-warning 90 %u
   quota_warning2 = storage=75%% quota-warning 75 %u
}
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
postmaster_address = info at netocean.de
sendmail_path = /usr/local/sbin/sendmail
service auth {
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
   unix_listener auth-userdb {
     group = vmail
     mode = 0600
     user = vmail
   }
}
service imap-login {
   inet_listener imaps {
     port = 0
   }
}
service lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0660
     user = postfix
   }
   user = vmail
}
service pop3-login {
   inet_listener pop3s {
     port = 0
   }
}
service quota-warning {
   executable = script /usr/local/bin/quota-warning.sh
   unix_listener quota-warning {
     user = vmail
   }
   user = vmail
}
ssl = required
ssl_cert = </etc/ssl/RootCA/certs/192.168.50.101.pem
ssl_cipher_list = 
EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
ssl_key = </etc/ssl/RootCA/certs/192.168.50.101.key
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3
userdb {
   driver = prefetch
}
userdb {
   args = /usr/local/etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
verbose_ssl = yes
protocol lda {
   mail_plugins = sieve
}
protocol imap {
   mail_max_userip_connections = 3
   mail_plugins = imap_quota imap_zlib
}
protocol pop3 {
   mail_max_userip_connections = 3
}








# ======================== dovecot/conf.d/auth-ldap.conf.ext 
=================== #

passdb {
   driver = ldap

   # Path for LDAP configuration file, see 
example-config/dovecot-ldap.conf.ext
   args = /usr/local/etc/dovecot/dovecot-ldap.conf.ext
}

# "prefetch" user database means that the passdb already provided the
# needed information and there's no need to do a separate userdb lookup.
# <doc/wiki/UserDatabase.Prefetch.txt>
userdb {
   driver = prefetch
}

userdb {
   driver = ldap
   args = /usr/local/etc/dovecot/dovecot-ldap.conf.ext

   # Default fields can be used to specify defaults that LDAP may override
   #default_fields = home=/home/virtual/%u
}





# ======================== dovecot/dovecot-ldap.conf.ext 
=================== #

hosts = 127.0.0.1:389
dn = uid=dovecot,ou=systemuser,ou=mail,dc=MyDomain,dc=TLD
dnpass = TopSecret
tls = yes
tls_cert_file = /etc/ssl/RootCA/certs/192.168.50.101.pem
tls_key_file  = /etc/ssl/RootCA/certs/192.168.50.101.key
debug_level = -1
auth_bind = yes
ldap_version = 3
base = ou=accounts,ou=mail,dc=MyDomain,dc=TLD
scope = subtree
user_attrs = mailStorageDirectory=home, mailUidNumber=uid, 
mailGidNumber=gid, mailQuotaSize=quota_rule=*:bytes=%$, 
mailQuotaCount=quota_rule2
user_filter = (&(objectClass=mailAccount)(mailAddress=%u))
pass_attrs = mailAddress=user,mailPassword=password
pass_filter = 
(&(objectClass=mailAccount)(mailAccountStatus=active)(mailAddress=%u))
default_pass_scheme = SSHA





More information about the dovecot mailing list