Функции администрирования cyrus imap


Содержание

Административные функции Cyrus IMAP

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

Замечание: Для Windows-платформ это расширение недоступно.

To enable Cyrus IMAP support and to use these functions you have to compile PHP with the —with-cyrus option.

Внимание

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.

Bog BOS: Cyrus: POP3/IMAP сервер: установка, доработки, настройка

Сервер Cyrus IMAP является открытым (лицензия BSD-like) сервером базы почтовых сообщений с поддержкой протоколов POP3, IMAP4rev1 (RFC 3501) и NNTP (в т.ч. через TLS). В отличие от упрощённых серверов POP3 Cyrus IMAP не вынуждает заводить владельцев почтовых ящиков, как полноценных пользоватей системы, а обеспечивает собственные средства авторизации (с помощью библиотеки Cyrus SASL: механизмы KERBEROS_V4, GSSAPI, CRAM-MD5, DIGEST-MD5, OTP и PLAIN, команда STARTTLS) и хранения почтовых сообщений. Допускается одновременный доступ к одному почтовому ящику. Имеются средства управления списками доступа (ACL) и ограничения размера почтового ящика (QUOTA). Прочие расширения: LITERAL+, NAMESPACE, U >

Внимание

Иерархическое пространство имён почтовых ящиков аналогично пространству имён newsgroups (простые имена, выстроенные в иерархию через точку; прописные и строчные буквы различаются). Почтовые ящики первого уровня иерархии могут создаваться только администратором, остальные в соответствии с правами (ACL) родительского почтового ящика. Корнем иерархии пользовательских почтовых ящиков является user. Все почтовые ящики пользвателя test имеют префикс «user.test.«. Создание ящика user.test равнозначно созданию пользователя test, в него кладёт новые почтовые сообщения агент местной доставки (local delivery agent), он же служит почтовым ящиком INBOX пользователя test, поэтому почтовый ящик user.test.junk выглядит для пользователя test как INBOX.junk, а для прочих пользователей как user.test.junk. Имя пользователя в стандартном иерархическом пространстве имён не может содержать точку. Относительные имена почтовых ящиков начинаются с точки. Сервер может работать в альтернативном пространстве имён, в котором почтовый ящик user.test.junk выглядит для пользователя test просто как junk (ящик user.test по-прежнему INBOX).

Русские имена почтовых ящиков можно декодировать с помощью «iconv -f utf-7», если заменить ‘&’ на ‘+’.

Доступ к каждому почтовому ящику определяется ACL, содержащим список элементов управления доступом. При создании ящика ACL копируется от родительского ящика (или defaultacl для ящиков первого уровня). При создании пользователя его корневому ящику устанавливается ACL, дающий пользователю все права над этим ящиком. Каждый элемент ACL имеет идентификатор пользователя (специальное имя для неавторизованного пользователя — anonymous; для любого, включая анонимного, пользователя — anyone) или группы пользователей (перед идентификатором может стоять знак отрицания ««) и набор прав доступа (администратор неявно имеет права «la» на всех ящиках; пользователь неявно имеет права «la» на всех своих ящиках):

  • l — имя почтового ящика будет показываться в списках (lsub, list, unseen)
  • r — право на чтение (select, check, fetch, partial, search, источник для copy)
  • s — для данного пользователя будут храниться личные флаги «Seen» и «Recent» (STORE \SEEN)
  • w — право на изменение флагов, кроме «Seen» и «Deleted»
  • i — право добавлять сообщения в ящик (append, назначение copy)
  • p — право добавлять сообщения в ящик (добавляется трассировочная строка)
  • c — право создавать подчинённые ящики, удалять и переименовывать этот ящик
  • d — право на запись флага «Deleted» и производить очистку (expunge)
  • a — право на изменение ACL

anonymous неявно имеет права «p» на корневых ящиках пользователей. Пользователь неявно имеет права на ящики внутри своей иерархии (или только «la»?). В общем, бардак с правами.

Механизмы авторизации (не аутентификации!):

  • Unix-style. Идентификатор — это имя пользователя или строка вида group:имя-группы
  • Kerberos 4.
  • Kerberos 5.
  • внешний процесс авторизации (ptloader).

Механизмы аутентификации (используется библиотека Cyrus SASL):

  • анонимный пользователь (опция allowanonymouslogin файла настройки): текстовый механизм аутентификации с именем пользователя anonymous и произвольным паролем и любой механизм аутентификации Cyrus SASL, позволяющий анонимный вход
  • текстовый пароль передаётся через IMAP LOGIN или SASL PLAIN (TLS), и проверяется с помощью PAM, Kerberos v4, /etc/passwd и /etc/shadow (sasl_auto_transition) библиотекой Cyrus SASL (sasl_pwcheck_method)
  • KERBEROS_V4
  • разделяемый секрет (CRAM-MD5, DIGEST-MD5), необходимо предоставить источник этих секретов (sasldb)

Механизм ограничения размера почтового ящика учитывает только сумму размеров почтовых сообщений (в килобайтах), но не учитывает размер служебной информации. Ограничение может накладываться на любое поддерево иерархии ящиков, за вычетом подподдеревьев, имеющих свои ограничения. В расширении к протоколу IMAP имеется команда установить ограничение (setquota), но не имеется команд для его снятия. При вставке сообщения (права «i») остаток места проверяется перед вставкой, при отправке сообщения (права «p») проверяется что лимит уже не превышен. При превышении лимита доставка прерывается с сообщением о временной проблеме.

База почтовых сообщений может быть распределена на несколько разделов, размещённых в различных файловых системах. Администратор может указать имя раздела при создании почтового ящика (раздел наследуется или берётся из defaultpartition). Раздел может быть изменён при переименовании почтового ящика (имя при этом можно не менять).

Cyrus IMAP может экспортировать Usenet через IMAP или IMAP через NNTP.

Cyrus IMAP обеспечивает обслуживание корневых почтовых ящиков пользователей по протоколу POP3 (только один клиент для ящика одновременно, включая IMAP клиентов).

Сообщения для syslog:

  • CRIT — требуется немедленное вмешательство
  • ERR — ошибки ввода-вывода
  • WARNING — ошибки аутентификации и авторизации клиентов
  • NOTICE — успешная и неуспешная аутентификация
  • INFO — открытие ящиков

Файл mailboxes.db (в /var/lib/imap) хранит список всех ящиков с их лимитами и ACL. /var/lib/imap/db.backup1 и /var/lib/imap/db.backup2 — старые копии.

Поддиректория quota содержит по файлу на каждое ограничиваемое поддерево иерархии: имя, текущий размер, ограничение. Чтобы удалить ограничение достаточно удалить этот файл и сделать под пользователем cyradm «/usr/lib/cyrus-imapd/quota -f».

Поддиректория user содержит для каждого пользователя файл (имя состоит из имени пользователя и суффикса «.sub»), содержащий сортированный список ящиков, на которые он подписан.

Поддиректория log может хранить протокол работы определённого пользователя. Достаточно создать в ней поддиректорию с именем этого пользователя (без имени раздела user).

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

Поддиректория msg может содержать файлы:

  • shutdown — соединение отвергается с выдачей сообщения
  • motd — первая строка посылается клиенту при соединении

Для каждого почтового ящика в разделе создаётся отдельная директория, в которой каждое почтовое сообщение хранится в отдельном файле с именем, состоящем из UID и точки на конце. В этой же директории хранятся служебные файлы: cyrus.header, cyrus.index, cyrus.cache, cyrus.seen.

Sendmail, Postfix, Exim кладут почтовые сообщения в базу с помощью протокола LMTP, демон lmtpd предоставляется (TCP/IP или Unix-сокет). При работе по TCP/IP необходимо использовать LMTP AUTH (SASL).

Сервер пытается хранить только одну копию сообщения, если письмо было получено сразу в несколько ящиков (жёсткие ссылки, отключается singleinstancestore). При перемещении сообщения внутри иерархии файл не перемещается (mv), а делается жёсткая ссылка (ln), что увеличивает счётчик inode-ов. Имеется механизм удаления повторных (по Message-Id) писем (отключается duplicatesuppression).

Программа master представляет собой гибрид xinetd и cron. Запускает остальные программы пакета при наступлении оговоренного события (сетевое соединение или момент времени). Инициализирует БД. При получении сигнала SIGTERM убивает подчинённые процессы, потом себя. Файл cyrus-master.pid не удаляется, файлы блокировки не удаляются. При аварийном завершении подчинённого процесса запускает его ещё раз для того же соединения, потом ещё и ещё. При получении сигнала SIGHUP перечитывает конфигурационный файл, Подчинённые процессы об этом не узнают, так что рекомендуется restart. Переменная окружения CYRUS_VERBOSE позволяет увеличить уровень журнализации (по умолчанию — 1). Параметры:

  • -C имя-конфигурационного-файла-imapd.conf (/etc/imapd.conf; не действует на запускаемые процессы!)
  • -M имя-конфигурационного-файла-cyrus.conf (/etc/cyrus.conf)
  • -d (уходить в фоновый раздел и освобождать терминал)
  • -D (отладочный режим)
  • -l размер-очереди-listen (32)
  • -j rps (1; сколько раз в секунду чистить таблицу порождённых процессов)
  • -p имя-pid-файла (/var/run/cyrus-master.pid)

Главный конфигурационный файл (/var/imap/cyrus.conf) для программы master состоит из именованных секций, содержимое секции заключается в фигурные скобки, комментарий начинается с символа ‘#’. Содержимое секции состоит из элементов, каждый элемент расположен на отдельной строке и состоит из имени (используется как имя процесса в hosts_access(5) для ограничения доступа) и списка аргументов (через пробел). Программы ищутся в директории установки. master понимает три секции:

  • START — определяет какие программы должны запускаться в начале работы до запуска первого сервиса; аргумент имеет вид: cmd=»имя-программы-с-параметрами»
  • SERVICES — определяет какие порты и сокеты слушать и какие программы запускать при соединении; аргументы элементов:
    • listen=»имя-сокета | [имя-хоста-или-IP:] номер-порта-или-имя-сервиса»
    • cmd=»имя-программы-с-параметрами»
    • proto=tcp (tcp4, udp4, tcp6, udp6, tcp, udp)
    • prefork=0 (сколько иметь предварительно загруженных процессов, для ускорения времени реакции)
    • maxchild=-1 (максимальное число одновременно запущенных задач)
    • maxfds=256 (ограничение на количество дескрипторов файлов для запускаемых процессов; хватит ли у master прав на это?)
  • EVENTS — запуск процессов через определённые интервалы или в указанный момент времени; аргументы элементов:
    • cmd=»имя-программы-с-параметрами»
    • period=0 (интервал в минутах)
    • at=HHMM

Пример (модифицированный вариант master/conf/normal.conf):

Всеми программами можно управлять с помощью переменных окружения:

  • CYRUS_VERBOSE (число, для использования отладчика более 30)
  • CYRUS_SERVICE
  • CYRUS_ID

imapd — сервер IMAP4rev1. Общается с клиентом через стандартный ввод/вывод, т.е. должен запускаться с помощью master. Ключи:

  • -C имя-конфигурационного-файла
  • -U число-обслуживаемых-клиентов (250; потом процесс будет перезапущен)
  • -T секунд (60; ждать следующего соединения)
  • -D (запуск под отладчиком, который задаётся в debug_command)
  • -s (включить SSL)
  • -p фактор-защиты (признак наличия внешнего слоя защиты; 1 — обеспечение целостности, 2 и выше — шифрование)

