Segfaults in imapproxy durch falsche/fehlende Konfiguration

In den letzten Tagen hatte ich ein bisschen mit imapproxy zu tun. Im Original von den SquirrelMail-Entwicklern entwickelt, stellt imapproxy eine Art Proxy für das Handling von IMAP-Verbindungen zum jeweiligen IMAP-Backend bereit. So muss die Webanwendung, welche nicht in der Lage ist, Verbindungen lange geöffnet zu halten, nicht immer wieder Netzwerkumläufe anstellen, die je nach Situation viel Zeit kosten können. Eine Art persistente Verbindung für IMAP.

imapproxy ist genau so alte und zurückgelassene Software wie SquirrelMail selbst. Das Interface alt, die Codebase veraltet, letzte Aktualisierung der Gnade Ende 2021 um PHP 8-Kompatibilität herzustellen.

Derzeit erhält man imapproxy noch in den Debian- und Ubuntu-Repositories und der Code ist unter salsa.debian.org zu erhalten. Die offizielle imapproxy.org-Seite ist nicht mehr erreichbar.

Bei der Erstellung einer Minimalkonfiguration ist mir direkt aufgefallen, dass es für die Konfiguration praktisch kein Errorhandling gibt. Das heißt, dass bei fehlenden, nicht-optionalen Optionen imapproxy generell einfach mit SIGSEGV aussteigt. Debugging-Tool der Wahl ist hierbei dann strace.

Daraufhin erarbeitete ich mir eine passende Minimalkonfiguration, ein Teilnehmer der Dovecot-Mailingliste empfahl ebenfalls eine solche:

server_hostname your.server.imap.domain.ltd
connect_retries 10
connect_delay 5
cache_size 36000
listen_port 1143
server_port 143
cache_expiration_time 300
proc_username nobody
proc_groupname nogroup
stat_filename /var/run/pimpstats
protocol_log_filename /var/log/imapproxy_protocol.log
syslog_facility LOG_MAIL
send_tcp_keepalives no
enable_select_cache no
foreground_mode yes
force_tls no
chroot_directory /var/lib/imapproxy/chroot
enable_admin_commands no

imapproxy kommt sicher hinter verschlossener Tür bei vielen Maildienst-Anbietern noch zum Einsatz und ist kaum ersetzbar (höchstens durch Nginx im seinem IMAP-Modus).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert