(Polski) Imap Proxy

Sorry, this entry is only available in Polish. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

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.

You may also like...

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.