Cyrus linux imap server

Cyrus IMAP

What is Cyrus IMAP?¶

Cyrus IMAP is an email, contacts and calendar server. Cyrus is free and open source.

  • This is the documentation for version 3.4.2 of Cyrus IMAP: stable branch.
  • The latest development version 3.5.0-alpha0 is at https://www.cyrusimap.org/dev/.

Features¶

  • Speed
  • Security
  • Efficiency
  • Search
  • CardDAV and CalDAV support
  • Robust data storage
  • Replication
  • Scalable for large installations
  • Flexible filtering support through Sieve
  • Supports antivirus and antispam toolkits
  • Handles deliverability: SPF, DKIM, DMARC
  • Extensive authentication options, through Cyrus SASL
  • JMAP support
  • Long list of supported standards

Read more in our full list of features .

Cyrus has been under active development since the year 1993 when the project was launched at Carnegie Mellon University. It’s used in production systems around the world, at universities and in private enterprise.

What is Cyrus SASL?¶

Simple Authentication and Security Layer (SASL) is a specification that describes how authentication mechanisms can be plugged into an application protocol on the wire. Cyrus SASL is an implementation of SASL that makes it easy for application developers to integrate authentication mechanisms into their application in a generic way.

The latest stable version of Cyrus SASL is 2.1.27.

© Copyright 1993-2018, The Cyrus Team. Last updated on Dec 30 2020

Источник

Cyrus IMAP

Ubuntu¶

Currently supported versions of Ubuntu include Cyrus IMAP packages in the repositories configured on a stock system:

  • Cyrus IMAP 2.4.12-2 for Ubuntu 12.04.5 (Precise Pangolin)
  • Cyrus IMAP 2.4.17+caldav

beta9-3 for Ubuntu 14.04.2 (Trusty Tahr) (Stable)
Cyrus IMAP 2.4.17+caldav

beta10-5 for Ubuntu 14.10 (Utopic Unicorn)
Cyrus IMAP 2.4.17+caldav

beta10-17 for Ubuntu 15.04 (Vivid Vervet) (Current)
Cyrus IMAP 2.4.17+caldav

beta10-17 for Ubuntu 15.10 (Wily Werewolf) (Development)

The Cyrus project does not support running any versions of the Cyrus IMAP software older than the version of the software shipped with the operating system itself.

To install the version of Cyrus IMAP that comes with the operating system, issue the following command:

The cyrus-imapd meta-package will trigger installation of the following Cyrus packages:

  • cyrus-common (another meta-package)
  • cyrus-common-2.4
  • cyrus-imapd-2.4

The following non-Cyrus packages are required, and will be installed automatically as needed:

  • db-util
  • db-upgrade-util
  • libdb5.X (where X depends on OS version)
  • libsasl2-2
  • libsasl2-modules
  • libcomerr2
  • [etc.]

The Debian Cyrus Team packages are split based upon functional requirements of the installation. Depending upon your needs, you may also wish to install any or all of these packages:

  • cyrus-pop3d-2.4
  • cyrus-murder-2.4
  • cyrus-replication-2.4
  • cyrus-nntpd-2.4
  • cyrus-caldav-2.4

Once you’ve decided which services to support (IMAP, POP3, NNTP, CalDav), and whether those services shall be available in secured versions, you’ll need to edit /etc/cyrus.conf and check the SERVICES section, commenting and uncommenting as needed to enable or disable the proper versions of those services.

Here’s the stock version of the SERVICES section of /etc/cyrus.conf as shipped with these packages:

The default settings, as shown above, are for non-secure protocol access.

Edit /etc/imapd.conf and change the default settings as needed. Please consult imapd.conf(5) for details.

  • You MUST, at the very least, uncomment the admins: line.
  • As documented in the man page, «the values yes , on , t , true and 1 turn the option on, the values no , off , f , false and 0 turn the option off.»
  • If you are NOT using SSL and/or STARTTLS, you MUST enable plain text logins, and set sasl_minimum_layer: 0 for authentication to work, or have some other protection layer in place.
  • Consider enabling the commonly used settings altnamespace and unixhierarchysep as these will default to on beginning in version 3.0.
  • Check your sasl_pwcheck_method setting, as this defaults to auxprop with these packages, which is likely not what you want. Change it to saslauthd or pwcheck as needed.

Next, set a password for the default administrative user cyrus . Your choice of authentication system will dictate the proper way to do this. Shown below are examples for *nix password file and SASL methods:

To enable saslauthd, edit /etc/default/saslauthd and set START=yes . Make sure to change any other settings here as needed.

