Dovecot IMAP proxy kasutamine

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

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