make install
Убедитесь, что Вы правильно задали
параметр "--with-cyrus-prefix" (по умолчанию, "/usr/cyrus/bin").
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
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 , т.к. админы всегда представлены в стандартом (внутреннем) именовании.
В примерах этого документа используется конфигурационная директория "/var/imap". Владельцем этой
директории должен быть cyrus-пользователь и cyrus-группа, остальные пользователи не должны иметь никакого доступа.
cd /var
mkdir imap
chown cyrus imap
chgrp mail imap
chmod 750 imap
В примерах этого документа используется директория раздела по
умолчанию "/var/spool/imap ":
cd /var/spool
mkdir imap
chown cyrus imap
chgrp mail imap
chmod 750 imap
Концепкия директории раздела похожа на
/var/spool/news
. Там хранатся почтовые ящики. В отличие от большинства
netnews-систем, Cyrus позволяет иметь более одного раздела. Не используйте "news", как имя
раздела, т.к. это имя зарезервированно для теелконференций(netnews).
cd /usr
mkdir sieve
chown cyrus sieve
chgrp mail sieve
chmod 750 sieve
su cyrus
tools/mkimap
exit
Если Perl'нет, то несложно (но
долго) создать эти директории вручную.
cd /var/imap
chattr +S user quota user/* quota/*
chattr +S /var/spool/imap /var/spool/imap/*
Также заставте директорию очереди
почтового демона обновляться синхронно. Следующий пример для sendmail:
chattr +S /var/spool/mqueue
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
Для использования normal.conf, выполните:
cp master/conf/normal.conf /etc/cyrus.conf
По желанию, Вы можете отредактировать /etc/cyrus.conf для разрешения или запрета определенных сервисов, или настроить число "готовых" процессов . Убедитесь, что не удалили записи, помеченные как. требуемые
/usr/cyrus/bin/master &
Для того, что бы почта шла в Cyrus, Вы должны настроить ваш MTA (Sendmail, Postfix, Exim, etc) на использование LMTP.
Следующие конфигурации предпологают, что вы используете сервис lmtpunix и однин из конфигов cyrus.conf обсужденных выше.
define(`confLOCAL_MAILER', `cyrusv2')
MAILER(`cyrusv2')
Если Вам нужно изменить имя UNIX-сокета или
использовать TCP, определите CYRUSV2_MAILER_ARGS как это описанно в
cf/README.
define(`confLOCAL_MAILER', `cyrus')
MAILER(`cyrus')
Отредактируйте /etc/group и добавте
пользователя "daemon" в
группу "mail". Это
разрешит sendmail'у запускать программу "deliver
" (LMTP-клиент) для доставки почты IMAP-серверу.Один важный момент, который Вы не должны упускать - это 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".
Cyrus разработан для использования как black-box-сервер -- т.е. никаких локальных(системных) пользовательских аккаунтов. Из-за этого, Вы должны будете определить следующий "router":
localuser:
driver = accept
transport = local_delivery
Следующие "transports" подразумевают их использование их с сервисом lmtpunix или lmtp из файла cyrus.conf описанного выше.
local_delivery:
driver = lmtp
command = "/usr/cyrus/bin/deliver -l"
batch_max = 20
user = cyrus
local_delivery:
driver = smtp
protocol = lmtp
hosts = localhost
allow_localhost
Для более продвинутой настройки (такой как верификация адресов
и т.д.), читайте доки по Exim и примеры конфигов.
SSL, TLS и OpenSSL
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 []:
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) или сокращен период хранения.
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.