Dovecot 2 - опис налаштувань, в контексті даної конфігурації

У замітці описані вибірково деякі частини офіційної документації Dovecot (вільний переклад). Розібрані окремі механізми роботи, розглянуті деякі параметри налаштувань конфігураційних файлів та ін.
Порушено тільки самі ключові моменти, - мінімум необхідний для "входження в тему".

Це скоріше конспект-шпаргалка, ніж достовірний довідник. Крім відповідей тут можуть бути присутніми питання.

Тут частинами вставлений вільний переклад офіційної документації, без попереджень розбавлений відсебеньками!

Dovecot - загальні моменти

Dovecot виконує дві основні функції - надає інтерфейс для доступу MUA через POP або IMAP, і виконує остаточну доставку пошти, від MTA в ящики (в папки). Цю функцію доставки може виконувати і сам Postfix за допомогою своєї LDA, а може і сторонній LDA.

Але в даній конфігурації цим все ж займається Dovecot. Причому в процесі доставки задіяний механізм lmtp.

ВАЖЛИВО! Для підтримки протоколу lmtp, повинен бути встановлений пакет dovecot-lmtp.

Версії.
Dovecot постійно модифікується і пакети в репозитариях Debian стабільної версії звичайно відстають. У нових версіях зустрічаються суттєві зміни, які можуть бути дуже цікаві. З останнього, що мені, наприклад дуже сподобалося - доробка інструменту командного рядка doveadm новою командою "deduplicate", яка дозволяє з консолі просканувати зазначені віртуальні папки користувачів і знищити дублікати листів (виловлюючи їх по Message-ID). На жаль в стабільній версії такого функціоналу немає.

Якщо захочеться ризикнути поставити останню версію, то спочатку потрібно додати рядок із зазначенням на останню версію (на момент написання замітки це версія 2.2)

Після чого оновити репозитарії і встановити найсвіжіші пакети.

Рідну документацію, після установки, можна знайти тут: / usr / share / doc / dovecot-core / dovecot / wiki /.

Методи аутентифікації.
  • plain
  • digest-md5
  • cram-md5
  • apop (тільки для POP3)
  • anonymous
Бази User / Password.
  • PAM
  • "Passwd" і "shadow" файли
  • Password Executable
  • MySQL, з можливістю використання в різних випадках, різних хостів і різних баз
  • PostgreSQL
  • LDAP
  • vpopmail
  • Linuxconf
Деякі внутрішні змінні.
  • % U - ім'я користувача
  • % N - ім'я в [email protected] ( "user")
  • . - доменна частина в [email protected] ( "domain.tld")
  • % H - домашній каталог

Приклад настройки конфігурації
/etc/dovecot/conf.d/10-mail.conf:

% 1u - перший символ імені користувача.

Тут описуються приклади для одного конкретного окремого випадку конфігурації поштової системи.

Як вказувати параметри

У Dovecot настройки, які не вказані - застосовуються за замовчуванням. Це може призводити до цікавих наслідків.

Розглянемо такий приклад

При цьому в більшості прикладів зустрічається саме таке "не зовсім стандартне" опис слухача. Якщо слухач за замовчуванням не потрібен, то можна просто використовувати стандартну форму і чомусь рідко зустрічається в прикладах параметр: path

Слухач за замовчуванням зник.

Для початку потрібно встановити пакет dovecot-lmtp.

Перевірити, і, якщо потрібно - включити підтримку протоколу

"Process_min_avail = 5" - Кількість процесів. Для високонавантажених сайтів має сенс збільшити кількість процесів. Можна поекспериментувати в діапазоні від 5 до 20.
"Executable = lmtp -L" - логгірованіе (необхідно вказати файл логу - див. Нижче).

Налаштувати плагіни та ін.

"Info_log_path = /var/log/dovecot-lmtp.log" - файл журналу.

І конфігурувати транспорт в Postfix

Другий рядок швидше за все знадобиться тільки якщо Postfix повністю замінив Sendamil. Вона призначена для не віртуально (а системних) користувачів.

SASL розшифровується як "Simple Authentication and Security Layer". SASL - це список вимог до механізмів аутентифікації і протоколам, для їх сумісності з SASL, як описано в RFC 4422. IMAP, POP3 і SMTP протоколи мають підтримку SASL.

Багато людей плутають SASL з однієї конкретної реалізацією SASL: бібліотекою Cyrus SASL. Dovecot має свою власну реалізацію SASL, яка може розглядатися окремо від Dovecot і "конкурувати" з Cyrus SASL.

Postfix версії 2.3 і вище підтримує два типи SASL: "dovecot" і "cyrus".

