The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

Каталог документации / Раздел "Настройка почты (sendmail, postfix, qmail)" / Оглавление документа

Настройка IMAP-сервера

Этот раздел описывает запуск shell-скриптов и изменение конфигурационных файлов после запуска "configure" и "make ".
  1. Создаются пользователь и группа для Cyrus-подсистемы. В этом документе приведены примеры с использованием пользователя "cyrus" и группы "mail", хотя они могут быть любые другие. Если будет использоваться имя пользователя отличное от "cyrus ", то оно должно быть задано прараметнром "--with-cyrus-user=" скрипта "configure". Если используемая группа отлична от "mail ", то она должна быть указанна в параметре "--with-cyrus-group=" скрипта "configure".

  2. После того, как Вы залогинились под root'ом , можно ставить софт.
       make install
    
    
    Убедитесь, что Вы правильно задали параметр "--with-cyrus-prefix" (по умолчанию, "/usr/cyrus/bin").

  3. 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
    
    
  4. Создйте файл "/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 , т.к. админы  всегда представлены в стандартом (внутреннем) именовании.

  5. Создайте конфигурационную директорию, определяемую опцией "configdirectory " в "imapd.conf". Конфигурационная директория своей концепцией похожа на директорию "/usr/lib/news ". Там храниться информайия о IMAP-сервере в целом.

    В примерах этого документа используется конфигурационная директория "/var/imap". Владельцем этой директории должен быть cyrus-пользователь и cyrus-группа, остальные пользователи не должны иметь никакого доступа.

       cd /var
       mkdir imap
       chown cyrus imap
       chgrp mail imap
       chmod 750 imap
    
    
  6. Создайте директории раздела по умолчанию, определенного в файле "/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).
  7. Если Вы хотите использовать Sieve, и Вы не настраивали доставку для просмотра домашних директорий (читайте man-страницу по  imapd.conf ), создайте Sieve-директорию:
       cd /usr
       mkdir sieve
       chown cyrus sieve
       chgrp mail sieve
       chmod 750 sieve
    
    
  8. Войдите как Cyrus-пользователь(можно и просто от его имени - Прим. пер.) и воспользуйтесь утилитой "tools/mkimap" чтобы создать остальную часть директорий (поддиректории директорий, которые Вы уже создали). Помните, если Вы собрали cyrus с параметром  --enable-fulldirhash , то вместо "tools/mkimap" нужно использовать "tools/rehash ".
       su cyrus
       tools/mkimap
       exit
    
    
    Если Perl'нет, то несложно (но долго) создать эти директории вручную.

  9. 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
    
    

  10. Для вклбчения поддержки STARTTLS, читайте ниже как настроить OpenSSL .

  11. Добавте следующие строки в файл "/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
    

  12. Удалите записи в "/etc/[x]inetd.conf ". Любые строки относящиеся к imap, imaps, pop3, pop3s, kpop, lmtp и sieve должны быть удалены из  /etc/[x]inetd.conf и [x]inetd должен быть перезапущен.

Настройка Master-процесса

  1. Выбирете конфигурацию из директории  master/conf :
    small.conf
    "голый" вервер с поддержкой IMAP и POP
    normal.conf
    сервер с поддержкой IMAP, POP, SSL wrapped-версия и протокол управления скриптами Sieve
    prefork.conf
    Такой же конфиг, как и предыдущий, но с некоторым количеством "готовых" дочерних процессов процессами для повышения производительности. (Т.е. при запуске сервер сразу создает какое-то число процессов каждый из которых будет ждать подключения клиента. Один клиент на один процесс. При подключении клиента время на выполнение fork() не тратиться - Прим. пер.)
    backend-cmu.conf
    Наша конфигурация (для Murder Backend / типичного IMAP-сервера)
    frontend-cmu.conf
    Наша конфигурация (для серверов Murder Frontend)

    Для использования  normal.conf, выполните:

       cp master/conf/normal.conf /etc/cyrus.conf
    
    

    По желанию, Вы можете отредактировать  /etc/cyrus.conf для разрешения или запрета определенных сервисов, или настроить число "готовых" процессов . Убедитесь, что не удалили записи, помеченные  как. требуемые 

  2. Сделайте так, что бы  "/usr/cyrus/bin/master"  запускался от имени root'а во время запуска всей системы. Это позволит серверу создать сетевой сокет и получить привилегии root'а. До перезагрузки системы Вы можете запустить master-процесс вручную:
       /usr/cyrus/bin/master &
    
    

  3. Контроль за master-процессом осуществляется через файл imapd.log. Master-процесс никогда не должен завершаться самостоятельно, но вы можете остановить почтовую систему посылая соответствующий сигнал через  kill.

Настройка Mail Transfer Agent(MTA)

Для того, что бы почта шла в Cyrus, Вы должны настроить ваш MTA (Sendmail, Postfix, Exim, etc) на использование LMTP.

Настройка  Sendmail

Сгенирируйте конфигурационный файл sendmail, который заставит доставлять локальную почту IMAP-серверу. Читайте файл  cf/README в дистрибутиве Sendmail о том как создавать конфигурационные файлы. В этом файле перечислены переменные, которые могут быть использованы для настройки определений mailer'ов (mailer definition) перечисленных ниже.

Следующие конфигурации предпологают, что вы используете сервис  lmtpunix  и однин из конфигов  cyrus.conf обсужденных выше.

Настройка  Postfix

Исходники 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 4

Сгенерируйте гонфиг Exim'а который позволит осуществлять доставку локальной почты IMAP-серверу. Читайте документацию к Exim'у о том, как создать конфиг.

Cyrus разработан для использования как black-box-сервер -- т.е. никаких локальных(системных) пользовательских аккаунтов. Из-за этого, Вы должны будете определить следующий "router":

Следующие "transports" подразумевают их использование их с сервисом  lmtpunix или lmtp  из файла cyrus.conf описанного выше.

Для более продвинутой настройки (такой как верификация адресов и т.д.), читайте доки по 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 может аутентифицировать клиентов.

Настройка Cyrus с OpenSSL

  1. 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 []:
    
  2. Будьте уверены, что сделанные файл(ы) с ключами могут быть прочитаны Cyrus-пользователем. Например: chown cyrus /var/imap/server.pem
  3. Добавьте следующие строки в файл  /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) или сокращен период хранения.

  4. Вы можете протестировать 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

Если Вы будите использовать альтернативное именование и/или соглашение об иерархии UNIX, то прочтите  altnamespace.html.


last modified: $Date: 2003/02/10 21:03:25 $
  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor