почта: вспомнить все.
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