Dovecot IMAP proxy kasutamine
Sissejuhatus
Dovecot tarkvara sisaldab IMAP proxy funktsionaalsust.
Tööpõhimõte
Sarnaselt, nt HTTP või SMTP teenuste proksimisele, on võimalik ka IMAP teenuse proksimine, mis tähendab, et klienti ja teenuse vahel asub vahendaja. Sellisest asjakorraldusest võiks olla abil nt sellistel juhtudel
- ühe teenuspunkti st ip addressi ja pordi kaudu on ligipääsetavad erinevad reaalset teenust pakkuvad imap serverid
- ssl offload
- koormusjaotus (kasutajate postkastid st kasutajad on jagatud mitme backend serveri vahel nt tähestikuliselt)
____ ____ ____ | | klient-1 | | klient-2 | | klient-3 |____| |____| |____| ... internet .... __|_ eth0 - 10.10.10.1:993 -> 192.168.7.80:993 | | _____ eth1 - 192.168.7.1 |____| tulemüür | | ldap kataloog | |_____| | | | | --|-----------|---------------|-------------------------------|----------------|--------------|---- | | | | __|_ __|_ __|_ __|_ | | imap proxy | | server-1 (Dovecot) | | server-2 (Courier) | | server-3 (Courier) |____| 192.168.7.80:993 |____| 192.168.7.143:143 |____| 192.168.7.144:143 |____| 192.168.7.145:143
kus
- tulemüür toob avalikust võrgust liikluse imap proksile .7.80 aadressile port 993 kohale, spetsiifiliselt imapiga midagi ei tee
- proxy teeb ldap kataloogist kindlaks, kas pöörduv kasutaja on olemas ning millisele proxy serverile tema päringuid vahendada
- IMAP proxy puhul ei ole võimalik sõltuvalt pöördumisel kasutatud domeenimele erineva sisuga teenuse pakkumine (erinevalt nn Name based HTTP virtual hostimisest).
Tavaliselt on iga kasutaja kontol sobivas atribuudis kirjas, milline backend server tema pöördumisi teenindab.
Lisaks on süsteemi juurutamisel vaja otsustada, kuidas kasutaja autentitakse, tavaliselt tehakse valik kahe viisi vahel
- imap proxy autendib kasutaja ning imap proxy ja backend server vahel toimub suhtlemine nn master kasutajana
- imap proxy ei autendi kastuajat, ainult kontrollib kasutaja olemasolu ning millisele backendile tegelemist vahendada; ja backend server tegeleb ise autentimisega
Tarkvara paigaldamine
Debian v. 7 Wheezy
Lisada süsteemi wheezy-backports tugi
# cat /etc/apt/sources.list deb http://ftp.ee.debian.org/debian/ wheezy-backports main contrib non-free deb-src http://ftp.ee.debian.org/debian/ wheezy-backports main contrib non-free
ning öelda (küsitakse sertifikaadi tekitamise kohta, vastata jaatavalt)
# apt-get -t wheezy-backports install dovecot-imapd dovecot-ldap
Debian v. 8 Jessie
Nt sobib suhteliselt minimalistliku IMAP toega Dovecot paigaldamiseks õelda
# apt-get install dovecot-imapd dovecot-ldap
Dovecot seadistamine
LDAP kasutamine
- /etc/dovecot/conf.d/10-auth.conf - kirjeldab, millise andmestiku vastu IMAP kasutaja autentimine toimub, antud juhul LDAP (viitab failile auth-ldap.conf.ext)
- /etc/dovecot/conf.d/auth-ldap.conf.ext - kirjeldab passdb ja userdb, antud juhul vastavalt LDAP ja static (viitab failile /etc/dovecot/dovecot-ldap.conf.ext)
- /etc/dovecot/dovecot-ldap.conf.ext - kirjeldab LDAP kataloogi asukoha ning kuidas LDAP päringuid teha ja vastuseid tõlgendada
Süsteemse LDAP kliendi seadistus
# cat /etc/ldap/ldap.conf ... REFERRALS off
Logimine ja debugimine
Seadistusfail /etc/dovecot/conf.d/10-logging.conf näitab, kuidas toimub logimine, süsteemi juurutamise ajaks sobib kasutada nt sellist sisu
# egrep -v "^$|^#" /etc/dovecot/conf.d/10-logging.conf debug_log_path = /var/tmp/dc.log auth_verbose = yes auth_verbose_passwords = yes auth_debug = yes auth_debug_passwords = yes mail_debug = yes
/etc/dovecot/conf.d/10-auth.conf
Seadistusfail /etc/dovecot/conf.d/10-auth.conf sisaldab ridu
disable_plaintext_auth = no auth_mechanisms = plain !include auth-ldap.conf.ext
kus
- TODO
/etc/dovecot/conf.d/auth-ldap.conf.ext
Seadistusfail /etc/dovecot/conf.d/auth-ldap.conf.ext sisaldab
passdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext }
kus
- passdb - IMAP autentimise jaoks oluline
- userdb - sektsioon puudub, kuna lokaalselt kirju laiali ei jagata
/etc/dovecot/dovecot-ldap.conf.ext
Seadistusfaili /etc/dovecot/dovecot-ldap.conf.ext abil tehakse kindlaks, kas kasutaja eksisteerib
# cat /etc/dovecot/dovecot-ldap.conf.ext hosts = 10.0.9.4 ldap_version = 3 auth_bind = no dn = postfix@imool.local dnpass = parool base = dc=imool,dc=local # pass_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl=514))) # pass_attrs = =proxy=y, =host=10.0.0.2, =password=, =nopassword=y, =user=imre pass_filter = (&(homePostalAddress=%u)(objectClass=person)(!(userAccountControl=514))) pass_attrs = =proxy=y, houseIdentifier=host, =password=, =nopassword=y, homePostalAddress=user
kus
- dn ja dnpass - ldap teenuskonto ligipääs
- base - ldap search base
- pass_filter - selle abil antakse ldap päringule sisu; saab paindlikult kirjeldada, milliste ldap objektide seas saab kasutaja esineda
- pass_attrs - selle abil võetakse päringu vastusest sisu; antud juhul on kõik proximisega seotud, osa neid parameetritest tuleb tavaliselt andmebaasist
pass_attrs
- =proxy=y - Dovecot töötab proxy režiimis
- =host=10.0.0.2 - kuhu proxitakse (tavaliselt tuleb see LDAP kataloogist)
- =password= - näidatakse tühi parool kuna antud juhul autendib backend ise
- =nopassword=y - seotud asjaoluga, et backend autendib
- =user=imre - häkk kui LDAP pole testimiseks kasutatav
Toodud näide illustreerib hästi parameetri paremal poolel kasutatavat süntaksit
=host=10.0.0.2
tuleks lugeda nii
- üldiselt esimesest võrdusmärgist vasakul olev LDAP kataloogi atribuudi nimi puudub (Dovecot dokumentatsioonis soovitatakse seda seal nähtamatuna ette kujutada), seega Dovecot ei saa on sisemist atribuuti 'host' LDAP abil väärtustada
- Dovecot kaustab enda atribuudi 'host' väärtusena teisest võrdusmärgist paremal olevat sõne '10.0.0.2'
/etc/dovecot/conf.d/10-mail.conf
Seadistusfail /etc/dovecot/conf.d/10-mail.conf näidab IMAP deemonile, kus asub failisüsteemis kasutaja postkast. Kuna seda pole vaja kasutada, siis selles failis sobib kasutada nt vaikeväärtusi.
Testimine
Testimiseks sobib kasutada imap käsurea utiliiti imtest, mida saab paigaldada nt paigaldades paketi
# apt-get install cyrus-clients
Kasutamiseks öelda
$ imtest -a imre.oolberg@imool.org -u imre.oolberg@imool.org -w xxx 10.1.1.50 S: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready. C: A01 AUTHENTICATE PLAIN aW1yZS5vb2xiZGJnQHRsbi5saWIuZWUAaW1yZS5vb2xiZXJnQHRsbyyuaWIuZWUAcmVtaXJlNWFvb0w= S: A01 OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] LOGIN Ok. Authenticated. ...
kus
- -a - autentimise kasutajanimi (kus võib olla ka master kasutaja)
- -u - autoriseerimise kasutajanimi
- -w - -a kasutaja parool, st vastavalt master või tavakasutaja
- imap proxy ip aadress
Toodud väljundis on näha kaks erinevat komplekti IMAP CAPABILITY sisu, vastvalt IMAP proksi ning IMAP backend. Reeglina peaks klient saama aru, et reaalselt tuleb tal kasutada viimast komplekti. Vahel see nii pole ja siis tuleb proksi seadistustes seda kohendada.
Märkused
TODO
Kasulikud lisamaterjalid
- TODO