• Авторизация


почта: вспомнить все. 28-04-2007 13:17 к комментариям - к полной версии - понравилось!



Настроил почту, балгополучно забыл как это делать. Теперь вот записываю. Постепенно буду постить свои действия:

Итак песочница почтовая:

Использоваются postfix, cyrus-sasl, cyrus-imap

1. Домены бывают канонические, hosted(виртуальные) и другие.
Канонические домены - те, которые относятся к имени хоста, или к родительскому домену хоста. hosted домены - для которых наш почтовый сервер является mx, остальные варианты меня не интересуют.
Необходимо рассмотреть виртуальные или хостед домены. Например сервер должен доставлять почту для двух доменов metel.dp.ua и ipcom.dp.ua, вобщем имя хоста может и не относиться ни к одному из этих доменов.


Рассматриваем случай почтовых ящиков, проще говоря почтовые имена никак не связаны с юникс аккаунтами.

мля.. оно таки заработало как мне надо.... теперь надо записать... все это...
итак что у меня есть:
1. Есть ASP Linux 11
2. В нем доступны следующие версии пакетов:
cyrus-sasl-2.1.20-6
cyrus-imapd-2.2.12-6.fc4
postfix-2.2.2-2
3. Есть желание использовать только пакеты,т.е. ничего не компилировать. В частности поэтому из рассмотрения выпал courier-imap
4. Расчитываем на поддержку сразу нескольких доменов, поэтому от использования virtual доменов нам никуда не уйти.

что дальше:
1. Конфигурим postfix для поддержки виртуальных доменов с внешним хранением писем, строго по мануалу.

virtual_transport = lmtp:unix:/tmp/lmtp

Указываем способ доставки писем внешнему хранилищу.
Банальная трабла.. которую по моему недоразумению упустил из виду - доступа к дефолтному сокету (/var/lib/imap/socket/lmtp) который создает cyrus-imap почемуто мне так и не удалось сделать для всех, в следствии чего выпадало с ошибкой
May 17 13:14:42 mytel postfix/lmtp[15570]: 8DA723FD5B: to=<oleg@ipcom.dp.ua>, relay=none, delay=1981, status=deferred (connect to /var/lib/imap/socket/lmtp[/var/lib/imap/socket/lmtp]: Permission denied)

Странно то, что доступность сокета я проверял руками все было нормально поэтому грешил на совсем дурацкие траблы типа postfix запускается из chroot. Но решение оказалось банальным - перенес сокет в другое место и оно таки заработало.


#virtual_transport = cyrus
Теперь почему неполучилось использовать транспорт cyrus. Последний так же сконфигурирован для использования виртуальных доменов. Вследствии чего пользовательские ящики создаются как user.oleg@icom.dp.ua. Проблема в том что при доставке толи postfix, толи цирусовский deliver (а скорее всего именно он, т.к. http://cyrusimap.web.cmu.edu/twiki/bin/view/Cyrus/CyrusDeliverWithAt)
отрезает все что после '@', цирусу приходят месаги для юзера user.oleg, что в принципе немного неправильно. бороть особо не пытался.
Выпадало с таким вот диалогом в логах(каламбур):

May 17 12:40:19 mytel lmtpunix[14857]: verify_user(user.oleg) failed: Mailbox does not exist
May 17 12:40:20 mytel postfix/pipe[15022]: 9783A3FD5B: to=<oleg@ipcom.dp.ua>, relay=cyrus, delay=1, status=bounced (data form
at error. Command output: oleg: Mailbox does not exist )


virtual_mailbox_domains = ipcom.dp.ua
список доменов через пробел которые postfix будет рассматривать как виртуальные, со всеми вытекающими.

virtual_mailbox_maps = hash:/etc/postfix/vmailbox
список почтовых ящиков, для которых postfix будет принимать месаги по smtp
формат приблизительно таков:

oleg@ipcom.dp.ua /var/mail/spool/ipcom.dp.ua/oleg

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

после этого незабываем сделать postmap /etc/postfix/vmailbox

virtual_alias_maps = hash:/etc/postfix/virtual
ну это кому нуна алиасы...

Postfix вроде все настроили.

2. Теперь Cyrus-imap
Авторизацию будем проводить cyrus-sasl, используя sasldb2

Работа с БД выполняется с помощью 2-х утилит saslpasswd2 и sasldblistusers2.
Создаем пользователей для почтовых ящиков и администратора. Администратор недолжен принимать почту, поэтому в списке virtual_mailbox_maps его быть недолжно.
Делаем пользователей:
saslpasswd2 -c oleg@ipcom.dp.ua
saslpasswd2 -c cyrus@ipcom.dp.ua

Просматриваем че понаделали:
sasldblistusers2
cyrus@ipcom.dp.ua: userPassword
oleg@ipcom.dp.ua: userPassword

БД сформирована. Теперь конфигурим cyrus.

/etc/imapd.conf
configdirectory: /var/lib/imap
partition-default: /var/spool/imap

admins: cyrus@ipcom.dp.ua
Список администраторов через пробел. Если администратор указан без домена, он считается глобальным и может администрировать любой из доменов. В нашем случае cyrus@ipcom.dp.ua может администрировать только пользователей домена ipcom.dp.ua

sievedir: /var/lib/imap/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true

sasl_pwcheck_method: auxprop
Способ проверки. Указываем что будем обращаться к БД sasldb2.
вообще если хочется пользователей хранить в какой нить mysql or postgresql (что удобнее) можно использовать способ saslauthd, там через pam (pam_mysql, pam_pgsql) добиваемся хранения пользователей в указанных СУБД. Единственно надо помнить что saslauthd работает механизм передачи паролей PLAIN, т.е. пароль в чистом виде, соответственно нам надо обязательно использовать TLS(SSL). В принципе мы его всеравно будем использовать, так что следующая строка вполне логична:
sasl_mech_list: PLAIN

virtdomains: userid
указываем что cyrus работает с виртуальными доменами.

defaultdomain: mytel.ss
имя сервера.

Дальше необходимо создать пользователей посредством cyradmin
cm user.oleg@ipcom.dp.ua

Что-бы удалить пользователя администратору надо сделать такое:
sam user.oleg@ipcom.dp.ua cyrus@ipcom.dp.ua c
dm user.oleg@ipcom.dp.ua

Небольшой итог:
для создания пользователя надо прописать его в virtual_mailbox_maps, добавить в /etc/sasldb2 командой saslpasswd2 и завести пользовательский потовый ящик в cyrus через cyradmin.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник почта: вспомнить все. | oOoXiD - Сетевик-затейник oOoXiD | Лента друзей oOoXiD / Полная версия Добавить в друзья Страницы: раньше»