Erinevus lehekülje "Cyruse kasutamine Postfixi ja Debianiga" redaktsioonide vahel

Allikas: Kuutõrvaja
(Cyrus tarkvara uuendamine)
234. rida: 234. rida:
  
 
Need moodustatakse käivitamisel uuesti.
 
Need moodustatakse käivitamisel uuesti.
 +
 +
===Kasulikud lisamaterjalid===
 +
 +
* Tarkvara kodulehekülg - http://cyrusimap.web.cmu.edu/
 +
* IMAP protokolli kasutamise näited - http://bobpeers.com/technical/telnet_imap.php
 +
* apt-get install cyrus-docs-2.2 ja seejärel vaadata brauseriga file:///usr/share/doc/cyrus-doc-2.2/html/index.html

Redaktsioon: 12. juuli 2009, kell 10:24

Sissejuhatus

Postkastihalduse tarkvara Cyrus sisaldab muu hulgas selliseid komponente

  • haldusvahendid (cyradm programm)
  • imap server
  • pop3 server
  • testkliendid (IMAP serveri testklientprogramm imtest)

Cyrus tarkvaraga saab pealnäha sarnase tulemuse, so postkastide pidamise saavutada üsna mitmel erineval moel. Käesolev tekst kirjeldab järgmisete omadustega juhtumit

  • kõik Cyruse protsessid töötavad ühes ja samas operatsioonisüsteemi eksemplaris
  • Cyruse imap klientide andmed tulevad välisest PostgreSQL andmebaasist SASL ja omakorda PAM abil
  • Postfix kasutab PostgreSQL andmebaasi, millest saab teada millistele aadressidele tuleb teha local delivery Cyruse abil
  • Cyruse postkastidesse saabuvad kirjad Postfix MTA'st LMTP protokolli kasutamise teel
  • Cyruse postkastidele on ligipääs IMAP ja POP3 serverite kaudu, krüptitud ja krüptimata andmevahetust võimaldades

Sellisel moel käivitatud Cyruse kasutuselevõtmiseks tuleb sooritada näiteks selline tegevuste järgnevus

  • paigaldada vajalik hulk Cyrus'e komponent
  • valmistada ette PostgreSQL andmebaas
  • valmistada ette PAM komponent
  • valmistada ette SASL komponent
  • seadistada Cyrusele administratiivne kasutaja ning tekitada tavakasutajale postkast
  • seadistada Cyrus käima koos Postfixiga

Cyrus tarkvara paigaldamine

Cyrus'e paigaldamiseks tuleb öelda

 # apt-get install cyrus-pop3d-2.2 cyrus-imapd-2.2 cyrus-doc-2.2 cyrus-clients-2.2 cyrus-admin-2.2 libsasl2-modules libsasl2-2 sasl2-bin

Cyrus tarkvara seadistamine toimub peaasjalikult seadistusfaili /etc/imapd.conf muutmise teel. Selleks, et Cyrus kasutaks SASLi antud juhtumi jaoks sobival moel, peavad failis /etc/imapd.conf sisalduma read

 sasl_mech_list: PLAIN
 sasl_pwcheck_method: saslauthd

Cyrus käivitusskript on

 # /etc/init.d/cyrus2.2

Cyruse tööd kontrollivad lisaks olulised failid seadistusfailide kataloogist (ingl. k. configuration directory), vaikimisi /var/lib/cyrus

  • /var/lib/cyrus/proc - kataloogis asuvad teenust parasjagu kasutavate kasutajate protsessiinfo failid
  • /var/lib/cyrus/quota - kataloogis asuvad kasutajate kvootide määratlused
  • /var/lib/cyrus/user - kataloogis asuvad kasutajate .seen ja .sub failid
  • /var/lib/cyrus/mailboxes.db -
  • /var/lib/cyrus/deliver.db -
  • /var/lib/cyrus/tls_sessions.db -
  • /var/lib/cyrus/annotations.db -

PostgreSQL andmebaasi ettevalmistamine

PostgreSQL andmebaasi tabelis hoitakse Cyruse kasutajate autentimiseks vajalikke andmeid.

PAM komponendi ettevalmistamine

PostgreSQLi andmebaasi kasutamiseks peab paigaldama paketi üldotstarbelise paketi libpam-pgsql

 # apt-get install libpam-pgsql

PAM komponendi ettevalmistamine toimub failide /etc/pam.d/imap, /etc/pam.d/pop ning /etc/pam_pgsql.conf abil

 # cat /etc/pam.d/imap (sama ka failis /etc/pam.d/pop)
 auth        required    pam_pgsql.so 
 account     required    pam_pgsql.so
 password    required    pam_pgsql.so

ning

 # cat /etc/pam_pgsql.conf
 host = andmebaasi.hostname
 database = andmebaasinimi
 user = cyrus_auth
 password = cyrus_auth_parool
 table = skeeminimi.tabelinimi
 user_column = username
 pwd_column = passwd
 expired_column = expire_status
 newtok_column = newtok
 debug
 pw_type = md5

SASL komponendi ettevalmistamine

