Cyrus kasutamine Gentooga
Sisukord
Sissejuhatus
Cyrus IMAP is named after Cyrus the Great (559 - 530 BC), founder of the Persian kingdom, and King of the World. Cyrus the great is remembered for his tolerance of the various minorities and generally benevolant leadership.
Antud näide on kirjutatud seletamaks kuidas gentoole ehitada cyruse abil võimas mysql ja openmailadminiga hallatav mailiserver.
cyrus kasutab üsna maildir laadset formaati kuid lisanud sellele andmebaasi muutes nii kõike tunduvalt kiiremaks. Seetõttu on cyrus üsna hea valik väga suurte emaili süsteemide tarbeks. Netis väidetakse ,et ka meie kodumaine hot.ee http://www.hot.ee (The Hotmail of Estonia) kasutab cyrust ning sellel hetkel 300,000 users.
Cyruse poolt toetatud protokollid on IMAP, IMAPS, POP3, POP3S, KPOP, LMTP
Süsteemi kirjeldus
Tähele tasub panna ,et cyruse juures postfix ise failide kettale kirjutamisega ei tegele. See on usaldatud täielikult cyrusele endale. Peale kirja saamist posfix kontrollib mysql tabelitest domeeni olemasolu ning annab selle edasi cyruse teenusele mis. Kontrollib taaskord kasutajat mysql'ist pam_mysql abil ning salvestab kirja enda modifitseeritud maildir++ laadsesse formaati ning samuti peab kõikide kirjade kohta enda sisemist andmebaasi. Cyrusel eelnevalt luua vastav mailbox mis on samanimeline kui kasutaja süsteemis. Automaatselt seda ei tehta.
Tarkvara install
emerge postfix emerge net-mail/cyrus-imapd emerge pam_mysql emerge cyrus-imap-admin
Lisaks vaja installida mysql juhul kui ei ole eraldiseisvat mysql serverit. Mysql install on kirjeldatud teises õpetuses.
rc-update add cyrus default rc-update add postfix default rc-update add saslauthd default
Cyruse seadistus
Kõik cyruse poolt starditavad teenused ja nende startimine tuleb defineerida failis cyrus.conf.
Näitekonfis stardime teenused imap, imaps, pop3 ja pop3s ning sieve.
/etc/cyrus.conf
# Standard standalone server configuration. START { recover cmd="ctl_cyrusdb -r" } SERVICES { imap cmd="imapd" listen="imap" prefork=5 imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100 pop3 cmd="pop3d" listen="pop3" prefork=25 maxchild=-1 pop3s cmd="pop3d -s" listen="pop3s" prefork=25 maxchild=-1 sieve cmd="timsieved" listen="192.168.10:sieve" prefork=0 lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0 } EVENTS { checkpoint cmd="ctl_cyrusdb -c" period=30 delprune cmd="ctl_deliver -E 3" period=1440 tlsprune cmd="tls_prune" period=1440 }
Kõigi teenuste täpsemaks häälestamiseks on fail imapd.conf
/etc/imapd.conf
Sellest toimib kaustade paikamääramine. Sertifikaatide seadistamine. Imap, pop3, sieve täpsem häälestus jpm.
configdirectory: /var/imap partition-default: /mail/spool/imap tls_ca_path: /etc/imap tls_cert_file: /etc/imap/mail.crt tls_key_file: /etc/imap/mail.key postmaster: postmaster sievedir: /mail/sieve sieve_maxscriptsize: 64 sieve_maxscripts: 5 sendmail: /usr/sbin/sendmail admins: cyrus allowanonymouslogin: no allowplaintext: yes autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 allowapop: no popminpoll: 0 sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN lmtp_overquota_perm_failure: no
Loome samuti kaustad /var/imap ja /mail/spool/imap
Cyruse seadistus mysql baasi kasutama
postfixi konf
main.cf
mailbox_transport = cyrus virtual_alias_domains = mysql:/etc/postfix/mydestination.mysql virtual_alias_maps = mysql:/etc/postfix/virtual.mysql sender_canonical_maps = mysql:/etc/postfix/canonical.mysql
mysql kasutamiseks failid
/etc/postfix/mydestination.mysql
mydestination.mysql
hosts = localhost user = database password = parool dbname = mail table = domains select_field = domain where_field = domain
/etc/postfix/virtual.mysql
virtual.mysql
hosts = localhost user = baas password = parool dbname = mail table = virtual select_field = dest where_field = address additional_conditions = and active = '1'
/etc/postfix/canonical.mysql
canonical.mysql
hosts = host user = baas password = parool dbname = mail table = user select_field = canonical where_field = mbox additional_conditions = and active = '1' limit 1
Mysql baasi seadistus
Loome baasi mail. Seadistame sellele kasutaja ning parooli.
Loome baasi mail tabelid. Järgneva info võib otse sql'is käivitada
-- -- Table structure for table `domains` -- DROP TABLE IF EXISTS `domains`; CREATE TABLE `domains` ( `ID` int(10) unsigned NOT NULL auto_increment, `domain` varchar(64) collate utf8_estonian_ci NOT NULL default , PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=1206 DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci; -- -- Table structure for table `user` -- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `mbox` varchar(16) collate utf8_estonian_ci NOT NULL default , `person` varchar(150) collate utf8_estonian_ci NOT NULL, `canonical` varchar(100) collate utf8_estonian_ci NOT NULL default , `password` varchar(40) collate utf8_estonian_ci NOT NULL default , `active` tinyint(1) NOT NULL default '0', `created` int(10) unsigned NOT NULL default '0', `last_login` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`mbox`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci; -- -- Table structure for table `virtual` -- DROP TABLE IF EXISTS `virtual`; CREATE TABLE `virtual` ( `address` varchar(255) collate utf8_estonian_ci NOT NULL default , `dest` text collate utf8_estonian_ci, `active` tinyint(1) NOT NULL default '1', PRIMARY KEY (`address`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_estonian_ci;
Pam häälestus mysql tarbeks
teeme imap pam konfiguratsiooni
nano /etc/pam.d/imap
#auth required pam_nologin.so #auth include system-auth #account include system-auth #session include system-auth auth sufficient pam_mysql.so user=mailedu passwd=parool host=localhost db=baas table=user usercolumn=mbox passwdcolumn=password crypt=1 sqlLog=0 account required pam_mysql.so user=mailedu passwd=parool host=localhost db=baas table=user usercolumn=mbox passwdcolumn=password crypt=1 sqlLog=0
Juhul kui pam autentimine mingil põhjusel tõrgubnvõb auto ja account ridade lõppu lisada verbose ,et saada rohkem infot /var/log/auth.log'i
Lisada võib samuti where=mailboxes.active=1 mis puhul disabletud kasutajate ligipääsu piiratakse.
Teeme loodud imap failist symlingid teistele pam failidele.
ln /etc/pam.d/imap /etc/pam.d/pop ln /etc/pam.d/imap /etc/pam.d/sieve ln /etc/pam.d/imap /etc/pam.d/smtp ln /etc/pam.d/imap /etc/pam.d/nntp
mkdir /var/lib/amavis
cyruse haldus käsurealt
Kõik cyruse tööd toimuvad cyradm utiliidi vahendusel
Serveri administraatoriks on kasutaja Cyrus. Selleks ,et saaks cyradm abil cyruse shelli kasutada on vaja esimesena seada cyrus kasutajale parool. muudame cyruse parooli ja testime selle toimimist
saslpasswd2 -c cyrus
Nüüd võib logida cyruse konsoolile.
cyradm -user cyrus -host 127.0.0.1
Nimekiri peamistest vajalikest cyruse käskudest
cm Loob mailbox'i dm kustutabmailbox exit väljumiseks cyradm'ist lm nimekiri mailbox'idest lq Näitab quota informatsiooni lqm Quota info etteantud mailboxi kohta renm Muudab mailboxi nime sq Quota seadistamiseks
Cyruses kasutajale mailboxi luues tuleb pidada meeles ,et see tuleb luua kujul user.kasutajanimi
näiteks cyrus.mart
cm user.mart
testimine
Loome test domeeni test.ee ja kasutaja mart
echo test | md5sum d8e8fca2dc0f896fd7cb4cb0031ba249 -
INSERT INTO `domains` VALUES (0,'test.ee') INSERT INTO `user` VALUES (0,'mart','mart metsast','mart@test.ee','d8e8fca2dc0f896fd7cb4cb0031ba249',1162296952,1189589660) INSERT INTO `virtual` VALUES (0,'test@test.ee','mart',1)
cyradm -user cyrus -host 127.0.0.1 cm cyrus.mart
emerge net-misc/netkit-telnetd
telnet 192.168.1.10 143 Trying 192.168.1.10... Connected to 192.168.1.10. Escape character is '^]'. * OK gentoo20070412 Cyrus IMAP4 v2.2.12-Gentoo server ready 1 LOGIN mart parool 1 OK User logged in
Testime mailisaatmist
Cyruse veebiadministreerimine
Kõigi puhul tuleks uurida mis kujul nad soovivad tabeleid ja vastavaid muudatusi läbiviia
http://openmailadmin.ossdl.de/
http://email.uoa.gr/projects/cyrusmaster/index.php
Openmailadmin vajab järgnevaid pakette gentool
emerge php emerge dev-php/PEAR-Log emerge dev-php/adodb
Vead ja nende prandamine
Logisse tekivad näiteks read.
Sep 3 03:43:43 mail lmtpunix[10604]: DBERROR db4: Logging region out of memory; you may need to increase its size Sep 3 03:43:43 mail lmtpunix[10604]: DBERROR: opening /var/imap/deliver.db: Cannot allocate memory Sep 3 03:43:43 mail lmtpunix[10604]: DBERROR: opening /var/imap/deliver.db: cyrusdb error Sep 3 03:43:43 mail lmtpunix[10604]: FATAL: lmtpd: unable to init duplicate delivery database Sep 3 03:43:43 mail master[5498]: service lmtpunix pid 10604 in READY state: terminated abnormally
Probleem on berkeleydb'ga ning parandada saab asja järgneva käsuga andes ette cyruse andme failide asukoha
db4.2_recover -v -h /var/imap/db