Відповідно в налаштуванні Postfix потрібно вказувати smtpd_sasl_type = dovecot. Це тільки тип SASL, тобто стандарт ініційований Dovecot.

При використанні в Postfix тільки LMTP, згадок про Dovecot в конфігураційних файлах в Postfix більше ніде не повинно зустрічатися (за винятком імен сокетов і власне згаданого вище типу SASL).

Dovecot підтримує настроюються простору імен (namespace), у відповідність зі специфікацією "RFC 2342" (на жаль, не всі клієнти її підтримують), що містить вказівки IMAP-клієнту: де знаходяться поштові скриньки, чи є вони приватними (private), громадськими структурами (public ) або загальнодоступними (shared). При конфігуруванні "namespace" може бути налаштований роздільник, префікс та ін. Т.п. а також налаштований доступ до кількох місцях зберігання пошти, в різних форматах.

Назви секцій (напр. Namespace sectionname), не мають особливого значення, але дозволяють оновлювати існуюче простір імен (напр. Як в "15-mailboxes.conf") або перевизначати "UserDB" -Настройка конкретних користувачів (namespace / sectionname / prefix = foo /).
Див. Нижче приклад.

Як видно, роздільник простору імен (namespace separator) впливає тільки на ім'я теки IMAP, але не впливає на реальний шлях папки. Реальний роздільник (layout separator) впливає на реальну структуру папок в батьківському каталозі (див. Про нього в розділі: Maildir). Існує плагін listescape для більш гнучкого налаштування роздільник.

Приклад змішання mbox і Maildir namespace

Більш цікавий приклад (не з доків) - змішання двох Maildir. Підключаємо кожному користувачеві - ящик користувача "user2"

Тут папка користувача "user2" з'явиться в списку папок кожного ящика і буде містити всі дочірні папки, хоча сама вона (INBOX) буде недоступна (зміни вимагають рестарту dovecot).

Ще один невеликий приклад з офіційної документації.
Потрібно дати ім'я namespace, наприклад "docs".

Створюємо в SQL-базі таблицю

Тепер кожному користувачеві можна визначати свою "location" в namespace "docs"

Maildir зберігає кожне повідомлення в окремому файлі, і вимагає, щоб у кожного був унікальний ID. Список файлів і відповідних їм ID зберігається в файлі "dovecot-uidlist".

Цей файл не повинен бути заблокований на читання. Нові рядки додаються в кінець файлу. Дані в ньому не можуть бути змінені - тільки замінені. Повідомлення після остаточної доставки так само не можуть бути змінені, а можуть бути тільки замінені цілком.

Для прискорення доступу до тисяч повідомлень в папках, має сенс використовувати підтримку індексування директорій на рівні файлової системи (це можливо для нових версій ext3). Можливо має сенс використовувати для каталогу пошти "ReiserFS" - файлову систему, заточену для швидкої роботи з великою кількістю маленьких файлів.

За замовчуванням Dovecot використовує структуру директорій Maildir ++. Це означає, що всі папки знаходяться безпосередньо усередині каталогу

Зазвичай, ім'я папки всередині батьківського каталогу починається з "." (Точки), - всі вони зберігаються в кореневому каталозі ( "INBOX"), включаючи підкаталоги (напр.