SASL kompoenendi seadistamine toimub faili /etc/default/saslauthd abil, antud juhtumil on oluline, et SASL deemon oleks käivitatav

 START=yes

ning et SASL töötaks vastu PAM'i

 MECHANISMS="pam"

Cyruse administratiivne kasutaja ja kasutajate haldus

Cyrus töö käigus kasutatakse mitmeid nö andmebaase

  • kirjade andmebaas - failisüsteemis salvestatakse iga kiri eraldi faili, vaikimisi asub see kataloogis /var/spool/cyrus/mail; igas postkasti kataloogis on lisaks kirjadele alati kolm faili, cyrus.cache, cyrus.index ja cyrus.header
  • postkastide andmebaas - failis /var/lib/cyrus/mailboxes.db on kirjas süsteemi Cyrus kasutajate ja nende postkastide andmebaas ning mida redigeeritakse cyradmin programmiga
  • duplikaatide andmebaas - failis /var/lib/cyrus/deliver.db on andmebaas, mida Cyrus kasutab topelt-sõnumite avastamiseks (nt kui saabub sama message id ja ümbriku väärtusega kiri mitu korda; käsuga '/usr/sbin/ctl_deliver -d' näeb selle baasi sisu)
  • Cyruse kasutajate andmebaas - antud juhul asub PostgreSQLi andmebaasis


Cyruse administratiivse kasutaja kasutajanimi on kirjas seadistusfailis /etc/imapd.conf, näiteks võiks selleks olla 'cyrus'

 admins: cyrus

Administratiivne kasutaja saab kasutada cyradmin programmi teistele kasutajatele Cyruse postkastide moodustamiseks. Enne kui kasutajana cyrus saab cyradmin programmi kasutada, peab olema see kasutaja PostgreSQL andmebaasi lisatud.

Postisüsteemi kasutaja moodustamiseks tuleb kasutaja administratiivse kasutajana cyrus moodustada esmalt sellele kasutajale postkast öeldes

 $ cyradmin --user cyrus localhost
 IMAP Password: 
 localhost.localdomain> cm user.mart
 localhost.localdomain> sq user.mart 200000
 localhost.localdomain> quit

ning lisaks tuleb kasutaja mart lisada ka PostgreSQL andmebaasi. Seejärel saab kasutaja mart üle IMAP protokolli süsteemi logida. Testimiseks sobib kasutada Cyrus tarkvaraga kaasa tulevat imap klienti imtest, näiteks selliselt

 $ imtest -a mart -u mart localhost -w mardiparool
 S: * OK smtp2a Cyrus IMAP4 v2.2.13-Debian-2.2.13-14+b3 server ready
 C: C01 CAPABILITY
 S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+ NAMESPACE UIDPLUS ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT     THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE IDLE
 S: C01 OK Completed
 C: L01 LOGIN mart {7}
 S: + go ahead
 C: <omitted>
 S: L01 OK User logged in
 Authenticated.
 Security strength factor: 0
 . list "" "*"
 * LIST (\HasChildren) "." "INBOX"
 . OK Completed (0.000 secs 6 calls)
 . logout
 * BYE LOGOUT received
 . OK Completed
 Connection closed.

Postkastide haldamise üheks eesmärgiks on seada õigused, millised kasutajad saavad kasutada milliseid postkaste. Vaikimisi on ainult kasutajal endal piiranguteta ligipääs enda postkastile ja seal all olevatele kataloogidele. Cyrus võimaldab ühe kasutaja postkastile või selle mõnele kataloogile lisaks tekitada ligipääsu teise kasuja jaoks. Nt selleks, et kasutaja mart postikasti kataloogi user.mart.bugtraq näeks ka kasutaja priit tuleb öelda cyruse administraatoril

 localhost.localdomain> sam user.mart priit lr
 localhost.localdomain> lam user.mart
 mart lrswipcda
 priit lr

Ühe kasutaja postkastile teisele kasutaja jaoks ligipääsu võimaldamise abil saab moodustada nn shared foldereid ja bulletin board'e, mis sisuliselt on nö pseudokasutajale kuuluvad postkastid. Tavaliselt on vastavatele postkastidele antud lugemisõigus mitmetele kasutajatele ning mõnele lisaks rohkem õigusi, nt seal kirjade või sinna kirjade kopeerimine kustutamine. Näiteks võiks sellise shared folderi kasutamine toimuda eesmärgiga, et nii ei pea iga üksik kasutaja oma personaalsele aadressile tellima listi kirju. Et kasutaja saaks ligi teise kasutaja välja jagatud postkasti kataloogile tuleb tal enda postiprogrammi abil sinna ennast subskribeerida.

2008 aasta kontekstis võib tunduda selline IMAP tarkvara kasutamine grupitöövahendina suhteliselt kohmakas, kuid teatud tingimustel võib olla see ka jätkuvalt asjakohane.

Kirjade automaatne jagamine postkastidesse

Cyrus tarkvara koosseisu kuuluv sieve (ingk. k. sõel) võimaldab nt kirja päise ridade alusel korraldada kirjade salvestamist kasutaja postkasti erinevatesse kataloogidesse (ingl. k. folder).

