Этот раздел описывает запуск shell-скриптов и изменение конфигурационных файлов после запуска "configure" и "make ".
Создаются пользователь и группа для Cyrus-подсистемы. В этом документе приведены примеры с использованием пользователя "cyrus" и группы "mail", хотя они могут быть любые другие. Если будет использоваться имя пользователя отличное от "cyrus ", то оно должно быть задано прараметнром "--with-cyrus-user=" скрипта "configure". Если используемая группа отлична от "mail ", то она должна быть указанна в параметре "--with-cyrus-group=" скрипта "configure".
После того, как Вы залогинились под root'ом , можно ставить софт.
make install
Убедитесь, что Вы правильно задали параметр "--with-cyrus-prefix" (по умолчанию, "/usr/cyrus/bin").
Cyrus IMAP Server использует 4.3BSD syslog, который разделяет сообщения на уровни и категории. С помощью "man syslog" проверьте, количество аргументов функции "openlog() ". Если нет, замените файлы "syslogd" и "syslog.conf" файлами расположенными в директории "syslog ".
mv syslogd /etc/syslogd mv syslog.conf /etc/syslog.conf
Если Вы не скопируете файл "syslog/syslog.conf" в директорию "/etc", убедитесь, что поддерживается "local6.debug ". Файл должен включать такую строку:
local6.debug /var/log/imapd.log
Вероятнее всего, Вы захотите вести журнал сообщений от SASL, тогда должна быть такая строка:
auth.debug /var/log/auth.log
После установки и тестирования, Вы, возможно, захотите изменить компонент ".debug" на что-нибудь менее звучное. Создайте log-файлы:
touch /var/log/imapd.log /var/log/auth.log
Создйте файл "/etc/imapd.conf". Вот пример "imapd.conf " с минимальным количеством параметров:
configdirectory: /var/imap partition-default: /var/spool/imap admins: curtj abell sasl_pwcheck_method: saslauthd
Для получения описания всех параметров в этом файле, обращайтесь к man-странице imapd.conf(5) man page. (Помните, что этот файл передает(экспортирует) некоторые некоторые значения в libsasl, самый важный из них - pwcheck_method. В этом примере пользователи аутентифицируются через демон saslauthd, для которого существует множество различных способов управления .)
ЧИТАЙТЕ MAN-СТРАНИЦУ imapd.conf(5) . Есть опции, значания по умолчанию которых могут Вам не понравиться.
Помните, что каждодневные пользователя не должны быт администраторами. Админы имеют полномочия, которых не может быть у простых пользователей и пока сервер позволяет им получать почту будут возникать некоторые проблемы, если админы используются как простые пользователи. Вы , как администратор, также не должны читать почту. У Вас должны быть разные аккаунты для чтения почты и администрирования. Это особенно важно при использовании опции altnamespace , т.к. админы всегда представлены в стандартом (внутреннем) именовании.
Создайте конфигурационную директорию, определяемую опцией "configdirectory " в "imapd.conf". Конфигурационная директория своей концепцией похожа на директорию "/usr/lib/news ". Там храниться информайия о IMAP-сервере в целом.
В примерах этого документа используется конфигурационная директория "/var/imap". Владельцем этой директории должен быть cyrus-пользователь и cyrus-группа, остальные пользователи не должны иметь никакого доступа.
cd /var mkdir imap chown cyrus imap chgrp mail imap chmod 750 imap
Создайте директории раздела по умолчанию, определенного в файле "/etc/imapd.conf ".
В примерах этого документа используется директория раздела по умолчанию "/var/spool/imap ":
cd /var/spool mkdir imap chown cyrus imap chgrp mail imap chmod 750 imap
Концепкия директории раздела похожа на /var/spool/news . Там хранатся почтовые ящики. В отличие от большинства netnews-систем, Cyrus позволяет иметь более одного раздела. Не используйте "news", как имя раздела, т.к. это имя зарезервированно для теелконференций(netnews).
Если Вы хотите использовать Sieve, и Вы не настраивали доставку для просмотра домашних директорий (читайте man-страницу по imapd.conf ), создайте Sieve-директорию:
cd /usr mkdir sieve chown cyrus sieve chgrp mail sieve chmod 750 sieve
Войдите как Cyrus-пользователь(можно и просто от его имени - Прим. пер.) и воспользуйтесь утилитой "tools/mkimap" чтобы создать остальную часть директорий (поддиректории директорий, которые Вы уже создали). Помните, если Вы собрали cyrus с параметром --enable-fulldirhash , то вместо "tools/mkimap" нужно использовать "tools/rehash ".
su cyrus tools/mkimap exit
Если Perl'нет, то несложно (но долго) создать эти директории вручную.
LINUX-СИСТЕМЫ ИСПОЛЬЗОВАНИЕ ТОЛЬКО EXT2FS: Заставьте пользователя, квоту и директории раздела обновляться синхронно. Если этого не сделать это может вызвать повреждение данных и/или потерю сообщений полсе сбоя. К сожалению, если так поступать, то это может привести к серьезному падению производительности. Если Вы используете на Linux'е более новую файловую систему чем ext2fs, этот шаг выполнять необязательно. (Использование ext3 в любом режиме - безопастно.)
cd /var/imap chattr +S user quota user/* quota/* chattr +S /var/spool/imap /var/spool/imap/*
Также заставте директорию очереди почтового демона обновляться синхронно. Следующий пример для sendmail:
chattr +S /var/spool/mqueue
Для вклбчения поддержки STARTTLS, читайте ниже как настроить OpenSSL .
Добавте следующие строки в файл "/etc/services ", если их там нет.
pop3 110/tcp imap 143/tcp imsp 406/tcp acap 674/tcp imaps 993/tcp pop3s 995/tcp kpop 1109/tcp sieve 2000/tcp lmtp 2003/tcp fud 4201/udp
Удалите записи в "/etc/[x]inetd.conf ". Любые строки относящиеся к imap, imaps, pop3, pop3s, kpop, lmtp и sieve должны быть удалены из /etc/[x]inetd.conf и [x]inetd должен быть перезапущен.
Выбирете конфигурацию из директории master/conf :
Для использования normal.conf, выполните:
cp master/conf/normal.conf /etc/cyrus.conf
По желанию, Вы можете отредактировать /etc/cyrus.conf для разрешения или запрета определенных сервисов, или настроить число "готовых" процессов . Убедитесь, что не удалили записи, помеченные как. требуемые
Сделайте так, что бы "/usr/cyrus/bin/master" запускался от имени root'а во время запуска всей системы. Это позволит серверу создать сетевой сокет и получить привилегии root'а. До перезагрузки системы Вы можете запустить master-процесс вручную:
/usr/cyrus/bin/master &
Контроль за master-процессом осуществляется через файл imapd.log. Master-процесс никогда не должен завершаться самостоятельно, но вы можете остановить почтовую систему посылая соответствующий сигнал через kill.
Для того, что бы почта шла в Cyrus, Вы должны настроить ваш MTA (Sendmail, Postfix, Exim, etc) на использование LMTP.
Сгенирируйте конфигурационный файл sendmail, который заставит доставлять локальную почту IMAP-серверу. Читайте файл cf/README в дистрибутиве Sendmail о том как создавать конфигурационные файлы. В этом файле перечислены переменные, которые могут быть использованы для настройки определений mailer'ов (mailer definition) перечисленных ниже.
Следующие конфигурации предпологают, что вы используете сервис lmtpunix и однин из конфигов cyrus.conf обсужденных выше.
Для Sendmail 8.12.4 и выше, используется определение mail'ера cyrusv2 из дистрибутива Sendmail:
define(`confLOCAL_MAILER', `cyrusv2') MAILER(`cyrusv2')
Если Вам нужно изменить имя UNIX-сокета или использовать TCP, определите CYRUSV2_MAILER_ARGS как это описанно в cf/README.
Для Sendmail 8.10 - 8.12.3, используйте файл cyrusv2.mc как шаблон для создания конфига Sendmail.
Для Sendmail 8.9.x и более ранних, используйте определение cyrus из дистрибутива Sendmail:
define(`confLOCAL_MAILER', `cyrus') MAILER(`cyrus')
Отредактируйте /etc/group и добавте пользователя "daemon" в группу "mail". Это разрешит sendmail'у запускать программу "deliver " (LMTP-клиент) для доставки почты IMAP-серверу.
Исходники Postfix'а распространяются с файлом "README_FILES/LMTP_README". Даже если Вы используете бинарный(уже собранный) дистрибутив Postfix, былобы нелишним скачать исходники Postfix'а. Вы получите нетолько вышеупомянутый файл, но и большое количество других файлов "readme" files и примерных конфигов.
Один важный момент, который Вы не должны упускать - это UID и GID Postfix'а. Как сказанно в документе Postfix'а "INSTALL" , Вы должны создать новый аккаунт который не разделяет свой UID и GID с любым другим пользовательским аккаунтом. Это делается из соображений безопастности. Если Вы установили Postfix с GID "mail", Вам нужно будет выбрать другой GID для Cyrus. Смотрите описание конфигурационных опций Cyrus'а "--with-cyrus-user" и "--with-cyrus-group". (Это было наиболее критично когда использовался Cyrus'овский "deliver ", но всеравно было бы неплохо придерживаться этой политики.)
Другой момент заключается в определении местонахождения команды "sendmail". На одних платформах это может быть "/usr/sbin/sendmail", на других, "/usr/lib/sendmail". Cyrus должен знать где находиться эта команда. За детелями обращайтесь в Installing Sieve .
Если Вы пользуетесь сервисом lmtpunix как в примерах cyrus.conf описанных выше, конфигурационный файл Postfix "/etc/postfix/main.cf " должен иметь такую строку:
mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
Естественно, оба, Postfix UID и Cyrus UID, должны иметь соответствующий доступ к указанному сокету.
Начиная с Postfix snapshot-20010222, Вы можете улучшить эффективность LMTP-доставки через "mailbox_transport", поместив следующие строки в файл "/etc/postfix/main.cf":
local_destination_recipient_limit = 300 local_destination_concurrency_limit = 5
Конечно, Вы должны приспособить эти настройки в соответствии с вашими аппаратными требования. Ограничение числа получателей может хорошо сочитаться с возможностью Cyrus'а хранить сообщения в единственном экземпляре. Лимит конкурирующих подключений может быть использован для контроля количества одновременных LMTP-сессий к хранилищю сообщений в Cyrus'е.
Дополнительные примеры включены в файл Postfix "README_FILES/LMTP_README".
Сгенерируйте гонфиг Exim'а который позволит осуществлять доставку локальной почты IMAP-серверу. Читайте документацию к Exim'у о том, как создать конфиг.
Cyrus разработан для использования как black-box-сервер -- т.е. никаких локальных(системных) пользовательских аккаунтов. Из-за этого, Вы должны будете определить следующий "router":
localuser: driver = accept transport = local_delivery
Следующие "transports" подразумевают их использование их с сервисом lmtpunix или lmtp из файла cyrus.conf описанного выше.
Использование lmtpunix (UNIX-сокет):
local_delivery: driver = lmtp command = "/usr/cyrus/bin/deliver -l" batch_max = 20 user = cyrus
Использование lmtp (TCP-сокет -- Exim и Cyrus на одном хосте):
local_delivery: driver = smtp protocol = lmtp hosts = localhost allow_localhost
Для более продвинутой настройки (такой как верификация адресов и т.д.), читайте доки по Exim и примеры конфигов.
Transport Layer Security (TLS), является стандартизированной версией стандарта Secure Sockets Layer (SSL v3). IMAP может использовать две различные версии TLS/SSL: STARTTLS и SSL wrapped сессии.
В STARTTLS, клиент подключается к порту IMAP и затем посылает STARTTLS-команды, которые инициируют TLS-обмен. В настоящий момент это поддерживается Cyrus IMAP Server'ом, если тот собран с OpenSSL.
Альтернатива: SSL-wrapped-соединение, клиент подключается к другому порту ("imaps ") и устанавливает SSL-сессию до начала IMAP-протокола. Это также поддерживается Cyrus IMAP Serve'ом, если тот собран с OpenSSL.
Оба, TLSи SSL, требуют наличие серверного ключа и сертификата. По желанию, помимо установки безопастного соединения, TLS может аутентифицировать клиентов.
OpenSSL требует сертификата и ключа в PEM-формате. Вы можете создать закрытый ключ сервера и сертификат с собственной подписью. Далее, мы создаем собственный ключ для машины " foobar.andrew.cmu.edu", затем помещаем и сертификат и ключ в файл "/var/imap/server.pem".
Пожалуйста, не используйте следующюю информацию для OpenSSL. Вместо нее введите нужную информацию для Вашей организации (т.е. НЕ Carnegie Mellon University в имени организации и т.д.).
openssl req -new -x509 -nodes -out /var/imap/server.pem -keyout /var/imap/server.pem -days 365 Using configuration from /usr/local/lib/openssl/openssl.cnf Generating a 1024 bit RSA private key .............+++++ ......................+++++ writing new private key to '/var/imap/server.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:Pennsylvania Locality Name (eg, city) []:Pittsburgh Organization Name (eg, company) [Internet Widgits Pty Ltd]:Carnegie Mellon University Organizational Unit Name (eg, section) []:Andrew Systems Group Common Name (eg, YOUR name) []:foobar.andrew.cmu.edu Email Address []:
Будьте уверены, что сделанные файл(ы) с ключами могут быть прочитаны Cyrus-пользователем. Например: chown cyrus /var/imap/server.pem
Добавьте следующие строки в файл /etc/imapd.conf, чтобы указать серверу где имкать файлы ключей и сертификатов (используется для ВСЕХ сервисов):
tls_cert_file: /var/imap/server.pem tls_key_file: /var/imap/server.pem
По желанию, Вы можете использовать разные файлы ключей и сертификаты для каждого сервиса:
tls_imap_cert_file: /var/imap/imap-server.pem tls_imap_key_file: /var/imap/imap-server.pem tls_pop3_cert_file: /var/imap/pop3-server.pem tls_pop3_key_file: /var/imap/pop3-server.pem tls_lmtp_cert_file: /var/imap/lmtp-server.pem tls_lmtp_key_file: /var/imap/lmtp-server.pem tls_sieve_cert_file: /var/imap/sieve-server.pem tls_sieve_key_file: /var/imap/sieve-server.pem
Это полезно когда используются различные имена хостов для разных сервисов (например через виртуальные хосты или DNS CNAME). При отсутствии в любом из сервисов определенной опции, будет использоваться значение глобальной опции. Значение запрещающие сертификат или ключевой файл для какого-либо сервиса отключит SSL/TLS для этого сервиса.
Если у Вас есть Certificate Authority (CA), Вы можете сгенерировать запрос на подпись сертификата и послать его на обработку Вашему CA.
По умолчанию, Cyrus будет кэшировать SSL/TLS-сессии до 24 часов. Используя опцию tls_session_timeout в imapd.conf, кэширование сессии может быть отключено (0) или сокращен период хранения.
Вы можете протестировать STARTTLS используя imtest:
imtest -t "" foobar.andrew.cmu.edu
Клиентские сертификаты формируются несколько сложнее, чем сертификаты серверов. Вам нужен CA (certificate authority) и нужно сгенерировать сертификат подписанный CA. STARTTLS в Sendmail и других MTA have подобные проблемы. С.м. Claus Assman's page
Вы можете использовать сертификат с собственной подписью как CA для клиентского сертификата. Чтобы это сделать, попробуйте следующее:
TODO: write me!
К сожалению, нет стандарта позволяющего конвертировать клиентские аутентификационные DN (distinguished name) в аутентификационные имена SASL.
Если Вы будите использовать альтернативное именование и/или соглашение об иерархии UNIX, то прочтите altnamespace.html.
© Andrey Domas