Инсталиране на cyrus-imapd за работа със sendmail под FreeBSD (imap sendmail mail freebsd sasl ssl 8bit
Ключови думи:imap, sendmail, mail, freebsd, sasl, ssl, 8bit, (намерете свързани документи)
От: Малик Абдугалиев Дата: Mon, 24 Jul 2004 18:21:07 +0000 (UTC) Тема: Инсталиране на cyrus-imapd за работа със sendmail под FreeBSD
Инсталиране на cyrus-imapd за работа със sendmail под FreeBSD4.6
Задача: Инсталиране на SMTP, IMAP и POP3 сървъри.
Използвани са следните версии на софтуера: - cyrus-imapd-2.1.14 - cyrus-sasl-2.1.15 - sendmail-8.12.9
Изисква се също "The Berkeley DB package, revision 3", който е инсталиран от портове.
Ако имате нужда от SSL криптиране на IMAP и POP3 сесии, тогава ще трябва също да инсталирате OpenSSL (openssl-0.9.6g).
./configure --with-bdb-libdir=/usr/local/lib/ --with-bdb-incdir=/usr/local/include/db3 --with-openssl=/usr/local/ssl --disable-krb4 --disable-gssapi --with-saslauthd=/var/run make make install
Обърнете внимание на параметъра "--with-saslauthd=/var/run", той трябва да сочи към същата директория като подобен параметър, когато инсталирате Cirus-IMAPD. В тази папка ще бъде създаден сокет, чрез който тези два пакета ще взаимодействат.
Създайте cyrus потребител и cyrus група, които ще притежават работните файлове и папки на IMAP демона.
Можете да използвате други имена, но тогава трябва да ги посочите с опциите "--with-cyrus-user=" и "--with-cyrus-group=".
Стартирайте конфигуратора: ./configure --with-openssl=/usr/local/ssl --with-auth=unix --disable-krb --with-sasl=/usr/local --with-statedir=/var/run
Тук трябва да се направи едно интересно допълнение.Cyrus-IMAPD, в според някои RFC, не поддържа 8-битови символи в полето Тема, или по-скоро действа по доста оригинален начин - или отхвърля напълно такива букви, или приема, но в същото време заменя всички 8-битови знаци с буквата X. Тази съдба очаква и българските букви (по-добре просто да отрежете излишния бит, въпреки че можете да прочетете нещо, като използва кодирането KOI8-R, разбира се). За щастие, почти всички пощенски клиенти ще прекодират тези лоши 8-битови знаци в 7-битов набор от знаци, така че те няма да легнат под "ножа".
RFC със сигурност е добър и правилен, но винаги съм позволявал на пощенските клиенти да използват 8-битови знаци. Затова бих искал те да не се изрязват по никакъв начин от нашия Cyrus-IMAPD. За да направим това, правим малки промени в изходния код и прекомпилираме imapd и lmtpd. Намираме в изходната директория папката imap и файловете message.c и lmtpengine.c в нея. Ние правим резервни копия на тези файлове. Във всеки от тях търсим низа "(reject8bit)" (без кавички) и намираме нещо подобно:
if (reject8bit) /* Бяхме конфигурирани да отхвърляме цялата поща от този формуляр. */ r = IMAP_MESSAGE_CONTAINS8BIT; отивам до ph_error; > else /* Бяхме конфигурирани да изхвърляме цялата поща от този формуляр. */ c = 'X'; >
По подразбиране пакетът е инсталиран в папката /usr/cyrus.
Събиране на регистрационни файлове чрез syslogd
С възможността local6 можете да събирате имапд регистрационни файлове, а с възможността auth можете да събирате свързани със sasl регистрационни файлове.
Създайте конфигурационен файл /etc/imapd.conf, моят е: configdirectory: /var/imap partition-default: /var/spool/imap admins: cyrus sasl_pwcheck_method: saslauthd tls_cert_file: /var/imap/server.pem tls_key_file: /var /imap/server.pem re jject8bit: не maxmessagesize: 3000000 altnamespace: да
Параметърът "администратори" указва потребителя, от чието име ще се извършва работа по създаване/изтриване на пощенски кутии, задаване на ограничения и др. Тук можете да посочите няколко имена, разделени с интервали.
По-добре е да не включвате в този списък потребители, които ще работят с поща, т.к Параметърът "altnamespace: yes" не засяга потребителите, посочени в този списък.
Параметърът "altnamespace: yes" позволява на потребителите да създават своите папки, като посочат не пълния път, а пътя спрямо тяхната домашна директория, например, без този параметър, за да може потребителят vasya да създаде папката Drafts, пътят user.vasya.Drafts трябва да бъде посочен, докато когато използвате този параметър, е достатъчно да посочите името на папката и пълният път се добавя от сървъра себе си.
По същата причина пощенските агенти не могат да създават служебни папки от типа Изпратено, Кошче; те се опитват да ги създадат по-високо в дървото на директорията , където няма достъп. Разбира се, това се решава по друг начин - където в настройките на пощенските агенти можете да зададете същия път спрямо , по който се създават всички лични папки, но е по-добре да зададете този параметър и сървърът ще направи всичко.
Трябва също да спрете на параметъра "reject8bit: no". Като зададем този параметър на "не", казваме на системата да не отхвърля съобщения с 8-битови знаци в полето за тема, макар и с цената на загуба на четимостта на това поле. Ако сте направили промените, описани по-горе, тогава стойността на този параметър няма значение :-)
Параметърът "sasl_pwcheck_method: saslauthd" указва, че удостоверяването ще се извърши чрез демона saslauthd. Ако методът "auxprop" е указан в този параметър, тогава удостоверяването ще се извърши отспециална база данни (файл /etc/sasldb2), но тази опция изобщо не ме устройваше - паролите в този файл по някаква причина не се съхраняват криптирани.
Създайте работна директория, посочена от параметъра "configdirectory: /var/imap" и задайте необходимите права върху нея: cd /var mkdir imap chown cyrus.mail imap chmod 750 imap
POP3 демонът по подразбиране също използва настройките от файла /etc/imapd.conf. Има и глобален конфигурационен файл, cyrus.conf, но не съм го пипал.
По подразбиране демонът се намира в папката /usr/local/sbin/. Първо, можем да видим какви методи за удостоверяване поддържа нашият демон: cm user.tester localhost.elcat.kg> dm user.tester deletemailbox: Разрешението е отказано localhost.elcat.kg> sam user.tester cyrus c localhost.elcat.kg> dm потребител.тестер
С командата "dm user.tester" се опитваме да изтрием пощенската кутия, но нямаме достатъчно права за това. С командата "sam user.tester cyrus c" ние даваме на user cyrus правото на пощенската кутия user.tester.
Един ден никой не знае какво е причинило проблема - клиентите не можеха да проверят пощата през IMAP, получавайки грешка за неправилна парола. Регистрационните файлове съдържат грешки при четене на базата данни mailboxes.db. Файлът /var/imap/mailboxes.db съществуваше, но очевидно базата данни имаше грешки.
Неуспешен опит за възстановяване на бази данни: su -l cyrus -c '/usr/cyrus/bin/ctl_cyrusdb -rx'
Трябваше да пресъздам базата данни: su -l cyrus -c '/usr/cyrus/bin/ctl_cyrusdb -r'
За съжаление тази команда изчиства списъка с пощенски кутии в базата данни mailboxes.db. Благодарение на факта, че самите папки с писма остават. Прегледът на списъка с кутии от програмата cyradm не показва никакви.
Можете да възстановите базата данни, като нейният дъмп е създаден чрез командата: su -l cyrus -c'/usr/cyrus/bin/ctl_mboxlist -d' > /usr/cyrus/bin/dump
Както обикновено, започвате да мислите за създаване на резервно копие едва след загубата на необходимата информация :-) Нямах никакъв дъмп. Стартирах нова пощенска кутия, направих дъмп и следвайки този пример, направих свой собствен дъмп с всички кутии. Дъмпът изглежда така: user.djar_ default_djark_ lrswipcda_ user.djark.Drafts_default_djark_ lrswipcda_ user.djark.Sent.Items_ default_djark_ lrswipcda_ user.igor_ default_igor_ lrswipcda_ user.igor.Drafts _ default_igor_ lrs wipcda_ user.igor.Sent_ default_igor_ lrswipcda_ user.igor.Trash_default_igor_ lrswipcda_ user.isma_ default_isma_ lrswipcda_ user.isma.Drafts_ default_isma_ lrswipcda_ user.isma.Sent.Item s_ default_isma_ lrswipcda_
Където знакът "_" е раздел, т.е. tab е разделителят. Освен това всички папки на всички потребители трябва да бъдат описани.
Горният дъмп описва разрешенията по подразбиране. Това е достатъчно за нормална работа.