Selleks tuleb esmalt moodustada tekstifail, nt

 $ cat /var/spool/sieve/m/mart/default
 require "fileinto";
       if header :contains "List-Id" "debian-mirrors.lists.debian.org" {
               fileinto "INBOX.d-m";}
       elsif header :contains "To" "mart.kask@loomaaed.tartu.ee" {
               fileinto "INBOX.@loomaaed.tartu.ee";}
       else {
               fileinto "INBOX";}

Antud juhul ütleb sieve fail, et

  • kirjad, mille päises List-Id: rida sisaldab väärtust debian-mirrors.lists.debian.org tuleb kopeerida kataloogi d-m
  • kirjad, mille päises To: rida sisaldab väärtust mart.kast@loomaaed.ee tuleb kopeerida kataloogi @loomaaed.ee
  • ülejäänud kirjad kopeeritakse lihtsalt inboxi

Tööks tuleb tekstifaili alusel moodustada nn byte-code fail öeldes

 $ /usr/lib/cyrus/bin/sievec /var/spool/sieve/m/mart/default /var/spool/sieve/m/mart/defaultbc

Subject kasutamisel tuleb arvestada, et nn täpitähtede puhul on subject kodeeritud.

Cyruse seadistamine käima koos Postfixiga

Selleks, et Postfix annaks LMTP (Local Mail Transport Protocol) protokolli abil kirjad edasi Cyrusele sobib kasutada Postfixi transport'i. Transport moodustatakse tekitades tekstifail

 # cat /etc/postfix/transport
 loomaaed.tartu.ee lmtp:unix:/var/run/cyrus/socket/lmtp

ning öeldes

 # postmap /etc/postfix/transport

mille tulemusena tekib Berkeley DB andmebaasi formaadis fail

 /etc/postfix/transport.db

Moodustatud transporti kasutamiseks peab /etc/postfix/main.cf failis sisalduma rida

 transport_maps = hash:/etc/postfix/transport

Kusjuures, selleks, et kasutaja postfix saaks sellesse unixi soketisse kirjutada, peab nt lisama postfix kasutaja gruppi mail ning nt kontrollima /etc/postfix/master.conf failis, et lmtp juures ei oleks chroot kirjeldatud.

Kui Cyruse kasutajate andmed on kirjas nt PostgreSQL andmebaasis, siis tuleb lisaks paigaldada postfix-pgsql pakett, mille lisamisel tehakse sissekanne faili /etc/postfix/dynamicmaps.cf ning lisada seadistusfaili main.cf rida

 virtual_alias_maps = pgsql:/etc/postfix/cyrus.cf
 relay_domains = loomaaed.tartu.ee

kus /etc/postfix/cyrus.cf sisu on

 user = cyrus_auth
 password = parool
 hosts = baas.loomaaed.tartu.ee
 dbname = postisysteem
 table = loomaaed.cyrus_auth
 select_field = rcpt
 where_field = alias

Cyrus tarkvara uuendamine

Cyrus tarkvara järgmised versioonid sisaldavad reeglina vigade parandusi ja uut funktsionaalsust kusjuures tavaliselt säilib olemasolev funktsionaalsus. Reeglina Cyrus tarkvara uuendamisel kasutajate andmed säilitatakse asendades Cyruse nn mootori uuema versiooni vastu. Üldiselt tuleb vanast versioonist võtta kaasa sellised andmed

  • andmete partitsioonile vastav kataloog (nt 'partition-default: /srv/cyrus/mail'), st kasutajate kirjad
  • uusi seadistusfaile tuleb kohendada olemasolevate alusel, /etc/cyrus.conf ja /etc/imapd.conf
  • andmed kasutajate autoriseerimiseks, pam seadistused /etc/pam_pgsql.conf, /etc/pam.d/{imap,pop}, andmebaas kasutajate nimede/paroolidega
  • postkastide andmebaas, /var/lib/cyrus/mailboxes.db
  • kasutajate quotad, /var/lib/cyrus/quota
  • kasutajate sieve'id, /var/spool/sieve
  • kasutajate postkastide olekud, loetud/lugemata kirjade eristused jms, /var/lib/cyrus/user, nn *.seen andmebaasid

Uuenduse tegemisel tuleb tutvuda paketis cyrus-doc-* paketist upgrade'i juhendiga. Tavaliselt juhitakse seal tähelepanu lisaks muudele asjaoludele sellele, et andmebaaside (mailboxes.db, *.seen) jt formaadid oleksid sobivad. Vajadusel saab neid baase teisendada, nt

 $ /usr/sbin/cvt_cyrusdb /var/lib/cyrus/mailboxes.db skiplist /var/lib/cyrus/mailboxes.db-berkeley berkeley

teisendab skiplist foraadis baasi berkeley formaati.

Lisaks, tundub, et kui uude süsteemid kopeerida mailboxes.db, siis samal ajal tuleks kustutada sellised failid, samal ajal peab Cyrus seisma

 $ ls -l annotations.db db/* db.backup*/* deliver.db tls_sessions.db

Need moodustatakse käivitamisel uuesti.

Kasulikud lisamaterjalid