Imap Proxy
IMAP Proxy jest cacheującym serwerem proxy IMAP przeznaczonym do użycia z klientami webmail, które nie potrafią utrzymywać stałych połączeń do serwera IMAP.
IMAP Proxy umieszcza się pomiędzy serwerem webmail i serwerem IMAP. Przyjmuje on połączenia od serwera webmail dla każdego klienta i przekazuje je do właściwego serwera IMAP. Kiedy klient webmail rozłączy się, IMAP Proxy pozostawia otwarte połączenie przez określony czas i kiedy webmail znów się połączy zostaje użyte istniejące już połączenie.
IMAP Proxy jest bardzo lekkim daemonem napisanym w C z użyciem wątków POSIX. Kompiluje się i działa na większości systemów UNIXowych i jest dostępny w prekompilowanej wersji dla wielu dystrybucji Linuxa, jak np. Debian, Ubuntu, Gentoo i Fedora.
IMAP Proxy jest wolnym oprogramowaniem, na licencji GNU GPL.
IMAP Proxy został napisany w 2002 roku przez Dave McMurtrie. W 2010 roku został zaadoptowany przez zespół SquirrelMail.
Postanowiliśmy zastosować IMAP Proxy aby poprawić wydajność webmaila opartego na Horde/IMP. Kompilacja, instalacja i konfiguracja IMAP Proxy nie przysparza problemów nawet na Solarisie, poniżej znajduje się zapis sesji oraz zawartość pliku konfiguracyjnego. Skrypt w załączeniu.
soft@hydra:~/imapproxy% ./drf_imapproxy-1.2.7_conf cc: Sun C 5.9 SunOS_sparc Patch 124867-01 2007/07/12 usage: cc [ options] files. Use 'cc -flags' for details PATH=/usr/local/bin:/usr/bin:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/ucb CFLAGS=-fast CPPFLAGS=-I/usr/local/include CXXFLAGS=-fast LDFLAGS=-L/usr/local/lib -R/usr/local/lib ============================================= dmake clean [y|n] ? n
Konfiguracja:
configure [y|n] ? y checking whether dmake sets $(MAKE)... yes checking for gcc... cc checking for C compiler default output file name... a.out checking whether the C compiler works... yes ... configure: creating ./config.status config.status: creating Makefile config.status: creating config.h config.status: executing default commands =============================================
Kompilacja:
dmake [y|n] ? y cc -fast -I/usr/local/include -I/usr/local/ssl/include -fast -I. -I./include -c -o src/icc.o src/icc.c cc: Warning: -xarch=native has been explicitly specified, or implicitly specified by a macro option, -xarch=native on this architecture implies -xarch=sparcvis2 which generates code that does not run on pre UltraSPARC III processors ... cc -o bin/pimpstat ./src/pimpstat.o ./src/config.o -lcurses Compilation successful
Imap Proxy nie posiada zestawu testów, więc skoro się skompilował, to można zainstalować.
Konfiguracja programu jest prosta i nie powinna stwarzać problemu nawet niezaawansowanym administratorom, trzeba utworzyć plik /etc/imapproxy.conf
lub wskazać właściwy w opcjach przy uruchomieniu demona in.impapproxyd
.
## imapproxy.conf ## server_hostname imap.server.tld #connect_retries 10 #connect_delay 5 cache_size 1024 listen_port 143 listen_address 127.0.0.1 server_port 143 cache_expiration_time 300 proc_username imappr proc_groupname imappr stat_filename /var/run/pimpstats protocol_log_filename /var/log/imapproxy.log syslog_facility LOG_MAIL send_tcp_keepalives no enable_select_cache no foreground_mode no force_tls no enable_admin_commands no
Mój plik konfiguracyjny opiera się na wartościach domyślnych, zmieniłem tylko limit połączeń (cache_size
) i adres serwera (server
). Opcje konfiguracyjne opisane są w pliku README dostarczanym w dystrybucji/źródłach.
Po uruchomieniu proponuję sprawdzić czy IMAP Proxy słucha na wybranym porcie:
telnet localhost 143 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ LOGIN-REFERRALS ID ENABLE AUTH=LOGIN XIMAPPROXY] Dovecot ready.
Widać, że jest rozszerzenie XIMAPPROXY, a pod spodem widać Dovecot ready
od właściwego IMAPa.
Jeśli proxy ma chodzić na tym samym serwerze co IMAP, to musimy uruchomić serwer IMAP na innym porcie albo proxy. Osobiście IMAPa bym zostawił na domyślnych portach, a zmienił listen_port
np. na 1143 w IMAP Proxy i przekonfigurował webmaila. To spowoduje, że normalne klienty IMAP (które robią stałe połączenia) będą się łączyć bezpośrednio do serwera IMAP a webmail będzie korzystał z proxy.