If you’re planning to integrate Cyrus with the Postfix MTA, it is necessary to either relocate the socket used by saslauthd , or else to disable chroot as noted in /etc/default/saslauthd , so the Postfix smtpd daemon can access it.

Start saslauthd if needed:

You should at this moment be able to authenticate against saslauthd:

Start the service, and ensure the service starts up when the system boots:

You should now be able to login as the cyrus user, which is configured by default as an administrator for Cyrus IMAP:

© Copyright 1993-2018, The Cyrus Team. Last updated on May 08 2017

Источник

Cyrus IMAP Server

Материал из Xgu.ru

Содержание

[править] Cyrus

Cyrus — IMAP/POP3/NNTP сервер. Используется крупными почтовыми системами — fastmail.fm, columbia.edu, University of Cambridge которые вносят много хороших изменений [1] [2] .

  • Благодаря возможности использования нескольких спулов, позволяет обходить ограничения файловой системы на количество вложенных директорий (важно при большом количестве пользователей).
  • Cyrus murder — позволяет разнести иерархию ящиков по разным серверам (без резервирования).
  • Mupdate — позволяет делать репликацию master —> replica (начиная с версии 2.3).
  • Shared mailboxes — общие папки, можно настраивать уровень доступа.
  • Conditional STORE (Condstore) — RFC 4551.

[править] Разное

  • Разделителем в иерархии может служить как «.», так и «/». Указывается параметром «unixhierarchysep:».
  • «Администратора» нужно указать в imapd.conf, параметр «admins:». У администраторов не должно быть почтовых ящиков.
  • Пользователей может брать из Cyrus SASL или SQL.
  • Опции для SASL указываются в imapd.conf, начинаются с sasl_
  • Специальные учётные записи:

anonymous — для неавторизованного пользователя.
anyone — для любого пользователя, включая anonymous.

[править] Расположение файлов и папок

  • Данные о подписанных пользователю папках хранятся в файле /var/imap/user/первая_буква_логина/логин.sub (FNAME_SUBSSUFFIX «.sub» в mboxlist.c);
  • В каждом спуле создаётся папка «stage.» для временной обработки файлов, «domain» для виртуальных доменов и «user» для хранения основных учётных записей.
    • Для виртуальных доменов: /var/imap/domain/первая_буква_домена/домен/user/первая_буква_логина/логин.sub;
    • «первая_буква_логина» = «q», если символ не относится к [a-z], аналогично и для «первая_буква_домена» (функция dir_hash_c в util.c);
    • Если unixhierarchysep = «/», все символы «.» в логине заменяются (функция mboxname_hiersep_tointernal в mboxname.c) на «^» (DOTCHAR в mboxname.h), домены записываются как есть.
  • Названия не-ASCII папок хранит в UTF-7, соответственно можно перекодировать обратно командой

заранее поменяв символ «&» на «+».

  • Если в /var/imap/log создать папку с логином пользователя, в неё будут складываться imap-логи.

[править] Виртуальные домены

Раздел не написан.

[править] cyrus.conf

Раздел не написан.

[править] imapd.conf

  • sasl_option — любые опции SASL могут быть установлены добавлением «sasl_». Это перекрывает настройки конфигурационного файла SASL.
  • virtdomains — включить поддержку виртуальных доменов. Если включено, домен пользователя будет определён разделением полного имени символом «@» или «%». Если имя пользователя не полное, а virtdomains выставлен в «on», то домен будет определён реверсивным DNS-запросом ip-адреса сетевого интерфейса, с которого был принят запрос, если не получится, то будет выставлен default domain (если задан).

Возможные значения: off, userid, on

  • fulldirhash
  • hashimapspool
  • singleinstancestore — если включено, то imapd, lmtpd и nntpd будут пытаться делать только одну копию сообщения на один раздел (partition) и создавать жёсткий ссылки (hard links), что может сильно экономить дисковое пространство.

[править] Безопасность

anyoneuseracl — позволяет неадминистраторам устанавливать на своих ящиках ACL для всех (anyone). Включено по-умолчанию.
imapidresponse — если включено, в ответ на команду ID сервер возвращает: version, vendor, support-url, os, os-version, command, arguments, environment. Если не включено, возвращает NIL. Включено по-умолчанию.
serverinfo

[править] Тестирование IMAP

или с помощью telnet:

[править] Репликация Cyrus

Используется протокол Mupdate (RFC 3656). Позволяет делать репликацию master —> replica (начиная с версии 2.3). На fastmail.fm запустили в 2006-м году, с тех пор работает (по состоянию на начало 2010 г.).

