Jeden z moich serwerów poczty osiągnął ostatnio maksymalny limit połączeń IMAP i byłem zmuszony zwiększyć wartość login_max_processes_count. Jednakże po restarcie usługi pojawił się poniższy błąd:
IMAP/POP3 mail server: dovecotWarning: fd limit 1024 is lower than what Dovecot can use under full load (more than 1512). Either grow the limit or change login_max_processes_count and max_mail_processes settings
Po dłuższym zastanowieniu doszedłem do wniosku, że mowa chodzi o limit deskryptora pliku.
Wypadałoby więc go zwiększyć, aby to zrobić pomocna będzie komenda ulimit. Na początek sprawdźmy aktualną wartość:
#> ulimit -n
1024
Oznacza to, że nasz limit deskryptora pliku (maksymalna ilość plików, która może zostać otwarta jednocześnie) wynosi 1024.
Ok, jak to teraz ustawić podczas uruchamiania Dovecota? Jednym z wyjść jest podniesienie tej wartości w /etc/security/limits.conf oraz modyfikacja plików pam, ale to chyba nie jest zbyt poprawna metoda. Szybka analiza pliku inicjującego Dovecota (/etc/init.d/dovecot) pokazuje, że odwołuje się on do pliku /etc/default/dovecot (gdzie można ustawić dodatkowe parametry uruchomienia usługi).
Jeżeli więc plik /etc/default/dovecot istnieje dodajemy do niego poniższą linijkę (lub jeżeli nie istnieje tworzymy go i ustawiamy mu chmod +x)
ulimit -n 2048
To wszystko - po restarcie dovecota problem powinien zniknąć.