/Maildir/.folder.subfolder/). Але якщо в mail_location використовувати параметр ": LAYOUT = fs", то папки можна зберігати БЕЗ точки в звичному для файлової системи форматі (напр.

Приклад настройки конфігурації
/etc/dovecot/conf.d/10-mail.conf:

Починаючи з версії Dovecot 2.0, дозволу для новостворених файлів більше не копіюються з файлу "dovecot-shared".

При використанні інших програм одночасно з Dovecot для доступу в каталоги можуть виникнути серйозні проблеми, пов'язані з роботою з файлом однієї програми, і одночасними діями над ним інший.

Індексне сховище можна примусово вказувати персональне кожному використовуючи, наприклад ": INDEX =

/ Public "для параметра mail_location або location. Наприклад, в разі доступу до додаткових публічним каталогам, можна призначати для такого каталогу кожному користувачеві своє індексне сховище.

ВАЖЛИВО! З версії 2.2 необхідно використовувати: INDEXPVT.

У цьому прикладі (він трохи змінений і відрізняється від прикладу в офіційних доках) у кожного користувача крім свого ящика, є доступ до публічного каталогу, але індексне сховище публічного каталогу (з призначеним іменем "pub_index") у кожного користувача знаходиться в його домашньому каталозі.

ВАЖЛИВО! Каталоги type = public вимагають настройки ACL, інакше вони будуть недоступні. Найпростіше в зазначеному вище прикладі - встановити глобальний ACL у відповідному каталозі, створивши файл .DEFAULT. Для прикладу наведеного вище, це може бути щось на зразок /etc/dovecot/acl/public/.DEFAULT з відповідними дозволами. Див. Також замітку Dovecot 2 - ACL.

Крім того потрібно пам'ятати про те, що коренева публічна папка сама по-собі не є поштовим каталогом і не буде містити листів, поки вручну не будуть створені всі необхідні папки формату Maildir (cur. New. Tmp). Тоді ж вона стане доступна для підписки. При цьому вкладені папки, якщо вони створені, наприклад через MUA, будуть доступні для підписки і можуть бути поштовими каталогами.

аутентифікація

За аутентифікацію, в рассматріваемовом в цій серії заміток окремому випадку конфігурації, відповідає такі файли:

  • /etc/dovecot/conf.d/10-auth.conf - вказується підключення (include) файлу "auth-sql.conf.ext".
  • /etc/dovecot/conf.d/auth-sql.conf.ext - описані механізми підключення. Драйвер - sql для passdb, і драйвер - prefetch для userdb, і т.п.
  • /etc/dovecot/dovecot-sql.conf.ext - містить запити до бази даних ( "password_query" і "user_query").

auth-sql.conf.ext
У цьому файлі налаштовуються дві секції, які реалізують механізм "prefetch". Ідея в тому, що можна скоротити кількість SQL-запитів і всі потрібні значення витягувати відразу в "password_query". В цьому випадку, в секції "userdb" потрібно вказати "driver = prefetch". Але треба враховувати два нюанси. По-перше до всіх параметрів "userdb", одержуваних через "password_query", треба буде в запиті (див. Далі) додавати префікс "userdb_". По-друге секцію "userdb" мабуть потрібно буде вказати двічі, тому що є випадки, коли вона потрібна в повному вигляді. При цьому черговість в цьому повторі має значення. Першою повинна йти секція з "driver = prefetch". Див. Нижче приклади.

Тут описуються приклади для одного конкретного окремого випадку конфігурації поштової системи.

Все це може бути реалізовано, наприклад так.

Віртуальний розмір повідомлення

  • Повні імена змінних можуть використовуватися як% або з "L" -модіфікатором:% L
  • Змінні середовища можуть бути доступні в%
  • Додатково представлені очевидні змінні% і%

Модифікатори - застосовується для кожної змінної (напр.% Us = POP3)

  • % L - нижній регістр
  • % U - великі букви
  • % E - екранування символів " ' # 92; автоматично додаючи "# 92;" перед ними (для SQL-запитів це не потрібно)
  • % X - парсинг змінної як 10-ічного числа і переклад в 16-ковий
  • % R - представлення значення змінної в зворотному порядку
  • % H - 32-бітний хеш значення змінної, повернутий в десятковому вигляді (докладніше - в офіц. Док.).
  • % M - повертає рядок MD5 в десятковому вигляді
  • . - повертає "sub.domain.org" як "sub, dc = domain, dc = org" (для LDAP запитів)
  • % T - видаляє пробіли спочатку і в кінці

Ви можете отримати субстроку змінної і опціонально, використовуючи '.' вказати зміщення і кількість символів субстрокі. Наприклад% 2u дає перші два символи імені користувача. % 2.1u дає один, - третій символ імені користувача.

Якщо зсув негативне, воно вважається з кінця, на довжину після '.' (Точки). Наприклад% -2.2i дає "45" для UID 12345 (останні два знака UID в рядку). Якщо зсув позитивне і точка за межами значення, то повертається порожній рядок, якщо зміщення негативне за межами значення, то рядок починається зі старту.

Якщо ширина з префіксом, що дорівнює 0 (нуль), рядок просто доповнюється '0', і тільки якщо вона коротша. Наприклад i може повернути "0001", "1000" або "12345". % 1.04i поверне для цих рядків "001", "000" і "2345".

Модифікатори застосовуються зліва направо, виключаючи субстроку взяту від кінця рядка.

XEXEC Plugin

Цікаве експериментальне розширення IMAP-протоколу (плагін), що дозволяє запускати будь-які додатки на стороні сервера по команді MUA з встановленими відповідними плагінами (наприклад Thunderbird). Можна зробити так, що відправка повідомлень для MUA відбуватиметься без використання SMTP. Досить перемістити повідомлення в потрібну папку і. і т.д. ) В офіційному описі згадується можливе застосування в складі Groupware і т.п.

Джерела інформації та посилання перераховані на окремій сторінці, зазначеної внизу головної сторінки теми:
Установка і настройка поштового сервера