Установка Postfixadmin
Postfixadmin написан на PHP, поэтому для его работы потребуется WEB-Сервер с поддержкой PHP и база данных (mysql или PostgreSQL). Я устанавливаю себе Nginx + php-cgi и базу данных mysql.
Установка Postfixadmin:
cd/usr/ports/mail/postfixadmin make install clean
Если ранее PHP и его модули не устанавливали, тогда они будут установлены автоматически:
php5-pcre php5-session php5-mysql
Рекомендуется для работы postfixadmin установить ещё:
php5-imap php5-mbstring
Всё что необходимо для работы Postfixadmin находится в /usr/local/www/postfixadmin/.
Можно попробовать сразу зайти через http://ИМЯ_ИЛИ_IP/postfixadmin и посмотреть на результат.
Обратите внимание на строку:
You can now run setup to make sure that all the PHP functions are available for Postfix Admin to run.
При посещении setup нам покажут требования, которые нам необходимо выполнить, чтобы Postfixadmin заработал (В скобочках я указал цифры, смысл которых будет дан далее):
Postfix Admin Setup Checker Running software: • PHP version 5.2.6 (1) Checking for dependencies: • Magic Quotes: Disabled - OK (2) • Depends on: presence config.inc.php - OK (3) • Warning: $CONF['configured'] is 'false'. (4) You must edit your config.inc.php and change this to true (this indicates you've created the database and user) • Depends on: MySQL 3.23, 4.0 - OK (5) • Error: Can't connect to database (6) Please edit the $CONF['database_*'] parameters in config.inc.php. DEBUG INFORMATION: Connect: Access denied for user 'postfix'@'localhost' (using password: YES) • Depends on: session - OK (7) • Depends on: pcre - OK (8) • Depends on: multibyte string - OK (9) • Depends on: IMAP functions - OK (10) Please fix the errors listed above.
1 - Версия установленного PHP.
2 - php.ini содержит переменную magic_quotes_gpc, которая отвечает за экранирование спецсимволов.
Её нужно отключить.
Подробнее по безопасности можно почитать тут: http://www.lissyara.su/?id=1450
3 - Существует ли конфигурационный файл config.inc.php? Если его нет, будет error чё-то там.
4 - В конфигурационном файле /usr/local/www/postfixadmin/config.inc.php есть такая опция (она в самом начале):
$CONF['configured'] = false;
Данную опцию нужно будет изменить на true, когда все остальные проблемы будут решены. (т.е. создана база данных, возможно установлены дополнительные модули и т.д.)
5 - Есть ли в PHP поддержка mysql? (Смысл для Linux скорее имеет, т.к. на FreeBSD сам ставится)
6 - Сообщение означает, что postfixadmin не может подключиться к базе данных Mysql. Это нормально, т.к. предстоит создать базу и пользователя и внести соответствующие изменения в config.inc.php.
7 - Есть ли в PHP поддержка session?
8 - Есть ли в PHP поддержка pcre?
9 - Есть ли в PHP поддержка multibyte?
10 - Есть ли в PHP поддержка IMAP?
Выполняем пункт 6, т.к. с остальными проблем не должно возникнуть.
Postfixadmin сам создаёт таблицы, ему нужно только создать базу и пользователя, к примеру так:
Создаём файл под именем postfixadmin.sql:
# Создание базы, пользователя, прав доступа. CREATE DATABASE eximbase; GRANT ALL PRIVILEGES ON eximbase.* TO eximuser@localhost IDENTIFIED BY 'eximpassword'; FLUSH PRIVILEGES;
Теперь создаём пользователя и базу:
#mysql -uroot -ppassword < postfixadmin.sql
Правим конфиг.
Находим и устанавливаем нужные нам данные: $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'eximuser'; $CONF['database_password'] = 'eximpassword'; $CONF['database_name'] = 'eximbase'; $CONF['database_prefix'] = ; Конечно, лучше сразу все переменные установить так, как нам нужно. К примеру, я себе установил такие опции (Которые не по умолчанию): $CONF['default_language'] = 'ru'; - Язык интерфейса. $CONF['admin_email'] = 'admin@mydomain.ru'; - При отправке письма из Postfixadmin, это адрес ОТ. При создании домена, можно будет создать сразу необходимые алиасы. $CONF['default_aliases'] = array ( 'abuse' => 'admin@mydomain.ru', 'hostmaster' => 'admin@mydomain.ru', 'postmaster' => 'admin@mydomain.ru', 'webmaster' => 'admin@mydomain.ru' $CONF['domain_path'] = 'YES'; - Будет ли домен отдельной папкой. Очень удобно. К примеру, у нас пользователи по умолчанию планируются в /mail Если у нас несколько доменов, тогда будет такая структура: /mail/MYDOMAIN.RU/user /mail/MYDOMAIN2.RU/user /mail/MYDOMAIN3.RU/user $CONF['domain_in_mailbox'] = 'NO'; - Добавление домена к имени пользователя. К примеру, у нас пользователи по умолчанию планируются в /mail/MYDOMAIN.RU/ Тогда будет такая структура: /mail/MYDOMAIN.RU/user1 /mail/MYDOMAIN.RU/user2 /mail/MYDOMAIN.RU/user3 Иначе(YES) будет добавляться домен: /mail/MYDOMAIN.RU/user1@mydomain.ru /mail/MYDOMAIN.RU/user2@mydomain.ru /mail/MYDOMAIN.RU/user3@mydomain.ru Соответственно и выглядит запись в базе данных (поле maildir с отсутствующим началом /mail, которое указывается не в postfixadmin, а в dovecot, courier-imap и т.п.): mysql> select maildir from mailbox; +--------------------------+ | maildir | +--------------------------+ | mydomain1.ru/user1/ | | mydomain2.ru/user2/ | | mydomain3.ru/user3/ | +--------------------------+ 3 rows in set (0.01 sec) Квоты по умолчанию (0 - отсутствуют): $CONF['aliases'] = '0'; $CONF['mailboxes'] = '0'; $CONF['maxquota'] = '0'; Поддержка квот: $CONF['quota'] = 'YES'; $CONF['transport'] = 'YES'; # разрешим переопределение вида домена: virtual, local или relay И другие несущественные уже мелочи.
Теперь снова возвращаемся на http://ИМЯ_ИЛИ_IP/postfixadmin/setup.php и наблюдаем создание таблиц в базе и приглашение ввести данные супер администратора:
Everything seems fine... attempting to create/update database structure Updating database: old version: 0; target version: 397 updating to version 1 (all databases)...upgrade_1 done updating to version 1 (MySQL)... done updating to version 2 (MySQL)... done updating to version 3 (MySQL)... done updating to version 4 (MySQL)... done updating to version 5 (MySQL)... done updating to version 79 (MySQL)... done updating to version 81 (MySQL)... done updating to version 90 (all databases)... done updating to version 169 (MySQL)... done updating to version 318 (MySQL)... done updating to version 344 (MySQL)... done updating to version 373 (MySQL)... done Admin: Password: Password (again):
Если всё прошло удачно радуемся полученным достижениям:
Postfix Admin Setup Checker Running software: • PHP version 5.2.6 Checking for dependencies: • Magic Quotes: Disabled - OK • Depends on: presence config.inc.php - OK • Checking $CONF['configured'] - OK • Depends on: MySQL 3.23, 4.0 - OK • Testing database connection - OK - mysql://eximuser:xxxxx@localhost/eximbase • Depends on: session - OK • Depends on: pcre - OK • Depends on: multibyte string - OK • Depends on: IMAP functions - OK Everything seems fine... attempting to create/update database structure Database is up to date Admin has been added! (superadmin@megadomain.ru) You can now log in to Postfix Admin. Make sure you delete this setup.php file! Also check the config.inc.php file for any settings that you might need to change!
Выполняем требование удалить setup.php и снова идём на: http://ИМЯ_ИЛИ_IP/postfixadmin/
Тут вводим данные нашего супер админа и наслаждаемся нашим интерфейсом.
Проблемы в версии postfixadmin-2.2.1.1:
1. Проблема с вкладкой backup:
DEBUG INFORMATION: Invalid query: Table 'eximbase.alias_domain' doesn't exist Please check the documentation and website for more information.
2. Проблема с синхронизацией.
SMTP protocol synchronization error (input sent without waiting for greeting): rejected connection from H=[127.0.0.1]
3. Проблема с автоматическим созданием папок.
Читать про всё тут: http://forum.lissyara.su/viewtopic.php?f=20&t=10123&start=25
Проблема №2 средствами exim решается так:
acl_smtp_connect = acl_check_connect ... acl_check_connect: warn hosts = 127.0.0.1 control = no_enforce_sync accept
... а средствами postfix:
mynetworks = xx.xx.xx.xx/16, ...., 127.0.0.0/8 ... ... ... smtpd_recipient_restrictions = permit_mynetworks, ... reject_unauth_pipelining, ... ...