Если «replica» сервер недоступен, основной сервер ведёт лог изменений, потом при первой возможности сбрасывает изменения на replica. Можно запускать репликацию вручную параллельно с работающей основной.

Пример конфигурации можно найти здесь (рус.) .

[править] Cyrus Murder

Позволяет разнести иерархию ящиков по разным серверам (без резервирования).

[править] Утилиты

[править] chk_cyrus

В комплекте с Cyrus, поставляется утилита chk_cyrus. Она позволяет проверить все ящики, либо отдельную партицию, либо отдельный ящик.

Ошибки и всякий дебаг пишет в stderr, имена ящиков, содержащих ошибки — в stdout, поэтому лучше сразу перенаправить вывод в файл и ждать его заполнения, после чего руками пройти по найденным ящикам.

[править] reconstruct

Утилита для восстановления почтовых ящиков, умеет работать рекурсивно.

[править] Синтаксис

[править] Описание

[править] Опции

  • −C config-file — читать файл конфигурации из config-file.
  • −p partition
  • −x
  • -r — рекурсивно восстанавливать все нижележащие ящики.
  • -f
  • -k
  • -s
  • -g
  • -G
  • -mПримечание: в настоящее время недоступна. Перестраивает файл mailboxes. Использует любые данные, присутствующие в файле mailboxes, которые можно вытащить, после чего сканирует все партиции, перечисленные в imapd.conf для поиска дополнительных почтовых ящиков.

[править] Примеры

[править] ctl_mboxlist

Операции с базой данных пользователей (обычно /var/imap/mailboxes.db).

  • -d — сделать дамп базы в текстовом формате.
  • -u — считать базу данных с stdin. Формат должен соответствовать выдаваемому -d.
  • -v — проверить соответствие базы данных и реальных ящиков. Будут выданы почтовые ящики, присутствующие в базе и отсутствующие в партициях, и присутствующие в партициях и имеющие корректный cyrus.header и отсутствующие в базе данных. Учитывайте, что эта функция очень интенсивно использует на файловый ввод/вывод.

[править] squatter

squatter — утилита, которая создаёт SQUAT индексы для почтовых ящиков Cyrus.

Индекс создаётся в файле cyrus.squat.tmp и после успешного завершения автоматически переименовывается в cyrus.squat. Это гарантирует, что мы не повлияем на любого, кто работает со старым открытым индексом.

[править] Cyradm

cyradm — оболочка для администрирования Cyrus, представляющая из себя интерфейс для perl-модуля Cyrus::IMAP::Shell (в CPAN искать бесполезно, поставляется вместе с Cyrus).

[править] Синтаксис

cyradm [—user user] [—[no]rc] [—systemrc file] [—userrc file] [—port n] [—auth mechanism] [—tlskey keyfile] [—notls] [—server] server

perl -MCyrus::IMAP::Shell -e ‘run(«myscript»)’

или даже (не рекомендуется)

[править] Описание

Cyradm — оболочка над perl-модулем Cyrus::IMAP::Admin. Опции команд могут быть как в Tcl-compatible, так и в GNU-style.

[править] Команды

«authenticate» [«—minssf» N] [«—maxssf» N] [«—mechanisms» list] [user]
«auth» [«—minssf» N] [«—maxssf» N] [«—mechanisms» list] [user]
«login» [«—minssf» N] [«—maxssf» N] [«—mechanisms» list] [user]
Authenticate на сервере. Вы должны быть подключены к серверу. Cyrus не даст вам возможность пере-authenticate, если вы уже authenticated.

«chdir» directory
«cd» directory
Перейти в каталог. Встроенной команды «pwd» не предусмотрено, но действием по-умолчанию является запуск «pwd» из оболочки.

«createmailbox» [«—partition» partition] mailbox
«createmailbox» mailbox partition
«create» [«—partition» partition] mailbox
«create» mailbox partition
«cm» [«—partition» partition] mailbox
«cm» mailbox partition
Создать почтовый ящик (mailbox) в default или указанном разделе (partition). Можно использовать опции как в старом, так и в getopt-стиле, но не в обоих сразу.

«deleteaclmailbox» mailbox id [. ]
«deleteacl» mailbox id [. ]
«dam» mailbox id [. ]
Удалить ACL у указанного почтового ящика (mailbox).

«deletemailbox» mailbox
«delete» mailbox
«dm» mailbox
Удалить почтовый ящик (mailbox).

Администраторы обычно не имеют прав на удаление почтового ящика. Используйте команду setaclmailbox чтобы дать разрешение «x» вашей учётной записи, если вы хотите удалить ящик, не принадлежащий вам.

Note that the online help admits to an optional host argument. This argument is not currently used, and will be rejected with an error if specified; it is reserved for IMSP.

«setaclmailbox» mailbox id rights [id rights . ]
«setacl» mailbox id rights [id rights . ]
«sam» mailbox id rights [id rights . ]
Установить ACL на почтовый ящик. ACL может быть следующего вида: «none», «read» («lrs»), «post» («lrsp»), «append» («lrsip»), «write» («lrswipkxte»), «delete» («lrxte»), «all» («lrswipkxte»), или любая комбинация ACL-кодов:

  • l Lookup (почтовый ящик будет виден для команд LIST/LSUB, SUBSCRIBE mailbox)
  • r Read (SELECT/EXAMINE the mailbox, perform STATUS)
  • s Seen (set/clear \SEEN flag via STORE, also set \SEEN flag during APPEND/COPY/FETCH BODY[. ])
  • w Write flags other than \SEEN and \DELETED
  • i Insert (APPEND, COPY destination)
  • p Post (send mail to mailbox)
  • k Создание нового ящика (CREATE new sub-mailboxes, parent for new mailbox in RENAME)
  • x Удаление почтового ящика (DELETE mailbox, old mailbox name in RENAME)
  • t Удаление сообщений (set/clear \DELETED flag via STORE, also set \DELETED flag during APPEND/COPY)
  • e Perform EXPUNGE and expunge as part of CLOSE
  • a Administer (SETACL/DELETEACL/GETACL/LISTRIGHTS)

«listmailbox» [«—subscribed»] [pattern [reference]]
«list» [«—subscribed»] [pattern [reference]]
«lm» [«—subscribed»] [pattern [reference]]
Список всех, или всех подписанных почтовых ящиков, попадающих под указанный шаблон. Шаблоны могут содержать ‘*’ и ‘%’, которые соответствуют любому символу или любому кроме разделителей.

Полученный список может быть относительным к указанному, если он задан. Это позволяет списку почтовых ящиков быть быть ограниченными частью иерархии.

В некоторых случаях, когда символ ‘%’ используется в конце шаблона, он может вернуть записи, которые не являются почтовыми ящиками, но могут содержать другие почтовые ящики (например, ?). В этом случае запись будет в скобках, указывая что она является корневым для других почтовых ящиков, а не является сама почтовым ящиком.

[править] Автоматическое заведение пользователя

Раздел не написан.

[править] How to

Логинимся от имени нужного пользователя, либо администратора:

Смотрим список ACL ящика:

Получаем список папок:

Получаем список папок, на которые подписан пользователь:

Разрешить всем доступ к папке («общий доступ»):

Запретить всем доступ к папке («общий доступ»):

Создать подпапку (пользователю ещё нужно будет на неё подписаться):

[править] SASL

См. также: SASL на википедии, rfc2222 — Simple Authentication and Security Layer (SASL).

  • Конфигурация для каждого приложения лежит в /usr/lib/sasl2/XXX.conf (в FreeBSD /usr/local/lib/sasl2/XXX.conf), где XXX — название приложения.
  • Опции SASL для Cyrus указываются в imapd.conf, начинаются с sasl_

saslauthd — сервер аутентификации SASL.

  • -a authmech — механизм аутентификации. Например, getpwent (из локального «password» файла), shadow (из локального «shadow password» файла), pam, rimap (на удалённом IMAP-сервере), sasldb (тогда необходимо указать pwcheck_method auxprop) или ldap;
  • -r — объединить realm с логином;
  • -d — режим отладки;

saslpasswd2 — утилита для добавления/удаления пользователей.

  • -c — создаёт запись для пользователя, не существующего в системе;
  • -d — удаляет запись для пользователя.

sasldblistusers2 — выдаёт список пользователей в базе SASL (обычно /etc/sasldb2). Это не список всех пользователей в /etc/passwd, shadow, PAM и т.д., а только те, которые были созданы в SASL (с помощью saslpasswd2). Опции:

  • -f file использовать file для sasldb;
  • -v напечатать версию libsasl2 и выйти.

testsaslauthd -u username -p password — утилита для тестирования SASL. Пароль передаётся небезопасно — аргументом командной строки.

pluginviewer — список загруженных SASL-плагинов и их свойства.

  • -a — список auxprop плагинов;
  • -s — список плагинов сервера;
  • -c — список плагинов клиента;

[править] Sieve