Конфигурационный файл состоит из строк вида (комментарии начинаются с символа ‘#’):

Опции (логические значения: yes, on, true, t, 1)

  • admins (; список администраторских идентификаторов через пробел; рекомендуется использовать данный идентификатор только для управления сервером; получать почту на него не рекомендуется)
  • allowallsubscribe (0; разрешать подписку на несуществующие ящики; рекомендуется при необходимости работать с MS Outlook)
  • allowanonymouslogin (0; разрешать аутентификацию пользователя anonymous с любым паролем, а также использование механизма SASL ANONYMOUS
  • allowapop (1; использование команды APOP; SASL потребуются открытые пароли)
  • allownewnews (0; обработка команды NNTP NEWNEWS)
  • allowplaintext (1; разрешить передавать пароли в открытом виде по сети)
  • allowplainwithouttls (false; не работает!)
  • allowusermoves (0; разрешить переименовывать пользователей командами RENAME и XFER; требуется обеспечить блокировку доступа на время перемещения внешними средствами)
  • altnamespace (0; дополнительные персональные ящики представляются клиентам на уровне INBOX, а не под ним; действует только на imapd, но не на LMTP и административные утилиты — cyradm, quota и др.)
  • annotation_db (skiplist; формат annotations.db: berkeley, skiplist)
  • auth_mech (unix; механизм авторизации: unix, pts, krb, krb5)
  • autocreateinboxfolders (; список создаваемых вложенных ящиков, при автоматическом создании INBOX при получении письма (createonpost) или входе пользователя (autocreatequota))
  • autocreatequota (0; разрешать пользователям создавать собственные учётные записи, создавая INBOX; положительное число задаёт максимальный размер таких ящиков; отрицательное значение отключает проверку размера ящика)
  • autocreate_users (; список имён пользователей и групп, для которых разрешено автоматическое создание ящиков)
  • autosubscribe_all_sharedfolders (false; подписывать на все разделяемые ящики, при автоматическом создании INBOX при получении письма (createonpost) или входе пользователя (autocreatequota))
  • autosubscribeinboxfolders (; список подписываемых вложенных ящиков, при автоматическом создании INBOX при получении письма (createonpost) или входе пользователя (autocreatequota))
  • autosubscribesharedfolders(; список подписываемых разделяемых ящиков, при автоматическом создании INBOX при получении письма (createonpost) или входе пользователя (autocreatequota))
  • berkeley_cachesize (512; размер кеша для bdb в КБ)
  • berkeley_locks_max (50000)
  • berkeley_txns_max (100; число транзакций)
  • client_timeout (10; в секундах)
  • configdirectory (; каталог, в котором всё хранится; /var/lib/imap)
  • createonpost (false; автоматическое создание ящика по приходу письма)
  • debug_command (; /usr/bin/gdb /usr/lib/cyrus-imap/%s %d
  • defaultacl (anyone lrs; ACL по умолчанию для создаваемого ящика верхнего уровня)
  • defaultdomain (; для подержки виртуальных доменов)
  • defaultpartition (default; имя раздела по умолчанию для новых ящиков)
  • deleteright (c; какие права требуются для удаления ящика; устарело; теперь для удаления ящика требуются права ‘x’)
  • duplicate_db (berkeley-nosync; формат БД для хранения информации о дублированных сообщениях: berkeley, berkeley-nosync, berkeley-hash, berkeley-hash-nosync, skiplist
  • duplicatesuppression (1; хранить message-id в БД и блокировать повторную доставку сообщений)
  • expunge_mode (immediate; режим удаления сообщений и записей в кеше по команде EXPUNGE; immediate — немедленно, как раньше; delayed — из индекса удаляются сразу, а сами файлы позже, утилитой cyr_expire)
  • flushseenstate (false; отключить кеширование записи состояний «прочитанности» сообщений, может потребоваться для Microsoft Outlook
  • foolstupidclients (0; запрос LIST «*» обрабатывается как LIST «INBOX*»)
  • fulldirhash (0; улучшенный алгоритм разнесения каталогов пользователей по различным директориям для ускорения доступа к файловой системе; нельзя менять на ходу, см. утилиту rehash)
  • hashimapspool (0; разносить по подкаталогам не только управляющие файлы, но и каталоги с данными пользователей)
  • idlesocket (базовый-каталог/socket/idle; сокет для сервиса idled)
  • ignorereference (0; игнорировать первый аргумент команд LIST и LSUB)
  • imapidlepoll (60; интервал — в секундах — опроса ящика на наличие изменений при обработке команды IDLE, а сервис idled недоступен; 0 запрещает использование опроса для реализации IDLE)
  • imapidresponse (1; выдавать на команду ID сведения о себе)
  • imapmagicplus (0; обработка «плюсового» пространства имён: имя-пользователя+имя-ящика
  • implicit_owner_rights (lca; неявнодобавляемые владельцу ящика права)
  • @include (; интерпретировать содержимое файла как часть конфигурации)
  • lmtp_downcase_rcpt (false; конвертировать адрес получателя к строчным буквам)
  • lmtp_fuzzy_mailbox_match (false; попытаться подбрать подходящее имя вложенного ящика для «плюсового» пространства имён)
  • lmtp_over_quota_perm_failure (false; при переполнении ящика выдавать не временный код ошибки, а постоянный)
  • lmtp_strict_quota (false; не допускать переполнения ящика)
  • lmtpsocket ($/socket/lmtp)
  • loginrealms (; ?)
  • loginuseacl (0; любой, у кого есть права на ящик пользователя INBOX могут входить под именем этого пользователя; ?!)
  • logtimestamps (0; заносить в протоколы (см. каталог log) временные интервалы)
  • mailnotifier (; метод извещения о поступлении почты; см. notifyd(8))
  • maxmessagesize (0; максимальный размер сообщения по LMTP)
  • mboxkey_db (skiplist; формат БД для ключей: berkeley, skiplist)
  • mboxlist_db (skiplist; формат БД для имён ящиков: berkeley, skiplist)
  • metapartition_files (; список метаданных, которые хранить не вместе с письмами пользователя, а в отдельном разделе: header, index, cache, expunge, squat)
  • metapartition-name (; имя раздела для хранения метаданных)
  • md5_dir (/var/lib/imap/md5; кеш для make_md5)
  • md5_user_map (?)
  • munge8bit (true; заменять запрещённые RFC822 символы со взведённым 8-м битом в заголовках на ‘X’)
  • netscapeurl (http://asg.web.cmu.edu/cyrus/imapd/netscape-admin.html; URI для HTTP-управления почтовым сервером)
  • normalizeuid (false; приводить идентификатор пользователя к строчным буквам и удалять пробелы)
  • notifysocket (базовый-каталог/socket/notify; сокет, используемый сервером извещений о новой почте notifyd)
  • partition-имя_раздела (; имя каталога, в котором лежат все файлы данного раздела)
  • plaintextloginpause (0; секунд паузы после успешной аутентификации открытым паролем, чтобы раздолбаям жизнь мёдом не казалась)
  • plaintextloginalert (текст сообщения для них)
  • popminpoll (0; минимальный интервал в минутах между входами в режиме POP)
  • popsubfolders (false; позволяет доступ к вложенным ящикам в режиме POP3 (имя-пользователя+имя-ящика))
  • poptimeout (10; в минутах)
  • popuseacl (false; использовать ACL в режиме POP3: r — право на чтение, d — право на удаление сообщений)
  • postuser («»; какое псевдоимя использовать для посылки в разделяемые ящики; по умолчанию пустое — «+имя-ящика.имя-вложенного-ящика»)
  • proxyservers (; список пользователей и групп через пробел, которым позволено аутентифицироваться от имени любых других пользователей (при аутентификации проверяется их имя/пароль, а при авторизации используются права указанного пользователя))
  • quota_db (quotalegacy; формат БД: flat, berkeley, berkeley-hash, skiplist, quotalegacy)
  • quotawarn (90; начиная с какого процента заполнения начинать выдавать предупреждения)
  • quotawarnkb (начиная с какого размера оставшегося пространства начинать выдавать предупреждения)
  • reject8bit (false; не принимать сообщения с символами со взведённым 8-м битом в заголовках — запрещено RFC822)
  • rfc2046_strict (0; строгая проверка правил написания граничных строк MIME)
  • sasl_auto_transition (см. SASL)
  • sasl_maximum_layer (256; максимальный поддерживаемый фактор безопасности)
  • sasl_minimum_layer (0; 1 — обеспечение целостности, 2 — шифровка)
  • sasl_pwcheck_method (; метод проверки открытого пароля: auxprop, saslauthd, pwcheck)
  • seenstate_db (skiplist; формат БД для информации о прочитанности сообщений: flat, berkeley, skiplist)
  • servername (`hostname`; имя сервера, показываемое в приветствиях)
  • sharedprefix («Shared Folders»; префикс разделяемых ящиков при использовании альтернативного пространства имён)
  • singleinstancestore (true; сообщение для нескольких получателей хранить только в одном экземпляре, используя жёсткие ссылки)
  • skiplist_unsafe (0; не делать sync при записи в БД формата skiplist)
  • soft_noauth (true; lmtp возвращает сообщение о временной ошибке при неудачной аутентификации)
  • srvtab (; имя файла, содержащего приватный ключ сервера, передаётся SASL; зачем он ему?)
  • submitservers (; список имён пользователей и групп, ?)
  • subscription_db (flat; формат БД для списка подписки: flat, berkeley, berkeley-hash, skiplist)
  • syslog_prefix (; добавляется к имени процесса в syslog)
  • temp_path (/tmp)
  • timeout (30; закрывать соединение через указанное число минут неактивности; минимум — 30)
  • tls_ca_file (; файл с сертификатами CA)
  • tls_ca_path (; каталог с файлами сертификатов CA; имена файлов д.б. хешами сертификатов)
  • tlscache_db (berkeley-nosync; формат БД: berkeley, berkeley-nosync, berkeley-hash, berkeley-hash-nosync, skiplist)
  • tls_cert_file (; имя файла с сертификатом сервера или строка «disabled»)
  • tls_cipher_list (DEFAULT)
  • tls_key_file (; имя файла с приватным ключом сервера или строка «disabled»)
  • tls_require_cert (0; требовать сертификат клиента)
  • tls_session_timeout (1440; кешировать TLS сессию указанное число минут; максимальное значение — 1440)
  • umask (077)
  • username_tolower (1; преобразовывать имена пользователей к строчным буквам; для LDAP — обязательно)
  • userprefix («Other Users»; префикс чужих ящиков при использовании альтернативного пространства имён)
  • unix_group_enable (1; )
  • unixhierarchysep (0; использовать ‘/’ вместо ‘.’ в качестве разделителя простых имён в иерархии)
  • virtdomains (off; поддержка виртуальных доменов: userid — имя домена извлекается из имени пользователя после ‘@’ или ‘%’; on — имя домена определяется по IP адресу клиента)
  • параметры для использования SASL: любые опции Cyrus SASL с добавлением префикса «sasl_» к имени опции
  • параметры для использования LDAP как средства аутентификации: ldap_*
  • параметры для murder: force_sasl_client_mech, hostname_mechs, hostname_password, mupdate_*, proxy_authname, proxy_password, proxy_realm, proxyd_allow_status_referral
  • параметры для USENET: newsmaster, newspeer, newspostuser, newsprefix, nntptimeout
  • параметры для sieve: autocreate_sieve_script, postmaster, generate_compiled_sieve_script, autocreate_sieve_compiledscript, rfc3028_strict, sendmail, sendsms, sieve_allowreferrals, sieve_extensions, sieve_maxscriptsize, sieve_maxscripts, sievedir, sievenotifier, sieveusehomedir, anysievefolder, autosievefolders
  • параметры для аутентификации PTS, AFS, Kerberos: afspts_localrealms, afspts_mycell, pts_module, ptloader_sock, ptscache_db, ptscache_timeout, ptskrb5_convert524, ptskrb5_strip_default_realm
  • параметры для сервера синхронизации: sync_*

pop3d — сервер POP3. Общается с клиентом через стандартный ввод/вывод, т.е. должен запускаться с помощью master. Ключи:

  • -C имя-конфигурационного-файла
  • -U число-обслуживаемых-клиентов (250; потом необходимо перезапустить процесс)
  • -T секунд (60; ждать следующего соединения)
  • -s (включить SSL)
  • -k (использовать KPOP)

Разделяет конфигурационный файл с imapd. Специфические опции:

  • popexpiretime (-1; угрожать удалить старые сообщения через указанное число дней)
  • popminpoll (0; минимальный интервал между аутентификациями)
  • poptimeout (10; автоматически завершать сеанс после указанного числа минут бездействия; минимум — 10)
  • popuseacl (0; использовать ACL: r — читать, d — удалять сообщения)

lmtpd — сервер LMTP. Общается с клиентом через стандартный ввод/вывод, т.е. должен запускаться с помощью master. Требуется аутентификация администратора. Ключи:

  • -C имя-конфигурационного-файла
  • -U число-обслуживаемых-клиентов (250; потом необходимо перезапустить процесс)
  • -T секунд (60; ждать следующего соединения)
  • -a (не требовать LMTP AUTH)

Разделяет конфигурационный файл с imapd. Специфические опции:

  • lmtp_downcase_rcpt (0; lmtpd преобразует идентификаторы получателей к строчным буквам)
  • lmtp_over_quota_perm_failure (0; при переполнении ящика возвращать сообщение о постоянной ошибке (5xx) вместо сообщения о временной ошибке (4xx))
  • lmtpsocket (базовый-каталог/socket/lmtp; сокет для сервиса lmtpd, используется deliverб должен совпадать с указанным в cyrus.conf)
  • maxmessagesize (0)
  • reject8bit (0; отвергать письма с 8-битными символами в заголовках или всего лишь заменять такие символы на ‘X’)
  • singleinstancestore (1; сообщение нескольким получателям хранится в одном экземпляре)
  • soft_noauth (1; возвращать код временной ошибки (4xx) при неверной аутентификации)

Утилита deliver может использоваться почтовым сервером для раскладки приходящей почты по ящикам (предпочтительно использование lmtpd). Общается с клиентом через стандартный ввод/вывод, в качестве параметров указываются идентификаторы получателей. Ключи:

  • -C имя-конфигурационного-файла
  • -d (игнорируется; присутствует для совместимости с /bin/mail)
  • -r адрес (вставлять Return-Path:)
  • -f адрес (вставлять From)
  • -a идентификатор-авторизации-отправителя (по умолчанию — anonymous)
  • -m имя-ящика (сообщение кладётся в ящик с именем: «user.идентификатор-получателя.имя-ящика», если у отправителя есть право «p», иначе в «user.идентификатор-получателя.INBOX»)
  • -q (не обращать внимание на переполнение ящика)
  • -l (использовать протокол LMTP)

Разделяет конфигурационный файл с imapd.

Подходит для восстановления почтовых сообщений из резервной копии (временно разрешить unix-сокет интерфейс).

cyradm представляет собой оболочку для perl-модуля администрирования сервера Cyrus::IMAP::Shell. Можно использовать непосредственно в интерактивном режиме (возможно, необходимо установить переменную окружения PERL5LIB равной /usr/local/lib/perl5/site_perl/5.8.0) или в скриптах на perl:

Команды в интерактивном режиме можно разделять в строке символами ‘;’. Ввод/вывод команд может быть переназначен аналогично /bin/sh (pipe не реализован). Редактирование строки реализовано средствами readline (история и т.д.). Команды:

  • help
  • exit
  • connect [—noauthenticate] имя-сервера (аутентификация происходит с именем unix-пользователя)
  • disconnect
  • authenticate [—minssf уровень] [—maxssf уровень] [—mechanisms список] [имя-пользователя]
  • setinfo атрибут значение (значение «none» удаляет атрибут; атрибуты сервера:
    • motd
    • comment
    • admin (email администратора)
    • shutdown
    • expire (через какое число дней после поступления удалять сообщение)
    • squat (?)
  • version
  • createmailbox [—partition имя-раздела] имя-ящика
  • mboxconfig имя-ящика атрибут значение (значение «none» удаляет атрибут; атрибуты:
    • comment
    • expire (через какое число дней после поступления удалять сообщение)
    • squat (?)
    • news2mail (на этот адрес будут приходить сообщения по NNTP?)

  • listmailbox [—subscribed] [шаблон [ссылка]] (в шаблоне можно использовать ‘*’ и ‘%’ (всё, кроме); ссылку можно рассматривать как начальную точку в иерархии имён)
  • info имя-ящика
  • renamemailbox [—partition имя-раздела] имя-ящика новое-имя-ящика
  • deletemailbox имя-ящика (предварительно необходимо назначить себе права для удаления ящика (обычно «c») командой setaclmailbox)
  • setaclmailbox имя-ящика идентификатор-пользователя права . (права могут задаваться в виде набора прав доступа или мнемонических обозначений — none, read (lrs), post (lrsp), append (lrsip), write (lrswipcd), all)
  • listaclmailbox имя-ящика
  • deleteaclmailbox имя-ящика идентификатор-пользователя
  • setquota корень-квотируемого-поддерева STORAGE ограничение (в байтах? значение «none» удаляет квоту)
  • listquotaroot имя-ящика (найти квотируемое поддерево и показать квоту)
  • listquota корень-квотируемого-поддерева
  • cd имя-каталога

В комплекте поставляются средства тестирования и они вам понадобятся.

imtest позволяет не только тестировать указанный сервер (протокол IMAP), но и администрировать его вместо cyradm (простейшие команды). Ключи:

  • -t имя-файла (STARTTLS; файл должен содержать публичные и приватные ключи клиента в формате PEM (как их делать?); можно указать «» для включения TLS без аутентификации клиента)
  • -p порт
  • -m SASL-механизм (по умолчанию — сильнейший из имеющихся; можно также указать механизм login)
  • -a идентификатор-аутентификации (по умолчанию имя unix-пользователя)
  • -u идентификатор-авторизации (по умолчанию имя unix-пользователя)
  • -k минимальный-уровень-защиты (0 — без защиты, 1 — целостность, 2 — шифрование)
  • -l максимальный-уровень-защиты
  • -r область-действия (realm)
  • -f имя-файла (после авторизации читать команды из файла)
  • -n число-попыток-аутентификации (клиент будет пытаться повторно использовать TLS сессию или упрощённую аутентификацию DIGEST-MD5)
  • -s (SSL, imaps)
  • -x имя-сокета (использовать сокет для интерактивной части)
  • -X имя-сокета (использовать сокет для интерактивной части, закрыть дескрипторы файлов и уйти в фоновый режим)
  • -I имя-файла (для режима -X, записать p >

pop3test позволяет соединиться с сервером используя протокол POP3 и выдавать произвольные команды. Ключи те же самые, что и у imtest (в качестве механизма можно указать user (обычные имя/пароль) или apop), кроме ключа -z.

lmtptest позволяет соединиться с сервером используя протокол LMTP и выдавать произвольные команды. Ключи те же самые, что и у pop3test.

Механизм PLAIN без шифрования в тестовых программах не работает, несмотря на указание «-k 0»

fud — сервер, позволяющий удалённо извлекать информацию о пользователе (сколько сообщений получено в ящик, когда было последнее сообщение, когда было последнее чтение).

smmapd — проверка наличия почтового ящика и места в нём.

mupdate — синхронизация нескольких серверов Cyrus IMAP.

timsieved — позволяет управлять скриптами sieve (антиспам фильтр) удалённо.

tls_prune — очистка кеша TLS. Запускается раз в сутки программой master. Параметр: -C имя-конфигурационного-файла (/etc/imapd.conf). Опция конфигурационного файла — tls_session_timeout.

cyr_expire — удаление старых данных из БД дубликатов и старых писем. Запускается раз в сутки программой master. Параметры: -C имя-конфигурационного-файла (/etc/imapd.conf); -v (болтливость); -E дней. Время хранения может определяться отдельно для поддерева с помощью аннотации /vendor/cmu/cyrus-imapd/expire (?).

ctl_cyrusdb — создание контрольных точек и восстановление баз данных. Запускается программой master в начале работы (-r) и с определённым интервалом (-c). Параметры: -C имя-конфигурационного-файла (/etc/imapd.conf); -r — восстановление и очистка баз данных; -x — только восстановление (без очистки); -c — создание контрольной точки (и сколько их?).

ctl_deliver — обслуживание БД дупликатов. Параметры: -C имя-конфигурационного-файла (/etc/imapd.conf); -d (выдача содержимого в текстовом виде на stdout); -f имя-файла-БД (deliver.db).

ctl_mboxlist — обслуживание БД списка почтовых ящиков. Общий параметр: -C имя-конфигурационного-файла (/etc/imapd.conf). Операции:

  • -d (выдача содержимого в текстовом виде на stdout); -f имя-файла-БД (mailboxes.db); -p раздел (ограничиться разделом); -x (удалить распечатанные ящики)
  • -u (загрузить со stdin; предполагается результат предыдущего дампа); -f имя-файла-БД (mailboxes.db)
  • -m (синхронизация списка с mupdate); -f имя-файла-БД (mailboxes.db)

Например, если при запуске главного процесса он не может развернуть БД из mailboxes.db то его можно восстановить из резервной копии

reconstruct — не реализована самая важная функция (восстановление всей БД — ключ «m»).

mbpath — определить по имени ящика имя в файловой системе. Параметры: -C имя-конфигурационного-файла (/etc/imapd.conf); -q (не сообщать об ошибках); -s (останавливать обработку при ошибке).

cvt_cyrusdb — преобразовать БД сервера из одного формата в другой. Необходимо указать старый файл, формат старого файла, новый файл, формат нового файла. Параметр: -C имя-конфигурационного-файла (/etc/imapd.conf). Если вызвать без аргументов, то показывает список форматов (berkeley, berkeley-nosync, flat, skiplist, quotalegacy).

Настройка БД лежит в файле /var/lib/imap/db/DB_CONFIG

Статистика о использовании памяти и кеша:

Статистика о журналах БД

  1. предварительно необходимо иметь
    • Cyrus SASLv2
    • Berkeley DB той же версии, что использовалась для сборки Cyrus SASL
    • Perl 5 (для скриптов установки и cyradm)
    • OpenSSL (для STARTTLS и imaps:, pop3s:)
    • MTA с поддержкой LMTP (и AUTH) (exim)
  2. устанавливаем пакеты cyrus-imapd, cyrus-imapd-perl и cyrus-imapd-utils (пользователь cyrus (76) в группы mail (12) и saslauth (76), сюда также входят nntp и mupdate)
    • /etc/cyrus.conf, /etc/imapd.conf
    • /etc/logrotate.d/cyrus-imapd
    • /etc/cron.daily/cyrus-imapd (ежедневное копирование оглавления базы почтовых ящиков)
    • /etc/pam.d/ (csync, imap, lmpt, pop, sieve, mupdate, nntp)
    • /etc/pki/cyrus-imapd (самоподписанные сертификаты, заменить на свои)
    • /etc/rc.d/init.d/cyrus-imapd, /etc/sysconfig/cyrus-imapd (сервис cyrus-imapd)
    • /usr/lib/cyrus-imapd/ (на самом деле здесь лежат программы сервера, причём 64-битные)
    • /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/ (auto/Cyrus/, Cyrus/)
    • /var/lib/imap/ (служебные файлы)
    • /var/spool/imap/ (почтовые сообщения)
    • /usr/bin (утилиты cyradm, installsieve, imtest, lmtptest, mupdatetest, nntptest, notifytest, pop3test, sieveshell, sivtest, smtptest, synctest)
    • /usr/share/cyrus-imapd/ (дополнительные скрипты)
    • /usr/share/doc/cyrus-imapd-2.3.7/
    • /usr/share/doc/cyrus-imapd-perl-2.3.7/
    • /usr/share/man/
  3. настройка syslog (источник MAIL) на сервере журналов
  4. настройка /etc/cyrus.conf (отключить !)
  5. настроить и запустить saslauthd (pam)
  6. обеспечить права на /var/spool/imap
  7. установить пароль для cyrus
  8. завести пользователей (домашний каталог в /tmp, /sbin/nologin)
  9. service cyrus-imapd start
  10. chkconfig —level 345 cyrus-imapd on
  11. пробный доступ к почтовому ящику в режимах plain (вручную), TLS/plain (pop3test), STARTLS (pop3test)
  12. наполнение БД
  13. если имеются проблемы с cyradm (TLS, imclient_ha.al), то можно использовать (команды придётся вводить вручную)
  14. дырки в сетевом экране (iptables)
  15. после отладки: chkconfig -add cyrus-imapd
  1. предварительно необходимо иметь
    • Cyrus SASLv2, адаптированный для использования шифрованных паролей
    • Berkeley DB той же версии, что использовалась для сборки Cyrus SASL (db4-utils)
    • Perl 5 (для скриптов установки и cyradm)
    • OpenSSL (для STARTTLS и imaps:, pop3s:)
    • MTA с поддержкой LMTP (и AUTH) (exim)
  2. устанавливаем пакеты cyrus-imapd, cyrus-imapd-perl и cyrus-imapd-utils (пользователь cyrus (76) в группы mail (12) и saslauth (76), теперь сюда входят nntp и mupdate)
    • /etc/cyrus.conf, /etc/imapd.conf
    • /etc/logrotate.d/cyrus-imapd
    • /etc/cron.daily/cyrus-imapd (ежедневное копирование оглавления базы почтовых ящиков)
    • /etc/pam.d/ (csync, imap, lmpt, pop, sieve, mupdate, nntp)
    • /etc/pki/cyrus-imapd (?)
    • /etc/rc.d/init.d/cyrus-imapd, /etc/sysconfig/cyrus-imapd (сервис cyrus-imapd)
    • /usr/lib/cyrus-imapd/ (на самом деле здесь лежат программы сервера, причём 64-битные)
    • /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/ (auto/Cyrus/, Cyrus/)
    • /var/lib/imap/ (служебные файлы)
    • /var/spool/imap/ (почта)
    • /usr/bin (утилиты cyradm, installsieve, imtest, lmtptest, mupdatetest, nntptest, notifytest, pop3test, sieveshell, sivtest, smtptest, synctest)
    • /usr/share/cyrus-imapd/ (дополнительные скрипты)
    • /usr/share/doc/cyrus-imapd-2.3.7/
    • /usr/share/doc/cyrus-imapd-perl-2.3.7/
    • /usr/share/man/
  3. настройка syslog (источник MAIL) на сервере журналов
  4. настройка /etc/cyrus.conf (отключить )
  5. ошибка в /etc/cron.daily/cyrus-imapd (lib на lib64) наложилась на странное расположение 64-битных программ /usr/lib/cyrus-imapd/
  6. настройка /etc/imapd.conf (всё в /var/lib/imap)
  7. /usr/lib/cyrus-imapd/tls_prune (под cyrus)
  8. /usr/lib/cyrus-imapd/cyr_expire -E 3 -v (под cyrus)
  9. для пробы: service cyrus-imapd start
  10. наполнение БД
  11. если имеются проблемы с cyradm (TLS, imclient_ha.al), то можно использовать (команды придётся вводить вручную)
  12. дырки в сетевом экране (iptables)
  13. после отладки: chkconfig -add cyrus-imapd
  1. предварительно необходимо иметь
    • Cyrus SASLv2
    • Berkeley DB той же версии, что использовалась для сборки Cyrus SASL
    • Perl 5 (для скриптов установки и cyradm)
    • OpenSSL (STARTTLS и imaps:, pop3s:)
    • MTA с поддержкой LMTP (и AUTH)
  2. устанавливаем пакеты cyrus-imapd и cyrus-imapd-utils (пользователь cyrus (76) в группе mail (12))
    • /etc/cyrus.conf, /etc/imapd.conf
    • /etc/logrotate.d/cyrus-imapd
    • /etc/cron.daily/cyrus-imapd (ежедневное копирование базы почтовых ящиков)
    • /etc/pam.d/ (imap, lmpt, pop, sieve)
    • /etc/rc.d/init.d/cyrus-imapd, /etc/sysconfig/cyrus-imapd (сервис cyrus-imapd)
    • /usr/lib64/cyrus-imapd/ (на самом деле здесь лежат программы сервера)
    • /var/lib/imap/ (служебные файлы)
    • /var/spool/imap/ (почта)
    • /usr/bin (утилиты cyradm, installsieve, imtest, lmtptest, mupdatetest, nntptest, pop3test, sieveshell, sivtest, smtptest)
    • /usr/share/cyrus-imapd/ (дополнительные скрипты)
    • /usr/share/doc/cyrus-imapd-2.2.12/
    • /usr/share/man/
  3. настройка syslog (источник MAIL) на сервере журналов
  4. настройка /etc/cyrus.conf (отключить timsieved; lmtp будет внешний; cyr_expire пореже)
  5. создание незашифрованного ключа (cyrus:root, 400) и сертификата сервера, подпись сертификата в /var/lib/imap/ (сюда же корневой сертификат)
  6. /etc/sysconfig/cyrus-imapd (CYRUSOPTIONS=»»)
  7. поправить ошибку в /etc/cron.daily/cyrus-imapd (lib на lib64)
  8. настройка /etc/imapd.conf (всё в /var/lib/imap)
  9. /usr/lib64/cyrus-imapd/tls_prune (под cyrus)
  10. /usr/lib64/cyrus-imapd/cyr_expire -E 3 -v (под cyrus)
  11. для пробы: service cyrus-imapd start
  12. наполнение БД
  13. если имеются проблемы с cyradm (TLS), то можно использовать (команды придётся вводить вручную)
  14. iptables
  15. после отладки: chkconfig -add cyrus-imapd
  1. предварительно необходимо иметь
    • Cyrus SASLv2
    • Berkeley DB той же версии, что использовалась для сборки Cyrus SASL
    • Perl 5 (для скриптов установки и cyradm)
    • OpenSSL, 0.9.4 (STARTTLS и imaps:, pop3s:)
    • libwrap
    • Net-SNMP (для мониторинга сервера)
    • MTA с поддержкой LMTP (и AUTH)
  2. копируем и распаковываем архив с исходными текстами, полученными на сайте разработчика; заходим внутрь
  3. makedepend (если его нет)
    1. cd makedepend
    2. ./configure
    3. make
    4. cp makedepend /usr/local/bin/
    5. cd ..
  4. как был глюкодром 10 лет назад, так и остался: родная директория д.б. /var/imap; монитор SNMP не собирается; разработчики пользуются для аутентификации Kerberos (кстати, нужен CPPFLAGS=-I/usr/kerberos/include), а остальные методы реализованы «для галочки»; конфигурационные файлы (cyrus.conf и imapd.conf) ищутся в /etc, несмотря на установку /usr/local
  5. ./configure —with-cyrus-prefix=/usr/local/cyrus —with-cyrus-user=cyrusimapd —with-cyrus-group=cyrusimapd —with-auth=unix —without-ucdsnmp —disable-sieve —sysconfdir=/var/imap —with-syslogfacility=LOCAL5 —disable-cmulocal —disable-murder —with-com_err=/usr
  6. [правим imap/message.c (message_copy_strict), чтобы разрешал русские буквы в заголовке] или достаточно reject8bit?
  7. правим вызов telemetry_log в imap/pop3d.c, imap/lmtpengine.c, imap/nntpd.c и imap/imapd.c (по нескольку раз, последний параметр д.б. 1, чтобы имя файла содержало время)
  8. make depend
  9. make all CFLAGS=-O2
  10. создаём группу cyrusimapd (79, с нужными членами) и пользователя cyrusimapd (79, по аналогии с exim)
  11. make install
    • /usr/local/man/man1 (imtest.1, pop3test.1, nntptest.1, lmtptest.1, smtptest.1, sivtest.1, mupdatetest.1, installsieve.1, sieveshell.1)
    • /usr/local/man/man3 (imclient.3)
    • /usr/local/man/man5 (imapd.conf.5, krb.equiv.5, cyrus.conf.5)
    • /usr/local/man/man8 (arbitron.8, cyr_expire.8, deliver.8, fud.8, imapd.8, pop3d.8, quota.8, reconstruct.8, rmnews.8, syncnews.8, mbpath.8, timsieved.8, master.8, lmtpd.8, )
    • /etc/rc.d/init.d/cyrus-imapd можно взять из FC3 (поправить под свою конфигурацию, при остановке удалить /var/run/cyrus-master.p >

  1. копируем
  2. распаковываем
  3. нужен новый Tcl/Tk
  4. ./configure —with-cyrus-prefix=/usr/local/cyrus —with-cyrus-user=bog —with-cyrus-group=mail —with-login=unix —with-pwcheck=getspnam
  5. правим imap/login_unix.c, так чтобы он читал пароли из того же файла, что и мой sendmail
  6. правим lib/auth_unix.c (auth_canonifyid), чтобы разрешал подчеркивания в именах пользователей
  7. правим imap/message.c (message_copy_strict), чтобы разрешал русские буквы в заголовке
  8. правим imap/pop3d.c (cmdloop):
    lcase( popd_userid ); после ввода имени пользователя
  9. в имя log-файла вставляем вместо getpid() время создания (imap/pop3d.c и imap/imapd.c — в двух местах)
  10. добавил опцию autosetquota в файл конфигурации и поправил imap/imapd.c (cmd_create);
  11. создал программу для локального администрирования bog_admin (на входе файл, каждая строка задает команду: первое слово имя команды, пока только create, второе слово почтовое имя, третье параметр — для create размер ящика);
  12. в фильтре против спамеров указываем, что cyrus — это локальный почтовый агент
  13. правим imap/config.c, imap/krbck.c (вот маньяки)
    • #define CONFIG_FILENAME «/usr/local/etc/imapd.conf»
    • LOG_LOCAL6 на LOG_LOCAL5
  14. make RANLIB=touch (я не знаю что делает ranlib, но после него ld грохается)
  15. make install (root) (/usr/local/lib/libcyrus.a, куча документации, /usr/local/include/cyrus, collectnews syncnews imapd pop3d arbitron reconstruct quota updateimsp deliver feedcyrus в /usr/local/cyrus/bin)
  16. добавляем в /etc/syslogd
    local5.debug /var/log/imapd.log
    и говорим на него touch (syslogd не забудь перезапустить)
  17. заполняем /usr/local/etc/imapd.conf
  18. создаем директорию /var/imapd с правами bog:mail (750)
  19. в ней создаем пустой файл mailboxes и директории user quota proc log msg с аналогичными правами
  20. создаем директорию для раздела по умолчанию: /var/imapd/partition-default и права аналогично
  21. в /etc/services добавляем
    pop3 110/tcp
    imap 143/tcp
  22. в /etc/inetd.conf добавляем (с поправкой на существующую конфигурацию) и перезапускаем inetd
    imap stream tcp nowait bog /usr/local/cyrus/bin/imapd imapd
    pop3 sream tcp nowait bog /usr/local/cyrus/bin/pop3d pop3d
  23. из rmnews делаем bog_rmarticles для удаления писем (убирая лишнее и исправляя ошибки);
    делаем процедуру bog_delete_old_mail.sh, которая ищет find’ом старые письма и подсовывает их адреса bog_rmarticles;
    вставляем вызов этой процедуры в crontab ежедневно из-под своего имени

Если в журнале масса записей вида «SQUAT failed», то это признак отсутствия индексного файла, который используется для поиска в почтовом ящике.

Создание (разовое) индексного файла для ящика пользователя (рекурсивно), файл cyrus.squat прямо в ящике:

Регулярное выполнение: в cyrus.conf в разделе EVENS добавить squatter cmd=»/usr/lib/cyrus-imapd/squatter -r user» at=0400

И теперь мы получаем другую ошибку: «SQUAT string list search failed on string».


  • отличия 2.3.15 от 2.3.7
    • поддержка BDB 4.5 и 4.6
    • утилита cyr_synclog для добавления сообщений в журнал репликации
    • ключи -g и -G для утилиты reconstruct
    • поддержка отложенного удаления (опции delete_mode и deletedprefix) и восстановления
    • сертификата TLS клиента может быть достаточно для аутентификации LMTP
    • опция serverinfo позволяет управлять информацией, которую сервер выводит в приглашении
    • строки продолжения в файлах настройки (обратная косая черта в конце строки)
    • ключ mbexamine для проверки правильности длин сообщений и квот
    • инкрементальный режим squatter
    • расширение IMAP SCAN для межъящичного поиска
    • опции для sieve: sieve_utf8fileinto, sieve_sasl_send_unsolicited_capability, sieve_sasl_expect_unsolicited_capability
    • возможность хранить cyrusdb в СУБД (MySQL, PostgreSQL, SQLite), опции sql_*
    • усовершенствована репликация
    • опция mailbox_default_options
    • утилита cyr_df показывает свободное место на разделе с почтой
    • поддержка IMAP COMPRESS
    • user_deny.db для запрета доступа определённым пользователям
    • опция disconnect_on_vanished_mailbox
    • опция popuseimapflag
    • опция annotation_definitions
    • опция sync_compress (сжатие репликаций)
    • опция user_folder_limit (ограничение на число папок)
  • отличия 2.3.7 от 2.2.13
    • множество изменений в Sieve
    • ctl_mboxlist пишет/читает флаги типа почтового ящика
    • репликация mailspool
    • отложенный expunge (сообщения помечаются в индексе сразу, а из файла удаляются утилитой cyr_expire); опция expunge_mode
    • возможность вынести метаданные на отдельный раздел; опции metapartition и metapartition_files
    • доступ к вложенным ящикам по протоколу POP3; опция popsubfolders
    • нечёткое соответствие имён почтовых ящиков и адресов; опция lmtp_fuzzy_mailbox_match
    • 64-битные квоты
    • опция flushseenstate
    • поддержка IMAP команд CATENATE и URLAUTH
    • ACL совместимы с RFC 4314 (разделение прав на удаление сообщений, удаление ящика и очистку)
    • опция nntptimeout
    • поддержка TLS в cyradm
    • поддержка BINARY APPEND
    • поддержка CONDSTORE (конфигурируется на уровне почтового ящика)
    • выдача CAPABILITY при соединении и аутентификации
    • ключ «-p» позволяет использовать аутентификацию PLAIN без TLS
    • опция munge8bit позволяет управлять заменой некодированных символов со взведённым старшим битом в заголовках на «X»
    • опция improved_mboxlist_sort для управления сортировкой имён
    • утилита cyr_dbtool
  • отличия 2.2.13 от 2.2.12
    • расширение IMAP U >

      • . login почтовое-имя пароль
      • . logout
      • . create user.почтовое-имя
      • . setquota user.почтовое-имя (storage размер-в-КБ)
      • . rename старое-имя новое-имя
        работает только для вложенных ящиков
      • . getquota user.почтовое-имя
      • Удаление:
        1. . setacl user.почтовое-имя имя-администратора c
        2. . delete user.почтовое-имя

      imapsync — утилита синхронизации почтовых ящиков (perl). Установка:

      • скачать и распаковать архив
      • проверить наличие необходимых perl модулей
        perl -c imapsync
      • доставить недостающие (посмотреть в INSTALL, мне потребовался Mail::IMAPClient (пакет perl-Mail-IMAPClient.noarch, 2.2.9; perl-IO-Socket-SSL; perl-Net-SSLeay) и необнаруженные проверкой perl-DateManip, perl-TermReadKey
      • make install
        • /usr/bin/imapsync
        • /usr/share/man/man1/imapsync.1
      • imapsync —help
      • imapsync —justconnect —host1 откуда —host2 куда # тестирование соединения

      Простое копирование ящика со старого сервера на новый (пароли запрашиваются):

      Для преобразования почтового ящика в формате maildir (каждое письмо в отдельном файле) в формат mbox для чтения её локальными почтовыми клиентами (например Thunderbird):

      Bog BOS: Cyrus: POP3/IMAP сервер: установка, доработки, настройка

      Cyrus IMAP сервер — Cyrus IMAP server

      сервер Cyrus IMAP
      Разработчики) Университет Карнеги Меллон
      Стабильная версия
      Написанная С
      Тип Агент доставки почты
      Лицензия Первоначальная лицензия BSD
      Веб-сайт WWW .cyrusimap .org

      Сервер Cyrus IMAP является электронной почтой сервер программного обеспечения , разработанное Университетом Карнеги — Меллона . Он отличается от других Internet Message Access Protocol (IMAP) реализаций сервера в том , что она , как правило , предназначены для работы на закрытых серверах , где обычные пользователи не могут войти в систему .

      содержание

      обзор

      Буфер почты использует расположение файловой системы и формат , похожий на Maildir формат , используемый другими популярными почтовых серверов , таких как Qmail , Courier , Dovecot и т.д. Пользователи могут получать доступ к почте через IMAP / IMAP-S, POP3 / POP3-S или KPop протоколов ,

      Сервер Cyrus IMAP поддерживает фильтрацию на стороне сервера электронной почты посредством реализации языка фильтрации почты под названием Сито .

      Частный дизайн базы данных почтовых ящиков дает сервера значительные преимущества в эффективности , масштабируемости и эффективности администрирования . Несколько соединений одновременно на чтение / запись к тому же почтовому ящику. Сервер поддерживает списки контроля доступа почтовых ящиков и квоты для хранения на иерархии почтовых ящиков.

      В версии 2.4.17, есть поддержка CalDAV и CardDAV обеспечить интегрированное календарное и электронную почту решение, а также поддержкой для просмотра электронной почты через RSS читатель .

      история

      До 1994 года , Университет Карнеги — Меллон электронной почты «s была основана на локально развитый и нестандартной в системе Эндрю сообщениями (AMS) — написано в начале 1980 — х лет в рамках проекта Эндрю . Это было очень прогрессивным для своего времени, но были серьезные проблемы масштабируемости и Carnegie Mellon хотел перейти на соответствующие стандартам почтовой системы , которые выполнены или перевыполнены набор функций AMS.

      В 1994 году Отдел вычислительных услуг в Карнеги — Меллона решают эти задачи путем запуска проекта Сайрус. В 1998 году Карнеги — Меллона размещены все его входящие первокурсников (класс 2002) на сервере Cyrus впервые и в декабре 2001 года, bboard доступ (который был зеркальным от AMS Киру), рассечение над Киру полностью. AMS был окончательно прекращен в мае 2002 года.

      Отдел компьютерных служб позже разработал Cyrus «Убийство» кластеризацию, и после нескольких пересмотров развернуты его в Карнеги — Меллона летом 2002 года.

      Несколько членов команды разработчиков Сайрус в Карнеги — Меллона пошел дальше , чтобы стать лидерами в разработке крупномасштабных электронных почтовой инфраструктуры в других местах: Джон Гардинер Майерс был главный архитектор Узел почтовой инфраструктуры в America Online ; и Роб Siemborski работал на Gmail инфраструктуры в Google.

      Осенью 2020 Carnegie Mellon объявил об отставке Cyrus IMAP в качестве службы электронной почты для хранения, с пользователями Cyrus требуется выбирать между на кампусе Microsoft Exchange и Google «G Сюита» вне кампуса почты.

      Cyrus-imap настройка

      Нужна помощь в настройке pop3 протокола на базе Cyrus-imap-2,3 Вот мой imapd.conf

      sasl_mech_list: PLAIN CRAM-MD5 DIGEST-MD5

      Вот что получается, когда telnet localhost 110 +OK example.com Cyrus POP3 v2.3.7-Invoca-RPM-2.3.7-2.el5 server ready

      +OK Name is a valid mailbox

      -ERR [SYS/PERM] Unable to locate maildrop: Mailbox does not exist

      В логе maillog пишется тоже самое:

      example.com pop3[6877]: Unable to locate maildrop user.test: Mailbox does not exist

      Куды капнуть, подскажите?

      Re: Cyrus-imap настройка

      нужно создавать ручками пользовательские ящики. заведи пользователя cyrus в системе, если еще нет. потом зайди через cyradm —user=cyrus —authz=cyrus localhost

      и сделай createmailbox test

      Re: Cyrus-imap настройка

      или createmailbox user.test, точно не помню

      Re: Cyrus-imap настройка

      cyradm —user=cyrus —authz=cyrus localhost

      cyradm: cannot connect to server

      Re: Cyrus-imap настройка

      cyradm через imap работает, у тебя imapd включен?

      Re: Cyrus-imap настройка

      А разве нельзя просто использовать один pop3? Я imap включил и тогда прошол cyradm !

      Re: Cyrus-imap настройка

      использовать можно, но управлять только через imap

      Re: Cyrus-imap настройка

      А формат почтовых ящиков другой получается, можно ли использовать ящики со старого сервера ipop3d /var/spool/mail

      Re: Cyrus-imap настройка

      Re: Cyrus-imap настройка

      >А формат почтовых ящиков другой получается, можно ли использовать ящики со старого сервера ipop3d /var/spool/mail

      самое тру — поднять одновременно два имапа и при помощи imapsync перекачать

      Re: Cyrus-imap настройка

      Не это сложновато и очень заморочено, я переключился на uw-imap-2007b-1.el5.i386+sasl, создал новый топ, поможешь?

      POP3 и IMAP: история почтовых протоколов и сбор писем по IMAP в Яндекс.Почте

      (посвящается Марку Криспину 19.07.1956 — 28.12.2012)

      Некоторое время назад в Яндекс.Почте появились сборщики писем по IMAP. В этом посте мы немного расскажем о двух важных почтовых протоколах — POP3 и IMAP — и о том, как они появились и используются в современных почтовых системах. Не всегда это так просто и очевидно, как ожидаешь от технологий, развивающихся уже почти 30 лет.

      Начнём наш экскурс в историю протоколов, через которые вы каждый день получаете свою сотню писем.

      Когда общаешься в Сети много месяцев и лет, обрастаешь множеством писем, а это сотни мегабайт и гигабайт переписки и файлов. Часто это не просто полезные файлы, по ним можно вспомнить и восстановить вехи жизни. Эти данные бывают ценнее чем содержимое локального диска компьютера.

      Иногда встаёт задача перейти на новую и более удобную почтовую систему, но мешают накопленные архивы писем. Бросить их на прежнем месте? Жалко. Пароли забываются. Бывает, утрачиваются номера мобильных и email-адреса, введённые для их восстановления. Однажды можно потерять архивы навсегда. Скачать на локальный жесткий диск? Переписать на болванку или флешку? Но они ненадёжны: ломаются, теряются, портятся.

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


      Долгое время единственным способом переноса архива почты между почтовыми системами с постоянной фоновой синхронизацией новых писем был протокол POP3. Возможность собирать почту с внешних POP3-серверов реализована везде и хорошо. Во всяком случае, настолько хорошо, насколько это позволяет протокол, а он имеет массу неприятных ограничений.

      POP3 ведёт свою историю с 1984 года, когда одна из сотрудниц Института Информатики в составе Университета Южной Калифорнии, Джойс Рейнольдс, опубликовала RFC 918 — предложение стандартного протокола для получения электронной почты (POP — Post Office Protocol). Через 4 года появилась третья редакция протокола POP, а текущая, современная версия стандарта на POP3 опубликована весной 1996 года, почти 17 лет назад.

      Важным принципом POP3 является оптимизация под короткие подключения к почтовому серверу в условиях дорогой и медленной связи. Изначально в рамках каждого подключения предполагалось скачивание всех писем из ящика на локальный диск, а затем очистка всего содержимого ящика. Точно так же работает ваш почтовый ящик для писем и газет в подъезде многоквартирного дома. В первой версии POP даже не было команд для чтения отдельных писем, только для полной выгрузки всего.

      Сейчас уже сложно представить, что электронные письма не хранили на серверах. Их перекачивали на локальный компьютер при первой возможности и читали, сортировали по адресатам, темам и важности локально.

      Интересно, что в протоколе POP2 была предусмотрена возможность работы с несколькими папками на сервере, но она оказалась невостребована, да и сам протокол распространения не получил. Поэтому в POP3 команду FOLD, которая реализовала эту возможность, убрали. POP2 обогнал время.

      Сейчас в POP3 нет возможности скачивать с сервера структуру папок, только «плоский» список писем, состоящий, как правило, либо из входящих писем, либо из объединения пользовательских папок. Невозможно учитывать флажки прочтённости и важности. Несмотря на эти ограничения, протокол всё ещё широко используется, в основном из-за своей простоты и очень широкой поддержки в любых устройствах.

      Было много попыток улучшить POP3, но ни одна из них не достигла такого успеха, как протокол IMAP, почти параллельно разивавшийся с 1985 года. История IMAP тоже весьма интересна. Например, первая реализация была сделана на Lisp-е, и его наследие навсегда осталось в протоколе в виде S-выражений, которыми кодируются сложные ответы сервера, такие как BODYSTRUCTURE.

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

      Последняя версия IMAP — 4rev1 — описана в документе RFC 3501, увидевшем свет в 2003 году. Несмотря на кажущийся возраст, протокол получился живым благодаря предусмотренному на ранних этапах механизму расширений. Этот механизм, конечно, тоже не без недостатков, но тем не менее, он позволил различным людям выпустить более пятидесяти публичных расширений, многие из которых были разработаны совсем недавно и нашли широкое применение.

      Современная почтовая система без поддержки доступа по IMAP — нонсенс. На протяжении нескольких лет Яндекс.Почта поддерживает IMAP в качестве сервера для работы из таких популярных клиентских программ, как Outlook, Thunderbird, Apple Mail, а также многочисленных мобильных клиентов. Кстати, именно благодаря смартфонам IMAP получил вторую волну развития. Если на персональных компьютерах уже довольно давно подавляющее большинство пользователей сделали выбор в пользу веб-интерфейса к своей почте, то с мобильными устройствами ситуация совсем не такая. Быстрые и красивые IMAP-клиенты, например в iOS, заставляют пересматривать подход к IMAP как к выбору исключительно профессиональных и «продвинутых» пользователей.

      Недавно в Яндекс.Почте появилась и функция IMAP-клиента — сборщика почты с внешних серверов по IMAP — в дополнение к POP3-сборщику.

      Функция не требует практически никакой настройки и рассчитана на фоновую работу после первого включения. При сборе почты через IMAP из-за описанных выше особенностей работы протокола в вашем почтовом ящике вы увидите ту структуру папок, к которой привыкли, когда пользовались предыдущей почтовой системой. Все прочтённые письма останутся прочтёнными, а непрочитанные — непрочитанными.

      Включить сбор с папками в Яндекс.Почте можно со всех почтовых систем, поддерживающих протокол IMAP. Протокол непростой, у каждой реализации IMAP-сервера есть свои закидоны, и нам было важно в первую очередь обработать самый массовый вариант перехода со старой почты на новую.

      По-прежнему кроме самих писем импортируются контакты из адресных книг самых распространённых почтовых сервисов.

      Протокол IMAP заметно сложнее чем POP3 и просто по набору возможностей и команд, и по некоторых базовым принципам функционирования. Например, в IMAP используется тегирование команд клиента и ответов сервера на эти команды, что позволяет серверу отвечать на команды в произвольном порядке.

      Каждая команда должна быть предварена некоторым идентификатором — тегом, который затем будет использован сервером при генерации ответа на эту команду. Это позволяет «беседе» клиента с сервером быть абсолютно асинхронной — сервер вправе отвечать на команды клиента в любом порядке, так как теги позволяют однозначно сопоставить ответ ранее поданной команде. Более того, сервер может выполнять такие команды одновременно, ускоряя скорость работы с почтой, и Яндекс.Почта умеет это использовать. Одновременно это требует особого подхода к программированию как клиента, так и сервера. Если вам в этом месте вспомнился механизм sequence numbers в TCP, то запишите себе +1 в geek cred :)

      Для реализации IMAP-сборщика внутри Яндекс.Почты мы использовали наш асинхронный фреймворк для написания любых высокопроизводительных сетевых сервисов, который называется yplatform. Пока его исходный код закрыт, хотя мы рассматриваем возможность опубликовать его. Следите за новостями.

      Переходите на Яндекс.Почту, настраивайте сборщик по IMAP — и вы всегда сможете найти любое старое письмо. Уж что-что, а искать Яндекс умеет.

      Cyrus IMAP administration

      НОВОСТИ ФОРУМА
      Рыцари теории эфира
      01.10.2020 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
      [center][Youtube]69vJGqDENq4[/Youtube][/center]
      [center]14:36[/center]
      Osievskii Global News
      29 сент. Отправлено 05:20, 01.10.2020 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
      30.09.2020 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
      [center][Ok]376309070[/Ok][/center]
      [center]11:03[/center] Отправлено 12:51, 30.09.2020 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
      30.09.2020 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
      [center][Youtube]VVQv1EzDTtY[/Youtube][/center]
      [center]10:43[/center]

      интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
      мой телеграмм https://t.me/peshekhonovandrei
      мой твиттер https://twitter.com/Andrey54708595
      мой инстаграм https://www.instagram.com/andreipeshekhonow/

      [b]Мой комментарий:
      Андрей спрашивает: Краснодарская синагога — это что, военный объект?
      — Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

      [center][Youtube]CLegyQkMkyw[/Youtube][/center]
      [center]10:22 [/center]

      Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
      https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

      Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
      http://av-inf.blogspot.com/2013/12/dalles.html

      [center][b]Сон разума народа России [/center]

      [center][Youtube]CLegyQkMkyw[/Youtube][/center]
      [center]10:22 [/center]

      Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
      https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

      Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
      http://av-inf.blogspot.com/2013/12/dalles.html

      [center][b]Сон разума народа России [/center]

      Функции администрирования cyrus imap

      Данный материал — это не сравнительный обзор протоколов работы с почтой, это практические рекомендации по установке IMAP (Internet Message Access Protocol) сервера для тех, кто уже определился, что именно это ему необходимо. Тем, кто еще не определился с выбором, рекомендую почитать. В результате описанных в этой статье действий мы должны получить работоспособный IMAP4 сервис, при работе с которым поддерживаются защищенные методы авторизации, почта хранится и сортируется на сервере, не нужно заводить реальных почтовых пользователей в системе. Дополнительно настроим веб-интерфейс к системе фильтрации почты на сервере.

      Использовавшаяся в процессе подготовки материала операционная система — Slackware Linux 9.0, MTA — sendmail 8.12.9, MUA — sylpheed 0.9.4. Везде, где в тексте встречается your.hostname.domain — заменять на реальное имя вашего сервера.

      Подготовительные работы


      • Обновляем openssl и sendmail до актуального состояния.
      • Скачиваем:
        cyrus-imapd-2.1.15.tar.gz
        cyrus-sasl-2.1.15.tar.gz
        php-4.3.2.tar.gz
        apache-1.3.28.tar.gz
        imap-2002d.tar.Z
        libmcrypt-2.5.7.tar.gz
        smartsieve-i18n-ru.tar.gz

    • Заводим пользователя cyrus (группа mail, домашний каталог /var/imap)

    Сборка cyrus-sasl

    SASL (Simple Authentication and Security Layer) — это набор утилит и библиотек, необходимых для авторизации пользователей. В документации по cyrus-sasl рекомендуется отключить все неиспользуемые механизмы авторизации, я решил оставить только digest-md5, cram-md5, plain, anonymous.

    Заводим базу пользователей

    Добавляем пользователя (подобным образом нужно будет добавить всех почтовых пользователей):

    Указываем пароль, после этого у нас должен получиться файлик /etc/sasldb2 (это и есть база паролей для авторизации)

    Примечание : как уже говорилось ранее, почтовые пользователи не пересекаются с системными.

    Сборка cyrus-imapd

    Теперь соберем непосредственно IMAP-сервер. Здесь все просто:

    Примечание : по умолчанию при обработке писем, в заголовках которых содержатся 8-битные символы (это противоречит RFC), заменяет их символами ‘X’. Если вы хотите, чтобы такие письма проходили без модификации — можете перед сборкой внести соответствующие изменения в файлах imap/message.c и imap/lmtpengine.c (закомментировав строки 270 и 860 соответственно). Но, вообще-то, это нужно только в специфических случаях и лучше оставить все как есть, чтобы не противоречить стандарту.

    Настраиваем cyrus-imapd

    Для того, чтобы в случае неполадок облегчить поиск проблемы, включаем журналирование посредством syslog. Добавляем в /etc/syslog.conf следующее:

    Подробнее о возможных используемых опциях можно посмотреть в соответствующей man-странице:

    Создаем каталоги и выставляем на них права:

    Создаем структуру остальных каталогов (в документации к cyrus-imapd сказано, что надо сделать «su cyrus» и только потом выполнять следующие действия, но я устанавливал из-под рута и потом просто раздал права доступа):

    Примечание : если у вас файловая система ext2 на том разделе, где будут размещаться базы, то почитайте оригинальную документацию к cyrus-imapd.

    Если у вас прописаны в (x)inetd.conf сервисы pop3, imap, pop3s, kpop, lmtp, sieve — закомментируйте их и перезапустите (x)inetd. В /etc/services прописываем (если там нет этих записей):

    Из каталога master/conf берем конфигурационный файл:

    Пробуем вручную запустить процесс master:

    Генерируем сертификаты (в процессе нужно будет заполнить несколько полей информацией об организации):

    Вышеприведенной командой мы создали X.509 сертификат, действительный 1 год (эта строчка для генерации есть в документации к cyrus-imapd). За более подробной информацией по поводу сертификатов и openssl в общем можно сходить сюда, в раздел документации, правда, там зачастую можно встретить надписи [STILL INCOMPLETE].

    Настраиваем sendmail

    Нам понадобится пакет sendmail-cf, если вы ставили sendmail из пакета (package) в slackware. Создаем наш mc-файл конфигурации sendmail:

    Добавляем туда строчки:

    Если вы ставили sendmail-cf из пакета, то в скрипте Build надо заменить строчку M4=`sh $BUILDTOOLS/bin/find_m4.sh` на M4=/usr/bin/m4

    Примечание: если вы устанавливаете imapd таким образом, что сокет для работы с почтой находится в отличном от /var/imap/socket/lmtp месте, то необходимо будет исправить путь в файлике cyrusv2.m4 (по умолчанию в slackware его можно найти в /usr/share/sendmail/cf/mailer). Если у вас sendmail версии 8.12.8 и ниже — загляните в документацию к cyrus-imapd, но я бы посоветовал обновить sendmail.

    Собираем новый sendmail.cf:


    Добавляем запуск /usr/cyrus/bin/master в стартовые скрипты (например, в /etc/rc.d/rc.init2) и перезагружаемся.

    Проверяем работоспособность

    Воспользуемся утилитой imtest:

    Вводим пароль, если нам отвечают A01 OK, то все нормально, если ругаются — идем в /var/log курить логи до просветления.

    Создаем почтовые ящики

    Для управления почтовыми ящиками в комплекте с cyrus-imapd идет утилита cyradm. После инсталляции для запуска cyradm мне пришлось скопировать часть библиотек, которые поставились не совсем корректно (при сборке cyrus-imapd с —prefix=/usr такой проблемы не будет):

    Типовая процедура создания нового почтового аккаунта:

    В cyradm создаем почтовый ящик для пользователя и устанавливаем квоту в 20 Мб:

    Все, теперь настраиваем клиентскую часть и проверяем, что у нас получилось. В качестве клиента я использовал sylpheed, собранный с поддержкой SSL (configure —enable-ssl).

    Настраиваем sieve

    Sieve — язык, на котором пишутся почтовые фильтры в cyrus-imapd.

    Проверяем работоспособность сервера sieve (timsieved):

    Если отвечают «IMPLEMENTATION» «Cyrus timsieved v2.1.15» . OK, то все в порядке. Пишем на sieve скрипт для разбора почты (приведу здесь несколько типовых действий, дальше должно быть понятно):

    Сохраняем этот скрипт в файлик test.script. Подключаемся к серверу sieve, загружаем и активируем скрипт:

    Если все сделано правильно, то на этом все, мы получили разбор почты по каталогам на сервере. Если такая система управления фильтрацией вас устраивает, дальше можно не читать.

    Далее рассматривается прикручивание веб-интерфейса к sieve для того, чтобы пользоваться возможностями sieve могли и простые пользователи.

    Устанавливаем библиотеку c-client

    Для того, чтобы впоследствии скомпилировать PHP с поддержкой imap, необходимо установить бибилиотеку c-client. Итак, начинается шоу под названием «собираем c-client». Инструкции по сборке я нашел на http://www.php.net/, поискав по сайту с ключевым словом ‘imap’. Скачиваем тарбол, распаковываем его, смотрим внутрь — а там нас поджидает веселый сюрприз в качестве одного Makefile. Авторы сего пакета, по всей видимости, не подозревают о существовании таких благ цивилизации, как autoconf и иже с ним, поэтому configure скрипта внутри нет, вместо него эксплуатируются мозги администратора. Просматриваем содержимое Makefile, среди комментариев ищем наиболее подходящее вашей системе описание, например, это ‘slx’ («Linux using -lcrypt to get the crypt() function»). Затем пробуем скомпилировать c-client с выбранной опцией:

    Как показывает практика, обычно с разбега сборка не удастся из-за различий в расположении файлов — прийдется немного поработать вместо configure, подбирая эти опции вручную. Можно либо править Makefile, либо указывать опции при запуске make. Для моей системы команда сборки выглядела следующим образом:

    При возникновении проблем помогает вдумчивое прочтение Makefile.

    Итак, компиляция успешно завершена, теперь следующий этап — инсталляция скомпилированного (да, не удивляйтесь, make install не сработает — авторы решили выдержать все в одном стиле и не написали такой цели в Makefile, так что опять будем делать все вручную). Создаем каталог /usr/local/imap-2002d и подкаталоги /usr/local/imap-2002d/include и /usr/local/imap-2002d/lib. Из подкаталога c-client копируем все *.h файлы в include, все *.c в lib. В том же каталоге находим файлик c-client.a и копируем его в lib, переименовывая в libc-client.a.

    На этом с установкой c-client покончено, лично я в процессе инсталляции не раз помянул недобрым словом разработчиков за такое жестокое отношение к пользователям.

    Устанавливаем веб-сервер

    Предварительно собираем libmcrypt (тут все тривиально):

    Установка и настройка Apache+PHP — очень обширная тема, я ограничусь лишь минимальным количеством разъяснений, которого должно хватить для достижения наших целей. Распаковываем apache, запускаем скрипт configure без каких-либо параметров. Распаковываем php (в том же каталоге, где развернули apache), собираем:

    Пути к файлам могут изменяться на разных машинах, поэтому если сборка не удалась — проверьте пути (в частности, каталог с исходниками apache может называться по-иному). Копируем файлик php.ini-recommended в /usr/local/lib/php.ini. Если php успешно собралось и заинсталлировалось, возвращаемся в каталог с apache:

    Если все собралось, идем в каталог, куда заинсталлировался apache (по умолчанию — /usr/local/apache), в каталоге bin запускаем веб-сервер командой:

    Проверяем работоспособность сервера:

    Либо просто любым браузером обращаемся по адресу нашего сервера. Если видим ободряющую надпись «If you can see this, it means that the installation of the Apache web server software on this system was successful», значит — все нормально, иначе перечитываем вышенаписанное и идем читать документацию по php и apache до тех пор, пока не наступит счастье.

    Устанавливаем SmartSieve

    В принципе, можно удовлетвориться взаимодействием с sieve сервером посредством sieveshell, но с точки зрения рядового пользователя такой метод управления почтой вряд ли можно назвать удобным. Альтернативой может послужить использование SmartSieve — это написанный на PHP менеджер sieve скриптов, позволяющий черз веб-интерфейс управлять правилами сортировки почты.

    Изначально я скачал с официального сайта smartsieve-i18n версии 0.5.1, однако при его использовании столкнулся с проблемой работы с русскими именами каталогов в почтовом ящике. Решив, что транслит и другие компромиссы — это не наш метод, пропатчил это дело, заодно написав русскую версию локали. Русифицированную версию smartsieve можно скачать по адресу.

    Вся процедура установки сводится к распаковке тарбола и копированию содержимого в структуру каталогов, являющуюся структурой http-корня веб-сервера. По умолчанию опция DocumentRoot равна «/usr/local/apache/htdocs». Уточнить ее значение можно в основном конфигурационном файле apache — httpd.conf (по умолчанию он находится в /usr/local/apache/conf). Допустим, мы скопировали файлы smartsieve в /usr/local/apache/htdocs/smartsieve. Проверяем работоспособность, открывая в браузере страницу http://your.hostname.domain/smartsieve/ Логинимся под именем одного из заведенных пользователей, пробуем создавать правила (при входе в форме выбираем русский язык для корректной работы с русскоязычными каталогами).

    Небольшое примечание: smartsieve может не работать с sieve скриптами, написанными вами вручную, а не с его помощью.

    Заключение

    Если вы дошли до этого места и у вас все работает, значит, мы достигли поставленной в начале цели.

    При написании были активно использованы оригинальная документация к cyrus-imapd и поисковый сервер google.

    PS: спасибо warm’у за консультации.

    Статья опубликована в журнале «Системный администратор» , номер 10(11) — октябрь 2003.

    Хостинг в Европе для новичков (от 25 руб/мес) и VIP-хостинг для профессионалов (от 1000 руб/мес)

    Скидка 25% на все тарифы хостинга по промокоду STDCITF

    Что такое IMAP и POP?

    Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

    IMAP и POP — это два метода доступа к электронной почте. Рекомендуется использовать IMAP, если вам требуется проверять почту с нескольких разных устройств (например, телефона, ноутбука и планшета).

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

    IMAP скачивает сообщение, только когда вы его щелкаете, и вложения не скачиваются автоматически. Так вы сможете проверять сообщения гораздо быстрее, чем с помощью POP.

    POP связывается с вашей службой электронной почты и скачивает из нее все новые сообщения. После скачивания на компьютер с Windows или Mac OS сообщения удаляются из почтовой службы. Это значит, что после скачивания почтового сообщения к нему можно обращаться только с того же компьютера. Если вы попытаетесь обратиться к сообщению с другого устройства, ранее скачанные сообщения будут недоступны.

    Отправленная почта хранится локально на компьютере с Windows или Mac OS, а не на почтовом сервере.

    Многие поставщики услуг Интернета предоставляют учетные записи электронной почты, которые используют POP.

    Учетные записи веб-почты или почтовые приложения

    Gmail, Outlook.com, Hotmail.com и iCloud — это веб-почта. Вход в учетную запись веб-почты выполняется в Интернете.

    Если у вас есть компьютер с Windows или Mac OS, вы, вероятно, использовали программу, например Outlook, Apple Mail или Thunderbird, для управления электронной почтой. Outlook, Apple Mail и Thunderbird — это приложениядля работы с электронной почтой: программы, устанавливаемые на компьютере для управления электронной почтой. Они взаимодействуют с помощью службы электронной почты, например Gmail или Outlook.com, для получения и отправки электронной почты.

    В почтовое приложение вы можете добавить любую учетную запись электронной почты, чтобы управлять ею оттуда. Например, вы можете добавить в приложение Outlook или Apple Mail учетные записи веб-почты (Gmail, Outlook.com, Hotmail.com, AOL и Yahoo) и почтовые учетные записи, предоставленные вашей организацией.

    Добавление учетных записей веб-почты в почтовые приложения, такие как Outlook, Apple Mail, Thunderbird

    Когда вы добавляете учетную запись электронной почты в почтовое приложение, оно пытается настроить доступ методом IMAP без вашего участия.

    Если приложению электронной почты не удается добавить свою учетную запись электронной почты, обычно это связано с тем, что учетная запись электронной почты настроена для доступа по протоколу POP. В этом случае необходимо обратиться к поставщику услуг электронной почты и узнать имя сервера POP и SMTP, чтобы можно было ввести информацию в почтовое приложение. Как правило, эти сведения выглядят примерно так:

    Сервер входящей почты (IMAP): IMAP. _лт_ имя службы>. com

    Сервер входящей почты (POP): pop. имя службы>.com

    Сервер исходящей почты (SMTP): smtp. имя службы>.com

    АйТи бубен

    Инструменты пользователя

    Инструменты сайта

    Содержание

    Команды IMAP

    Протокол IMAP (Internet Mail Access Protocol) описывается в RFC 2060.

    В отличии от POP3, который просто скачивает входящие письма и сохраняет их локально, с IMAP вы работаете с почтой непосредственно на сервере

    Как и POP3, протокол IMAP использует концепцию клиент-сервер с набором команд. С помощью команд осуществляется передача сообщений электронной почты от сервера клиенту. Клиент устанавливает для этой цели TCP-соединение с портом 143 на сервере. Далее сервер должен ответить специальным сообщением-приглашением.

    В строке 1 показана команда на открытие сеанса с помощью telnet с портом 143 (порт IMAP по умолчанию). Строка 5 отображает приглашение, выданное сервером IMAP. В строке 6 клиентом задана команда закончить сеанс с сервером. Затем сервер посылает сообщение об окончании сеанса (строка 7) и закрывает соединение с клиентом.


    Каждая команда, выдаваемая клиентом, предваряется уникальным идентификатором. Сервер может затем использовать этот идентификатор в своих ответах, что позволяет клиенту определить, к какой команде относится ответ сервера. Это особенно важно при выполнении сервером нескольких команд за сеанс. Идентификатор обычно представляет собой короткую строку алфавитно-цифровых символов, которая генерируется клиентом. Так, в строке 6 листинга 7.1 клиентом был выбран идентификатор a001. Если бы клиенту потребовалось задавать и другие команды, то следующим идентификатором был бы a002 и т.д. Часто для упрощения идентификаторы команд в течение сеанса IMAP просто последовательно увеличивают один из своих разрядов.

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

    Методы проверки подлинности пользователя в IMAP

    Так же как и в протоколе POP3, в IMAP имеется несколько методов проверки подлинности клиента. Некоторые из них обеспечивают больший уровень безопасности, по сравнению с другими. В отличие от клиентов POP3, клиенты IMAP часто проводят довольно длительные сеансы с сервером при обработке сообщений. Таким образом, идентификатор пользователя и пароль не передаются по сети несколько раз в час, как это обычно происходит при работе по протоколу POP3.

    Команда LOGIN

    Команда LOGIN позволяет клиенту при регистрации на сервере IMAP использовать идентификатор пользователя и пароль в обычном текстовом виде.

    Команда AUTHENTICATE

    С помощью команды AUTHENTICATE клиент может использовать при регистрации на сервере IMAP альтернативные методы проверки подлинности. Индивидуальная проверка подлинности пользователей не является обязательной и поддерживается не всеми серверами IMAP. К тому же реализации такой проверки могут различаться в зависимости от сервера. Когда клиент выдает команду AUTHENTICATE, сервер отвечает на нее строкой вызова в кодировке base64. Далее в обязанности клиента входит ответ на вызов сервера о проверке подлинности, также закодированный base64. Если на сервере не поддерживается метод проверки подлинности, предложенный клиентом, он включает в свой ответ отрицательное слово NO. После этого клиент должен продолжить переговоры по согласованию метода проверки подлинности. Если все попытки определить метод проверки подлинности потерпели неудачу, то клиент предпринимает попытку зарегистрироваться на сервере посредством команды LOGIN. Пример сеанса с применением AUTHENTICATE:

    В строках 6–9 показаны попытки клиента согласовать с сервером IMAP метод проверки подлинности. Как видите, все они не увенчались успехом. А в строке 10 показано, что метод проверки, приемлемый и для клиента, и для сервера, найден. Отвечая, сервер в строке 11 выдает кодированную строку с вызовом в кодировке base64. Однако в строке 12 клиент отвергает попытку регистрации и возобновляет ее лишь в строке 14 с помощью команды LOGIN.

    Клиентская часть протокола IMAP

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

    Почтовый ящик для клиента по умолчанию носит название INBOX. Все новые сообщения ложатся именно в INBOX. Клиент имеет возможность создавать новые почтовые ящики (иногда называемые в программах-клиентах для работы с электронной почтой папками). Туда с целью упорядочения он может перемещать сообщения из папки INBOX.

    Каждому сообщению назначается уникальный идентификатор (UID), по которому они идентифицируются в почтовом ящике. Метка UID сохраняется в течение всех сеансов IMAP для того, чтобы клиентское программное обеспечение могло правильно идентифицировать сообщения в почтовом ящике. Каждому почтовому ящику соответствует уникальный идентификатор достоверности (UIDVALIDITY). Метка UIDVALIDITY должна присутствовать во время всех сеансов IMAP, только в том случае, если идентификаторы сообщений в ящике оставались неизменными. Если в почтовом ящике имеются сообщения с различными идентификаторами, то значение UIDVALIDITY при следующем сеансе должно увеличиться. Это позволяет клиентам быстро определять, появились ли в почтовом ящике новые сообщения с момента последнего к нему обращения.

    Каждое сообщение снабжается флагом, который отображает его статус. Флаг может быть постоянным или задаваться на время сеанса. Постоянные флаги могут изменяться клиентом и сохраняться вне зависимости от сеансов. Флаги, назначаемые на время сеанса, действительны только на время текущего сеанса IMAP. В табл. 7.1 представлены варианты флагов почтовых сообщений.

    Флаги почтового сообщения IMAP

    Почтовому сообщению может соответствовать 0 флагов или несколько флагов. Информация о флагах передается клиенту вместе с самим сообщением. В обязанности клиента входит интерпретация флагов соответствующим образом.

    В следующем разделе описываются команды IMAP, которые клиент может задавать серверу.

    Сервер должен отвечать соответствующим образом на заданные команды или отвечать отрицательно, если команда задана неправильно либо не поддерживается.

    Команда SELECT

    Команда SELECT используется, лишь когда почтовый ящик активен. По умолчанию, пока клиент не зарегистрирован в системе, ни один из принадлежащих ему почтовых ящиков не является выбранным. Далее клиент должен выбрать почтовый ящик, с которым он собирается работать. Обычно первый ящик, который выбирается клиентом, — это ящик INBOX, куда помещаются новые сообщения. Формат команды SELECT следующий:

    Здесь mailbox — это название почтового ящика, к которому обращается клиент. Во время одного сеанса IMAP может быть активен только один почтовый ящик. Если ящик существует и у клиента имеется соответствующий доступ к нему, то сервер дает многострочный ответ, где описывается состояние почтового ящика.

    Команда CREATE

    Команда CREATE используется для создания нового почтового ящика на сервере IMAP. Имя и местоположение новых почтовых ящиков определяются в соответствии с общими спецификациями ОС Linux. В рабочем каталоге пользователя создается новый почтовый ящик с именем, но без задания местоположения, так как оно известно каталогу $HOME клиента. Например, если рабочий каталог клиента находится в /home/riley и клиент задает команду CREATE для создания нового почтового ящика stuff/junk, то вновь созданный ящик на почтовом сервере под управлением ОС Linux будет иметь путь /home/riley/stuff/junk. В этом примере вы видите, как используется знак разделителя /. Однако это не является общим для всех серверов IMAP.

    Команда DELETE

    Команда DELETE применяется к почтовым ящикам, а не к сообщениям. Сервер IMAP при получении этой команды попытается удалить почтовый ящик с именем, указанным в качестве аргумента команды. В аргументе команды можно использовать стандартное описание путей ОС Linux, со знаком разделителя /, если только они не находятся в каталоге $HOME. Сообщения из удаленных почтовых ящиков восстановлению не подлежат и теряются вместе с ящиками.

    Команда RENAME

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

    Команда LIST

    Команда LIST используется для получения списка всех почтовых ящиков клиента. С ней используются два параметра. Формат команды LIST приведен ниже:

    Здесь reference — каталог, где находятся почтовые ящики. Если задается пустая строка вместо этого параметра («»), то почтовые ящики находятся в рабочем каталоге пользователя $HOME. Второй параметр mailbox является именем почтового ящика, который нужно просмотреть. Здесь допускается использование специальных символов, так же, как и при получении обычного списка каталогов, например группового символа (*). Если именем почтового ящика задана пустая строка («»), то сервер будет возвращать в качестве ответа иерархический разделитель (для Linux /) и имя корневого параметра.

    Команда LSUB

    Команда LSUB используется для устранения проблемы, которая описана для команды LIST. В отличие от команды LIST, с помощью которой отображается все содержимое рабочего каталога пользователя, с помощью команды LSUB отображаются лишь активизированные ранее описанной командой SUBSCRIBE почтовые ящики клиента. Параметры команды LSUB точно такие же, что и для команды LIST, т.е. ссылка (reference) и имя почтового ящика. Подобно команде LIST, параметр ссылки указывает путь к каталогу, в котором находятся почтовые ящики с соответствующими именами (каталог $HOME, если указано «»). Соответственно, под именем почтового ящика понимается имя ящика или имена ящиков, которые требуется вывести в списке (допускается групповой символ (*).

    Почтовые ящики могут затем добавляться в список активных ящиков с помощью команды SUBSCRIBE, а удаляться из списка с помощью команды UNSUBSCRIBE. С помощью этих команд можно реализовать на базе клиента IMAP чтение групп новостей. При этом каждая группа новостей реализована как отдельный почтовый ящик на сервере, на которую затем можно подписаться. Сегодня большинство программ для работы с электронной почтой включают функцию чтения групп новостей, так что выполнение этих операций в IMAP не требуется.

    Команда APPEND

    APPEND — еще одна команда из семейства команд IMAP. Как правило, протокол IMAP применяется исключительно для чтения сообщений из почтовых ящиков. С помощью команды APPEND появляется возможность посылать сообщения в почтовый ящик, добавляя сообщение к концу файла почтового ящика. Эта функция работает не совсем корректно и она является довольно опасной, поэтому не рекомендуем увлекаться ею в качестве альтернативы SMTP. Это, скорее, приятное излишество протокола IMAP, а не рабочая лошадка. Основной формат команды APPEND следующий:

    Команда CHECK

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

    Команда CLOSE

    Команда CLOSE полностью соответствует своему названию — она закрывает почтовый ящик.

    Действие команды CLOSE четко прослеживается на только что открытом новом почтовом ящике. Открытый почтовый ящик закрывается также с помощью команды LOGOUT. Команда CLOSE не имеет параметров.

    Команда EXPUNGE

    Ответ сервера на команду EXPUNGE представляет собой отчет о новом состоянии почтового ящика.

    В строке 8 пользователь alex выбирает почтовый ящик с именем newbox. Строки 9–16 представляют собой ответ сервера с информацией относительно выбранного почтового ящика. Строка 9 говорит о том, что в нем находится 6 сообщений. В строках 17 и 20 пользователь alex воспользовался командой STORE, чтобы пометить два сообщения как удаленные (\DELETED). Затем в строке 23 пользователь alex выдает команду STATUS. Из строки 24 можно сделать заключение, что, с точки зрения сервера IMAP, в почтовом ящике все еще находятся шесть сообщений, хотя два из них помечены как удаленные. В строке 26 пользователь выдает команду EXPUNGE, по которой сообщения, помеченные как удаленные, стираются. Ответ сервера в строках 27–31 подтверждает, что сообщения были удалены из ящика и в нем осталось четыре сообщения. Это же подтверждает и команда STATUS, заданная в строке 32. На нее сервер отвечает, что в почтовом ящике теперь только четыре сообщения.

    Команда SEARCH является одним из наиболее мощных средств из арсенала IMAP. С помощью этой команды производится поиск сообщений по критериям в активном почтовом ящике с последующим отображением результатов в виде номера сообщения. Формат команды SEARCH следующий:

    Здесь CHARSET specification состоит из служебного слова CHARSET, за которым следует обозначение набора символов. Набор символов по умолчанию — ASCII , так что, как правило, этот параметр опускается. Параметр search criteria определяет ключевые критерии поиска и их значения. Критерии поиска описаны в табл. 7.3.

    Таблица. Критерии поиска для команды SEARCH

    Как видно из таблицы существует огромное количество критериев поиска сообщений. Это очень удобно, когда требуется найти специфическое сообщение в почтовых ящиках, которые заполнены большим количеством сообщений. Ниже представлен короткий пример с использованием команды SEARCH.

    В строках 17, 20 и 23 показаны примеры использования команды SEARCH. Строки 18, 21 и 24 являются ответами сервера IMAP на команду SEARCH. В ответе содержатся номера сообщений, которые соответствуют критерию поиска. Если соответствий не найдено, то сервер возвращает слово SEARCH без идентификатора сообщения UID.

    Команда FETCH

    Команда FETCH используется для получения текста почтового сообщения. Она применяется только для отображения сообщений. В отличие от POP3, клиент IMAP не сохраняет копию сообщения на клиентском ПК.

    Команда STORE

    Команда STORE применяется для изменения информации о сообщении. Формат команды следующий:

    Аргумент задает диапазон номеров сообщений, к которым применяется команда STORE. В настоящее время для этой команды определено только два типа данных ( ). Тип FLAGS определяет набор флагов, установленных для сообщения. Тип FLAGS.SILENT также определяет набор флагов, установленных для сообщения, но при этом сервер IMAP не возвращает их новое значение в своем ответе.

    Поведением этих типов данных можно управлять, задав перед ними знак плюс (+) или минус (-). Знак плюс означает, что значение типа данных ( ) будет добавлено к сообщению, минус — что оно будет удалено из сообщения.

    В строке 18 этого листинга показано, как устанавливается флаг \DELETED для сообщения в активном почтовом ящике с номером 1. Обратите внимание, что перед флагом задан знак плюс (+). Можно было бы также задать флаг (-). Тогда флаг \DELETED был бы отменен для сообщения (один из способов восстановить удаленное сообщение до того, как вступят в силу контрольные точки сообщения).

    Команда COPY

    Команда COPY используется для копирования сообщений из одного почтового ящика в другой. Формат команды COPY приведен ниже:

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

    Для протокола IMAP не определена команда перемещения сообщений, но очевидно, что эта операция есть не что иное, как копирование сообщений в другой почтовый ящик с заданием для оригиналов сообщений флага \DELETED. После следующей ротации почтового ящика (расстановки контрольных точек) оригиналы сообщений будут удалены, и останутся только их копии.

    Команда CAPABILITY

    С помощью команды CAPABILITY клиент может запрашивать у сервера IMAP информацию о его возможностях.

    Команда NOOP

    Действия команды NOOP, как мы знаем, соответствует ее названию, т.е. она ничего не делает. Она может применяться для поддержки активности во время сеанса для того, чтобы сеанс не прекратился по таймеру интервала ожидания. Ответ сервера на команду NOOP всегда должен быть положительным. Так как сервер часто в ответе возвращает состояние выполнения той или иной команды, то NOOP вполне можно использовать как триггер для периодического запроса о состоянии сервера. Если что-то произошло с почтовым ящиком во время периода ожидания, например сервер удалил сообщения согласно правилам, установленным для почтового ящика администратором почтовой системы, то в ответ на команду NOOP будет возвращена обновленная информация о его состоянии.

    Команда LOGOUT

    Команда LOGOUT используется для завершения сеанса для текущего идентификатора пользователя и закрытия всех открытых почтовых ящиков. Если какие-либо сообщения были помечены флагом \DELETED, то с помощью этой команды они будут физически удалены из почтового ящика.

    Cyrus IMAP

    Программа Cyrus IMAP предназначена для реализации таких функций, как «IMAP», «Pop3» и «Почтовый сервер». Cyrus IMAP — это бесплатная программа с открытым исходным кодом, работающая на многих платформах, в числе которых Linux и Mac.

    Программа Cyrus IMAP
    Лицензия Бесплатная
    Исходный код Открытый
    Официальный сайт

    Найдено 14 аналогов Cyrus IMAP. Эти программы имеют схожий набор функций и отлично подходят для замены.

    Найдено 21 похожих программ, которые могут быть использованы только в качестве частичной альтернативы Cyrus IMAP.

    Илон Маск рекомендует:  Сортировка фактов пролога
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL