Возможно вы искали: 'James Patterson's Wome...'

May 15 2025 19:10:18
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Установка IMAP4 сервера на базе cyrus-imapd + sendmail (mail imap sendmail)

Установка IMAP4 сервера на базе cyrus-imapd + sendmail (mail imap sendmail)

Ключевые слова: mail, imap, sendmail, (найти похожие документы)

From: Den aka Diesel <http://diesel.tomsk.ru>
Date: Mon, 2 May 2004 18:21:07 +0000 (UTC)
Subject: Установка IMAP4 сервера на базе cyrus-imapd + sendmail

Оригинал: http://slackware.tomsk.ru/docs/?p=cyrus-imapd

Статья опубликована в журнале "Системный администратор"
(http://samag.ru/), номер 10(11) - октябрь 2003.

Преамбула

Данный материал - это не сравнительный обзор протоколов работы с
почтой, это практические рекомендации по установке IMAP (Internet
Message Access Protocol) сервера для тех, кто уже определился, что
именно это ему необходимо. Тем, кто еще не определился с выбором,
рекомендую почитать http://www.imap.org/imap.vs.pop.brief.html В
результате описанных в этой статье действий мы должны получить
работоспособный 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 (http://asg.web.cmu.edu/cyrus/)
cyrus-sasl-2.1.15.tar.gz (http://asg.web.cmu.edu/sasl/)
php-4.3.2.tar.gz (http://www.php.net/)
apache-1.3.28.tar.gz (http://httpd.apache.org/)
imap-2002d.tar.Z (http://www.washington.edu/imap/)
libmcrypt-2.5.7.tar.gz (http://mcrypt.hellug.gr/)
smartsieve-i18n-ru.tar.gz
(http://diesel.tomsk.ru/linux/files/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.

% tar zxvf ./cyrus-sasl-2.1.15.tar.gz
% cd cyrus-sasl-2.1.15
% ./configure --disable-otp --disable-krb4 --disable-gssapi --without-pam
% make
% make install
% ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
% ldconfig


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

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

% saslpasswd2 -c cyradmin


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

% chown cyrus.mail /etc/sasldb2


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

Сборка cyrus-imapd

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

% tar zxvf ./cyrus-imapd-2.1.15.tar.gz
% cd cyrus-imapd-2.1.15
% ./configure
% make
% make install


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


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

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

local6.debug /var/log/imapd.log
auth.debug /var/log/auth.log


Перезапускаем syslogd:

% killall -1 syslogd


Создаем /etc/imapd.conf:

% touch /etc/imapd.conf


Его содержимое:

configdirectory: /var/imap
partition-default: /var/spool/imap
sievedir: /var/spool/sieve
admins: cyradmin
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sasldb
sasl_mech_list: CRAM-MD5 PLAIN
tls_cert_file: /var/imap/server.pem
tls_key_file: /var/imap/server.pem


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

% man imapd.conf


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

% mkdir /var/imap
% chmod 750 /var/imap
% mkdir /var/spool/imap
% chmod 750 /var/spool/imap
% mkdir /var/spool/sieve
% chmod 750 /var/spool/sieve


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

% cd cyrus-imapd-2.1.15/tools
% ./mkimap
% chown -R cyrus.mail /var/imap
% chown -R cyrus.mail /var/spool/imap
% chown -R cyrus.mail /var/spool/sieve


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

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

pop3 110/tcp
imap 143/tcp
imsp 406/tcp
acap 674/tcp
imaps 993/tcp
pop3s 995/tcp
kpop 1109/tcp
sieve 2000/tcp
lmtp 2003/tcp
fud 4201/udp


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

% cp master/conf/normal.conf /etc/cyrus.conf


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

% /usr/cyrus/bin/master &


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

% openssl req -new -x509 -nodes -out /var/imap/server.pem
-keyout /var/imap/server.pem -days 365
% chown cyrus.mail /var/imap/server.pem


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


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

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

% cd /usr/share/sendmail/cf/cf
% cp ./linux.smtp.mc ./current.mc


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

define(`confLOCAL_MAILER', `cyrusv2')dnl
MAILER(`cyrusv2')dnl


Если вы ставили 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:

% ./Build current.cf
% cp ./current.cf /etc/mail/sendmail.cf


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

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

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

% /usr/local/bin/imtest -m cram-md5 -a cyradmin your.hostname.domain


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


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

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

% cp -R /usr/local/lib/perl5 /usr/lib/


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

% saslpasswd2 -c dummyuser
% cyradm --user cyradmin --server your.hostname.domain


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

your.hostname> cm user.dummyuser
your.hostname> sq user.dummyuser 20480


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


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

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

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

% telnet your.hostname.domain sieve


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

require ["reject","fileinto"];

# не принимаем почту и высылаем сообщение об отказе:
if address :is :all "From" "annoying@badnet.domain" {
reject "Утомили";
}

# фильтруем по subject корпоративный список рассылки:
if header :contains "Subject" "corporate mailing" {
fileinto "INBOX.lists.corporate";
}

# еще один список рассылки:
if header :is "List-Id" "<bugtraq.list-id.securityfocus.com>" {
fileinto "INBOX.lists.bugtraq";
}

# а это вообще странные письма - адресованы не нам:
if anyof ( not address :all :contains ["To", "Cc", "Bcc"] "myname@myaddress.domain" ) {
fileinto "INBOX.bad";
}


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

% sieveshell -u cyradmin your.hostname.domain
> put test.script
> activate test
> quit


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

Далее рассматривается прикручивание веб-интерфейса к 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 с выбранной опцией:

% make slx


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

% make slx EXTRASPECIALS="SSLINCLUDE=/usr/include/openssl SSLLIB=/usr/lib"


При возникновении проблем помогает вдумчивое прочтение 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 (тут все тривиально):

% tar zxvf ./libmcrypt-2.5.7.tar.gz
% cd libmcrypt-2.5.7
% ./configure
% make
% make install
% ldconfig


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

% ./configure --with-imap=/usr/local/imap-2002d --with-imap-ssl=/usr/include/openssl
--with-apache=./../apache_1.3.28 --with-mcrypt=/usr/local --with-iconv
% make
% make install


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

% ./configure --activate-module=src/modules/php4/libphp4.a
% make
% make install


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

% ./apachectl start


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

% lynx http://your.hostname.domain/


Либо просто любым браузером обращаемся по адресу нашего сервера. Если
видим ободряющую надпись "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
(http://smartsieve.sourceforge.net/) - это написанный на PHP
менеджер sieve скриптов, позволяющий черз веб-интерфейс управлять
правилами сортировки почты.

Изначально я скачал с официального сайта smartsieve-i18n версии
0.5.1, однако при его использовании столкнулся с проблемой работы с
русскими именами каталогов в почтовом ящике. Решив, что транслит и
другие компромиссы - это не наш метод, пропатчил это дело, заодно
написав русскую версию локали. Русифицированную версию smartsieve
можно скачать по адресу:
http://diesel.tomsk.ru/linux/files/smartsieve-i18n-ru.tar.gz

Вся процедура установки сводится к распаковке тарбола и
копированию содержимого в структуру каталогов, являющуюся структурой
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 и поисковый сервер [30]google.

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

04.08.03 (updated 24.08.03)
Den aka Diesel, http://diesel.tomsk.ru/
1422 Прочтений •  [Установка IMAP4 сервера на базе cyrus-imapd + sendmail (mail imap sendmail)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Установка IMAP4 сервера на базе cyr... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка