Установка cyrus-imapd для роботи з sendmail під FreeBSD (imap sendmail mail freebsd sasl ssl 8bit
Ключові слова:imap, sendmail, mail, freebsd, sasl, ssl, 8bit, (знайти схожі документи)
Від: Малик Абдугаліїв Date: Mon, 24 Jul 2004 18:21:07 +0000 (UTC) Subject: Встановлення cyrus-imapd для роботи з sendmail під FreeBSD
Установка cyrus-imapd для роботи з sendmail під FreeBSD4.6
Завдання: Встановити SMTP, IMAP та POP3 сервери.
Використані такі версії програм: - cyrus-imapd-2.1.14 - cyrus-sasl-2.1.15 - sendmail-8.12.9
Також необхідний пакет "The Berkeley DB package, revision 3", який був встановлений з портів.
Якщо потрібно SSL-шифрування сесій IMAP і POP3, то знадобиться встановити ще й OpenSSL (openssl-0.9.6g).
./configure --with-bdb-libdir=/usr/local/lib/ --with-bdb-incdir=/usr/local/include/db3 --with-openssl=/usr/local /ssl --disable-krb4 --disable-gssapi --with-saslauthd=/var/run make make install
Зверніть увагу на параметр "--with-saslauthd=/var/run" він повинен вказувати на ту ж директорію, що і аналогічний параметр при встановленні Cirus-IMAPD. У цій папці буде створюватися сокет, через який взаємодіятимуть ці два пакети.
Створіть користувача cyrus та групу cyrus, яким належать робочі файли та папки IMAP-демона.
Ви можете використовувати інші імена, але тоді вам потрібно вказати їх за допомогою допомоги параметрів "--with-cyrus-user=" та "--with-cyrus-group=".
Запускаємо конфігуратор: ./configure --with-openssl=/usr/local/ssl --with-auth=unix --disable-krb --with-sasl=/usr /local --with-statedir=/var/run
Тут необхідно зробити один цікавий додаток.Cyrus-IMAPD, у відповідності з якимсь RFC не підтримує 8-бітні символи в полі Subject, а точніше діє досить оригінально - або відкидає такі листи зовсім, або приймає, але при цьому замінює всі 8- бітні символи буквою ікс. Ця доля чекає і на українські літери (краще б просто відрізав зайвий біт, хоч можна було б щось прочитати, при використанні кодування КОІ8-Р звичайно). На щастя, майже всі поштові клієнти перекодують ці бідні 8-бітні символи в набір 7-бітних, так що під "ніж" вони не потраплять.
RFC це звичайно добре і правильно, але я завжди дозволяв у поштових клієнтах використання 8-бітних символів. Тому мені б хотілося, щоб вони ніяк не різалися нашим Cyrus-IMAPD. Для цього вносимо невеликі правки в вихідні коди і перекомпілюємо imapd і lmtpd. Знаходимо в каталозі з вихідними файлами папку imap і в ній файли message.c і lmtpengine.c. Робимо резервні копії цих файлів. У кожному з них шукаємо рядок "(reject8bit)" (без лапок) і знаходимо щось типу цього:
if (reject8bit) /* We have been configured to reject all mail of this form. */ r = IMAP_MESSAGE_CONTAINS8BIT; goto ph_error; > else /* We have been configured to munge all mail of this form. */ c = 'X'; >
За промовчанням пакет встановлюється в папку /usr/cyrus.
Збираємо логи через syslogd
За допомогою фасилиті local6 ви можете зібрати логи imapd, а за допомогою фасилиті auth - логи, що відносяться до sasl.
Створіть конфігураційний файл /etc/imapd.conf, у мене він такий: configdirectory: /var/imap partition-default: /var/spool/imap admins: cyrus sasl_pwcheck_method: saslauthd tls_cert_file: /var/imap/server.pem tls_key_file: /var/imap/server.pem reject8bit: no maxmessagesize: 3000000 altnamespace: yes
Параметр "admins" вказує користувача від імені якого будуть виконуватися роботи зі створення/видалення скриньок, встановлення обмежень і т.д. Тут можна задати кілька імен розділених пробілами.
Краще не включати до цього списку користувачів, які будуть працювати з поштою, т.к. на користувачів, зазначених у цьому списку, не діє параметр "altnamespace: yes".
Параметр "altnamespace: yes" дозволяє користувачам створювати свої папки вказуючи не повний шлях, а шлях щодо їх домашнього каталогу, наприклад, без даного параметра щоб користувачу vasya створити папку Drafts потрібно вказати шлях user. vasya.Drafts, тоді як при використанні цього параметра достатньо вказати назву папки, а повний шлях дописує сам сервер.
З цієї причини поштові агенти що неспроможні створити службові папки типу Sent, Trash, тобто. вони намагаються створити їх вище по дереву каталогів, куди доступу немає. Звичайно це вирішується й іншим шляхом - де в налаштуваннях поштових агентів можна задати той шлях щодо якого створюються всі особисті папки, але краще вже прописати цей параметр і все буде робити сам сервер.
Також слід зупинитись на параметрі "reject8bit: no". Встановивши цей параметр значення "no" ми вказуємо системі не відкидати листи з 8-бітними символами у полі Subject, нехай і ціною втрати читабельності цього поля. Якщо ви внесли зміни описані вище, то значення цього параметра не має значення :-)
Параметр "sasl_pwcheck_method: saslauthd" вказує, що аутентифікація буде здійснюватися через демон saslauthd. Якщо в цьому параметрі вказаний метод "auxprop", то аутентифікації буде вироблятися зспеціальної бази (файл /etc/sasldb2), але даний варіант мене зовсім не влаштував - паролі в цьому файлі чомусь зберігаються не криптовані.
Створюємо робочий каталог, вказаний параметром "configdirectory: /var/imap" та встановлюємо на нього необхідні права: cd /var mkdir imap chown cyrus.mail imap chmod 750 imap
POP3 демон за замовчуванням також використовує налаштування з файлу /etc/imapd.conf. Також є глобальний файл конфігурації cyrus.conf, але його я не чіпав.
За замовчуванням демон лежить у папці /usr/local/sbin/. Для початку можемо подивитися які методи автентифікації підтримує наш демон: cm user.tester localhost.elcat.kg> dm user.tester deletemailbox: Permission denied localhost.elcat.kg> sam user.tester cyrus c localhost.elcat.kg> dm user.tester
Командою "dm user.tester" ми намагаємося видалити скриньку, але у нас не вистачає для цього прав. Командою "sam user.tester cyrus c" ми даємо користувачеві cyrus право на скриньку user.tester.
Одного разу, невідомо через що з'явилася проблема - клієнти не могли перевірити пошту по ІМАП, отримуючи помилку про невірний пароль. У логи ж писалися помилки читання бази mailboxes.db. Файл /var/imap/mailboxes.db існував, але зважаючи на все база мала помилки.
Спроба відновити бази не увінчалася успіхом: su -l cyrus -c '/usr/cyrus/bin/ctl_cyrusdb -rx'
Довелося перестворити базу: su -l cyrus -c '/usr/cyrus/bin/ctl_cyrusdb -r'
На жаль, ця команда чистить список скриньок у базі mailboxes.db. Дякую, що самі папки з листами залишаються. Перегляд списку скриньок із програми cyradm показує їх відсутність.
Відновити ж базу можна, маючи її дамп, створений командою: su -l cyrus -c'/usr/cyrus/bin/ctl_mboxlist -d' > /usr/cyrus/bin/dump
Як завжди про створення резервної копії починаєш думати тільки після втрати потрібної інформації :-) У мене ніякого дампа не було. Я завів новий ящик, зробив дамп і за цим прикладом зробив свій дамп з усіма ящиками. Дамп вийшов приблизно такий: user.djar_ default_djark_ lrswipcda_ user.djark.Drafts_default_djark_ lrswipcda_ user.djark.Sent.Items_ default_djark_ lrswipcda_ user. .Drafts_ default_igor_ lrswipcda_ user.igor.Sent_ default_igor_ lrswipcda_ user.igor.Trash_default_igor_ lrswipcda_ user.isma_ default_isma_ lrswipcda_ user.isma. isma.Sent.Items_ default_isma_ lrswipcda_
Де знак " _ " - це табуляція, тобто. табуляція є роздільником. Причому повинні бути описані усі папки всіх користувачів.
Наведений дамп визначає права за замовчуванням. Цього достатньо для нормальної роботи.