Используется TCP порт 2000:

В базе ничего не хранится, все данные находятся в иерархической файловой структуре /var/imap/sieve (параметр «sievedir:» в imap.conf). Блокировок не предусмотрено. В подкаталогах — первая буква логина. При этом скрипты пользователей, логины которых начинаются не с буквы, хранятся в /var/imap/sieve/q. Также ‘.’ в логине заменяется на ‘^’ (скрипт для переименования tools/convert-sieve.pl).

В каталоге должен быть «defaultbc» — symlink на скомпилированый (sieve bytecode) активный скрипт (script.bc). Также в папке хранится оригинальный текст скрипта (script.script). Остальные скрипты, лежащие в каталоге, считаются неактивными.

В поставке имеется скрипт tools/masssievec для массовой компиляции sieve-скриптов, компилирует с помощью sievec.

[править] Параметры Sieve в imapd.conf

  • autocreate_sieve_script — ?
  • postmaster — Username that is used as the ‘From’ address in rejection MDNs produced by sieve.
  • generate_compiled_sieve_script — ?
  • autocreate_sieve_compiledscript — ?
  • rfc3028_strict — If enabled, Sieve will be strict (per RFC 3028) with regards to which headers are allowed to be used in address and envelope tests. This means that only those headers which are defined to contain addresses will be allowed in address tests and only «to» and «from» will be allowed in envelope tests. When disabled, ANY grammatically correct header will be allowed.
  • sendmail — The pathname of the sendmail executable. Sieve invokes sendmail for sending rejections, redirects and vacation responses.
  • sendsms — ?
  • sieve_allowreferrals — If enabled, timsieved will issue referrals to clients when the user’s scripts reside on a remote server (in a Murder). Otherwise, timsieved will proxy traffic to the remote server.
  • sieve_extensions — fileinto reject vacation imapflags notify envelope relational regex subaddress copy

Space-separated list of Sieve extensions allowed to be used in sieve scripts, enforced at submission by timsieved(8). Any previously installed script will be unaffected by this option and will continue to execute regardless of the extensions used. This option has no effect on options that are disabled at compile time (e.g., «regex»). Allowed values: fileinto, reject, vacation, imapflags, notify, include, envelope, body, relational, regex, subaddress, copy

  • sieve_maxscriptsize — Maximum size (in kilobytes) any sieve script can be, enforced at submission by timsieved(8).
  • sieve_maxscripts — Maximum size (in kilobytes) any sieve script can be, enforced at submission by timsieved(8).
  • sieve_utf8fileinto
  • sieve_sasl_send_unsolicited_capability
  • sievedir — If sieveusehomedir is false, this directory is searched for Sieve scripts.
  • sievenotifier
  • sieveusehomedir — If enabled, lmtpd will look for Sieve scripts in user’s home directories:

    user/.sieve.

  • anysievefolder — ?
  • autosievefolders — ?

[править] ManageSieve

[править] Cyrus::SIEVE::managesieve

Perl-модуль для управления sieve-фильтрами. Обладает очень богатой документацией (см. man Cyrus::SIEVE::managesieve)

[править] Сторонние утилиты

  • mbsync — позволяет синхронизировать почтовые ящики IMAP4 и Maildir.
  • imapsync — для синхронизации IMAP ящиков.
  • cyrus-utils — набор утилит. У кого есть отзывы?

[править] Примечания

[править] Ссылки

  • http://cyrusimap.web.cmu.edu/ (англ.) — официальная страница проекта
  • http://cyrusimap.web.cmu.edu/twiki/bin/view/Main/WebHome (англ.) — официальная wiki
  • http://cyrus.org.ru/ Cyrus IMAP Server v2.1 Русская документация. Копия на opennet.ru
  • http://www.bog.pp.ru/work/Cyrus_IMAP.html Bog BOS: Cyrus: POP3/IMAP сервер: установка, доработки, настройка (есть описание опций imap.conf на русском языке).
  • http://www.opennet.ru/docs/RUS/Cyrus_imap/install-configure.html — Настройка IMAP-сервера.
  • http://www.l666l.ru/?p=999 Тестирование IMAP-сервера (telnet, TLS).
  • http://tomster.org/geek/freebsdcookbook/ar01s03.html (англ.) — Установка/настройка со скриптами и советами

[править] Материалы по настройке почтовых систем на Xgu.ru

[править] Лицензия на текст

Текст доступен на условиях лицензии Creative Commons Attribution/Share-Alike версии 3.0 или более новой.

Источник

Читайте также:  Что выполняет ос windows
Оцените статью