The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Postfix + MySQL + Courier-IMAP для ASPLinux (postfix mail mysql auth imap)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: postfix, mail, mysql, auth, imap,  (найти похожие документы)
From: Константин Климчев <koka at atknet.ru> Date: Mon, 28 Aug 2004 14:31:37 +0000 (UTC) Subject: Postfix + MySQL + Courier-IMAP для ASPLinux Оригинал: http://www.phantom.atknet.ru/articles/5.html Предисловие ----------- Продолжение postfix-цикла. Если Вам нужно что-то посерьезнее qpoppep'а или Вам просто необходима возможность работы по imap (хранить почтовые ящики пользователей на сервере - кстати, очень удобно). Сразу скажу - большенство материала перекочевало из предыдущих статей цикла. Повторяюсь: если Вы заметите какую-либо неточность или более красивое решение - пишите, я это отражу (разумеется герои не будут забыты в руководстве). В конце есть ссылки на собранные (пересобранные) файлы, которые я использовал при написании этой статьи Инсталляция ----------- MySQL: тут ничего не обычного нет - просто ставите и все. Единственное, что отмечу - нужны пакеты mysql, mysql-server, mysql-devel, zlib-devel Postfix: Вот тут необходимо пересобрать пакет. Необходимо "включить" поддержку MySQL. Но тут все очень просто - необходимо взять srpm'ку из дистрибутива, развернуть ее в то место, где у Вас осуществляется сборка пакетов и в spec'е изменить одно значение: с %define MYSQL 0 на %define MYSQL 1 а также добавить один патчик с http://www.oav.net/vda/. ftp://ftp.oav.net/others/postfix/VDA/postfix-1.1.11_quota_maildirsize.patch.gz Он нужен для квотирования почтовых ящиков пользователей (одному дадите 1 Мб, другому 10). Вся проблема в том, что postfix может квотировать только mailbox-ящики, а courier'у требуется maildir-ящик. Указанный патч как раз и устраняет проблему. Фактически, при пересборке postfix'а необходимо положить указанный патч в то место, где у Вас расположены исходники, патчи и т.п. которые участвуют при сборке rpm-пакета (каталог SOURCE), а в спеке добавить инструкцию о применении этого патча. Здесь я приведу diff измененного spec'а: @@ -66,0 +67,3 @@ +# custom patch +Patch1000: postfix-1.1.11_quota_maildirsize.patch.gz + @@ -125,0 +129,3 @@ + +# Apply custom patch +%patch1000 -p1 После этих подготовительных операций осуществите пересборку (rpm -ba postfix.spec), а после инсталлируйте (если переинсталлировать, то rpm -Uvh --force имя_пакета.rpm) пакет. Courier-imap: Идем на сайт: http://www.inter7.com/courierimap.html программы и берем исходники courier-imap. На момент написания была версия 1.7.3. Вся прелесть в том, что с пакетом уже идет spec для сборки rpm-пакета, его просто нужно "вытянуть" из архива. По умолчанию собирается несколько пакетов: сам courier-imap и модули авторизации через mysql (то что нам и нужно), postgresql (для поклонников - есть патчи для postfix'а) и ldap (в postfix'е нативная поддержка). Так как я все нужные пакеты собираю под vmware (чего основную систему захламлять), поэтому я ничего в спеке не изменял, а инсталлировал недостающие для сборки пакеты (лдапные и постгресные) и на выходе получил то, что нужно. После инсталлировал courier-imap и courier-imap-mysql. Следует отметить, что если Вы ничего не меняли, пакет ставится в /usr/lib/courier-imap Следующий шаг - конфигурирование. Конфигурирование ---------------- MySQL: все конфигурирование заключается в создании базы виртуальных пользователей и пользователя, от которого будет осуществляться доступ к указанной базе. mysql>create database mail; mysql>GRANT select ON `mail`.* TO 'postfix'@'127.0.0.1' IDENTIFIED BY 'postfix'; mysql>use mail; mysql>create table alias (address varchar(128) not null default '', \ goto varchar(128) not null default '', primary key (address)); mysql>create table transport (domain varchar(128) not null default '', \ transport varchar(128) not null default '', primary key (domain)); mysql>create table users (email varchar(128) not null default '', \ passwd varchar(128) not null default '', uid int(11) unsigned not null default'1000', \ gid int(11) unsigned not null default '12', \ maildir varchar(255) not null default '/var/spool/mail/', \ enabled tinyint(4) not null default '1', quota int(11) unsigned not null default '2048000', primary key (email) ); mysql>insert into transport VALUES ('virtual1.domain', 'virtual'); mysql>insert into users VALUES ('test@virtual1.domain', 'password', '1000', '12', \ '/var/spool/mail/virtual1.domain/test/', '1', '2048000'); Обратите внимание на значение поля maildir. Оно заканчивается на "/". Это необходимо для того, чтобы postfix "работал" с почтовыми ящиками в формате maildir Postfix: Конфигурирование postfix'а заключается в редактировании конфигурационных файлов. Сразу скажу - здесь я не буду описывать весь процесс конфигурирования postfix'а (смотрите документацию к postfix'у - там есть много чего интересного), а только тем моменты, которые затрагивают рассматриваемый вопрос. файл /etc/postfix/master.cf строку: virtual unix - n y - - virtual меняем на: virtual unix - n n - - virtual файл /etc/postfix/main.cf mydestination = localhost, $myhostname, localhost.$mydomain, mysql:/etc/postfix/mysql-mydestination.cf local_recipient_maps = unix:passwd.byname $alias_maps $virtual_mailbox_maps #======== MySQL =================== virtual_mailbox_base = / virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-maps.cf virtual_maps = mysql:/etc/postfix/mysql-virtual.cf virtual_minimum_uid = 500 virtual_uid_maps = mysql:/etc/postfix/mysql-virtual-uid.cf virtual_gid_maps = mysql:/etc/postfix/mysql-virtual-gid.cf transport_maps = mysql:/etc/postfix/mysql-transport.cf #======== Quota =================== #message_size_limit = 10240000 virtual_mailbox_limit = 10240000 virtual_mailbox_limit_inbox = no virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-mailboxsize.cf virtual_mailbox_limit_override = yes virtual_maildir_extended = yes virtual_create_maildirsize = yes virtual_mailbox_limit = 11000000 строка local_recipient_maps = ... необходима для того, чтобы почту могли получать и локальные пользователи (не нужно было бы их прописывать в базе), которым направляются результаты работы сервисов системы (запускаемые по cron, ошибки и т.п.), а эту почту локального пользователя (например, root) можно потом перенаправить на виртуального в файле /etc/postfix/aliases. файл /etc/postfix/mysql-mydestination.cf user = postfix password = postfix dbname = mail table = transport select_field = domain where_field = domain hosts = 127.0.0.1 файл /etc/postfix/mysql-virtual-maps.cf user = postfix password = postfix dbname = mail table = users select_field = maildir where_field = email additional_conditions = and enabled = 1 hosts = 127.0.0.1 файл /etc/postfix/mysql-virtual.cf user = postfix password = postfix dbname = mail table = alias select_field = goto where_field = address hosts = 127.0.0.1 файл /etc/postfix/mysql-virtual-uid.cf user = postfix password = postfix dbname = mail table = users select_field = uid where_field = email additional_conditions = and enabled = 1 hosts = 127.0.0.1 файл /etc/postfix/mysql-virtual-gid.cf user = postfix password = postfix dbname = mail table = users select_field = gid where_field = email additional_conditions = and enabled = 1 hosts = 127.0.0.1 файл /etc/postfix/mysql-transport.cf user = postfix password = postfix dbname = mail table = transport select_field = transport where_field = domain hosts = 127.0.0.1 файл /etc/postfix/mysql-mailboxsize.cf user = postfix password = postfix dbname = mail table = users select_field = quota where_field = email additional_conditions = and enabled = 1 hosts = 127.0.0.1 Не забываем создать каталог /var/spool/mail/virtual1.domain с правами: drwxrwxr-x root:mail Courier-imap: тут все просто. нужно подправить конфиг, да настроить каким службам автоматически запускаться (pop3,pop3-ssl, imap, imap-ssl) - см. соответствующие конфиги в /usr/lib/courier-imap/etc/ Содержимое файла файла /usr/lib/courier-imap/etc/authmysqlrc: MYSQL_SERVER 127.0.0.1 MYSQL_USERNAME postfix MYSQL_PASSWORD postfix MYSQL_SOCKET /var/lib/mysql/mysql.sock #MYSQL_PORT 3306 MYSQL_DATABASE mail MYSQL_USER_TABLE users MYSQL_CLEAR_PWFIELD passwd DEFAULT_DOMAIN virtual1.domain MYSQL_LOGIN_FIELD email MYSQL_HOME_FIELD maildir MYSQL_MAILDIR_FIELD maildir MYSQL_WHERE_CLAUSE enabled=1 На этом этап конфигурирования закончен. Следующее - тестирование. Тестирование ------------ Перво-наперво нужно проверить возможность получения почты виртуальными пользователями. Пользователь test@virtual1.domain у нас создан. Нужно попытаться послать ему какое либо письмо. Самый простой способ (это нужно делать с машины, на которой и происходит процесс установки): $cat какой_либо_текстовый_файл |mail test@virtual1.domain далее смотрим, что появилось в файле /var/log/maillog. Если возникли какие-либо ошибки - описывается довольно подробно где смотреть. Обычно это опечатки в конфигурационных файлах. Если не совсем понятно - попробуйте включить режим логирования в mysql (в этом логе будут писаться обращения к серверу и его ответы). Если все работает, то в maillog'е будет запись типа: May 20 10:05:41 localhost postfix/virtual[9779] DF0B1C79D: to=<test@virtual1.domain>, \ relay=virtual, delay=1, status=sent(maildir) После этого посмотрите содержитое каталога /var/spool/mail/virtual1.domain/ Там должен будет появиться каталог test. После того, как все получилось, попробуйте аналогичное для локальных пользователей (например, postmaster - смотрите куда он алиасится в файле /etc/postfix/aliases). С получением почты разобрались. Займемся доступом по pop3 (imap оставим на самостоятельное задание). Во-первых, запустите courier-imap: #/etc/init.d/courier-imap start Starting Courier-IMAP server: imap pop3 у меня запускаются только imap и pop3. Если Вы ничего не изменяли в конфигах, то еще должно будет запуститься imap-ssl и pop3-ssl. Во-вторых: Самый простой способ это с машины, на которой происходит процесс установки выполняем: telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Hello there. user test@virtual1.domain (или test - дефолтный домен мы прописали) +OK Password required. pass test +OK logged in. quit +OK Bye-bye. Connection closed by foreign host. если что-то не то - смотрите /var/log/maillog и лог запросов к mysql. Если попали в засаду - пишите на форум. http://www.phantom.atknet.ru/cgi-bin/cgiforum.pl Попробуем разобраться (но перед этим еще раз внимательно проверьте - ничего-ли Вы не забыли сделать и нет ли ошибок в конфигурационных файлах). В завершение напоминаю: Создаете виртуальный почтовый домен - не забудьте создать пользователей этого домена: "root@", "postmaster@" и "abuse@" Упоминаемые в статье файлы: * postfix-1.1.10-1.asp.i386.rpm модифицированный http://www.phantom.atknet.ru/articles/files/postfix/postfix-1.1.10-1.asp.i386.rpm * postfix-1.1.10-1.asp.src.rpm модифицированный http://www.phantom.atknet.ru/articles/files/postfix/postfix-1.1.10-1.asp.src.rpm * courier-imap-1.7.3-1.i386.rpm http://www.phantom.atknet.ru/articles/files/courier-imap/courier-imap-1.7.3-1.i386.rpm * courier-imap-mysql-1.7.3-1.i386.rpm http://www.phantom.atknet.ru/articles/files/courier-imap/courier-imap-mysql-1.7.3-1.i386.rpm * courier-imap-pgsql-1.7.3-1.i386.rpm http://www.phantom.atknet.ru/articles/files/courier-imap/courier-imap-pgsql-1.7.3-1.i386.rpm * courier-imap-ldap-1.7.3-1.i386.rpm http://www.phantom.atknet.ru/articles/files/courier-imap/courier-imap-ldap-1.7.3-1.i386.rpm * courier-imap-1.7.3-1.src.rpm http://www.phantom.atknet.ru/articles/files/courier-imap/courier-imap-1.7.3-1.src.rpm PS. Спасибо Sergey V. Beduev за ряд замечаний и предложений по статье

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Crion (??), 12:08, 18/10/2004 [ответить]  
  • +/
    Это что такая счас фишка стала писать про postfix + MySql. На эту тему уже столько в инете лежит инфы? что получаеться проосто пересказ старых.
    Одно отрадно, что в данной статье расмотрен вопрос про квотирование виртуальных ящиков.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру