Ранее я уже описывал настройку почтовой системы, использующей Postfixadmin в качестве веб-интерфейса для её администрирования: Настройка почтовой системы на основе Postfix, Dovecot, PostfixAdmin.
Тогда я просто скомпилировал свою заметку из различных рецептов, которые мне больше всего понравились. Сейчас я вижу в той заметке достаточное количество недостатков. Например, в той заметке настраивается SASL через плагин auxprop из Cyrrus, хотя Postfix может использовать SASL, встроенный в Dovecot. Для фильтрации спама по серым спискам был выбран Postgrey, просто потому что он был тогда на слуху. Фильтрация вирусов осуществляется с использованием SMTP-прокси, хотя есть более подходящий для этого способ - milter.
Начнём, как и в прошлый раз, с настройки Postfixadmin. Кроме Postfixadmin имеется множество других различных веб-интерфейсов для управления почтовой системой (одну я даже написал для себя сам), однако Postfixadmin наиболее популярен. Настройка начнётся с него, потому что остальные системы зависят от него, а он сам от них относительно независим.
Имеется несколько устоявшихся аббревиатур для различных компонентов почтовой системы:
Установим сервер MySQL:
# apt-get install mysql-server
Подробнее останавливаться на настройке сервера MySQL не стану.
Ставим пакет:
# apt-get install postfixadmin
В процессе установки запустится мастер настройки базы данных:
Настройки подключения Postfixadmin к базе данных находятся в файле /etc/postfixadmin/dbconfig.inc.php, где их можно впоследствии изменить.
Традиционно, я воспользуюсь Lighttpd. Установим веб-сервер, Postfixadmin и PHP для его работы:
# apt-get install lighttpd php5-cgi
Скопируем имеющийся в пакете файл /etc/postfixadmin/lighttpd.conf в каталог /etc/lighttpd/conf-available/ под именем 30-postfixadmin.conf:
# cp /etc/postfixadmin/lighttpd.conf /etc/lighttpd/conf-available/30-postfixadmin.conf
Я вписал в файл /etc/lighttpd/conf-available/30-postfixadmin.conf следующие настройки:
$HTTP["host"] == "mail.domain.tld" {
alias.url += (
"/admin" => "/usr/share/postfixadmin",
)
}
Теперь включим модули Lighttpd, необходимые для работы Postfixadmin:
# lighty-enable-mod fastcgi fastcgi-php postfixadmin # /etc/init.d/lighttpd force-reload
Когда веб-сервер настроен для обслуживания веб-интерфейса Postfixadmin, можно зайти на страницу setup.php и сгенерировать хэш пароля для дальнейшей настройки:
Копируем хэш:
Вставляем хэш в файл /etc/postfixadmin/config.inc.php. Затем вводим пароль и данные учётной записи суперадминистратора, которая будет создана:
После того, как появится сообщение о добавлении администратора, можно войти под этой учётной записью в интерфейс администрирования:
Настройки Postfixadmin находятся в файле /etc/postfixadmin/config.inc.php. Ниже показаны полезные опции из этого файла с моими комментариями. Жирным шрифтом показаны опции, на которые следует обратить особое внимание. fetchmail и отсылку уведомлений при отсутствии адресата (vactions) я не настраивал, поэтому эти опции подробно не рассмотрены.
$CONF['configured'] = true; // Разрешает работу Postfixadmin
$CONF['setup_password'] = 'changeme'; // Хэш пароля, используемого при настройке Postfixadmin через веб
// После настройки можно очистить
$CONF['postfix_admin_url'] = '/admin'; // База для URL интерфейса
$CONF['default_language'] = 'ru'; // Язык интерфейса
$CONF['database_prefix'] = ''; // Префикс таблиц в базе данных
$CONF['database_tables'] = array ( // Здесь можно выполнить тонкую настройку имён таблиц
'admin' => 'admin',
'alias' => 'alias',
'alias_domain' => 'alias_domain',
'config' => 'config',
'domain' => 'domain',
'domain_admins' => 'domain_admins',
'fetchmail' => 'fetchmail',
'log' => 'log',
'mailbox' => 'mailbox',
'vacation' => 'vacation',
'vacation_notification' => 'vacation_notification',
'quota' => 'quota',
'quota2' => 'quota2',
);
$CONF['admin_email'] = 'postmaster@domain.tld'; // Почтовый ящик,
$CONF['smtp_server'] = 'mail.domain.tld'; // Полностью определённое доменное имя SMTP-сервера и
$CONF['smtp_port'] = '25'; // порт SMTP-сервера для отправки уведомлений о вновь созданных ящиках
$CONF['encrypt'] = 'md5crypt'; // Алгоритм хэширования, который будет использоваться для сохранения паролей
// в базе данных
// При указании cleartext пароль будет храниться в открытом виде
$CONF['authlib_default_flavor'] = 'md5raw'; // При указании authlib здесь указывается алгоритм хэширования из authlib
$CONF['dovecotpw'] = "/usr/sbin/dovecotpw" // При указании dovecot:* здесь указывается путь к утилите dovecotpw
$CONF['min_password_length'] = 9; // Минимальное количество символов в пароле - 9
$CONF['generate_password'] = 'YES'; // При заведении ящика сгенерировать пароль и показать его
$CONF['show_password'] = 'NO'; // Не показывать пароль после создания ящика
$CONF['page_size'] = '30'; // Количество строк в таблице, отображаемой в веб-интерфейсе
$CONF['default_aliases'] = array ( // Создавать для каждого нового домена указанные псевдонимы для пересылки писем
'abuse' => 'admin@domain.tld',
'hostmaster' => 'admin@domain.tld',
'postmaster' => 'admin@domain.tld',
'webmaster' => 'admin@domain.tld',
'info' => 'admin@domain.tld'
);
$CONF['domain_path'] = 'YES'; // Указывает, что каталог ящика хранится в каталоге домена
// YES - /var/mail/virtual/domain/user@domain, NO - /var/main/virtual/user@domain
$CONF['domain_in_mailbox'] = 'NO'; // Указывает, что в каталоге с именем ящика не должно быть домена
// YES - /var/mail/virtual/domain/user@domain, NO - /var/mail/virtual/domain/user
$CONF['maildir_name_hook'] = 'NO'; // Здесь можно задать собственную функцию для генерирования пути к ящику
$CONF['aliases'] = '100'; // Максимальное количество псевдонимов по умолчанию в одном домене
$CONF['mailboxes'] = '100'; // максимальное количество почтовых ящиков по умолчанию в одном домене
$CONF['maxquota'] = '100'; // Максимальный объём ящика по умолчанию (см. ниже множитель квоты)
$CONF['quota'] = 'YES'; // Использовать квоты почтовых ящиков
$CONF['quota_multiplier'] = '1048576'; // Множитель для размера квоты почтовых ящиков,
// реальный объём квоты по умолчанию составит maxquota * quota_multiplier = 100 Мегабайт
$CONF['transport'] = 'YES'; // Использовать таблицу транспортов
$CONF['transport_options'] = array (
'dovecot', // Для виртуальных почтовых ящиков
'relay' // Транспорт для доменов, для которых почтовый сервер является резервным
);
$CONF['transport_default'] = 'dovecot'; // Транспорт по умолчанию
$CONF['vacation'] = 'NO'; // Не использовать механизм уведомлений (для использования нужно установить плагин)
$CONF['vacation_domain'] = 'autoreply.domain.tld';// Домен для отсылки уведомлений, прописывать в DNS не обязательно
$CONF['vacation_control'] ='YES'; // Разрешить пользователям настраивать уведомления для собственных почтовых ящиков
$CONF['vacation_control_admin'] = 'YES'; // Разрешить администраторам доменов настраивать уведомления почтовых ящиков
$CONF['alias_control'] = 'YES'; // Разрешить суперадминам редактировать пересылки
$CONF['alias_control_admin'] = 'YES'; // Разрешить администраторам доменов редактировать пересылки
$CONF['special_alias_control'] = 'NO'; // Разрешить администраторам доменов редактировать специальные пересылки
// (см. выше default_aliases)
$CONF['alias_goto_limit'] = '0'; // Максимальное количество пересылок, отображаемых в одной строке (0 - без лимита)
$CONF['alias_domain'] = 'NO'; // Не "зеркалировать" пересылки и ящики в другой домен
$CONF['backup'] = 'YES'; // Показывать вкладку резервного копирования
$CONF['sendmail'] = 'YES'; // Показывать вкладку отправки почты
$CONF['logging'] = 'YES'; // Вести журнал редактирований
$CONF['fetchmail'] = 'NO'; // Не показывать вкладку получения почты с других серверов
$CONF['fetchmail_extra_options'] = 'NO'; // Не разрешить пользователям задавать дополнительные опции fetchmail
// (Разрешать опасно, т.к. пользователь сможет выполнить произвольную команду!)
$CONF['show_header_text'] = 'NO'; // Не показывать текст заголовка
$CONF['header_text'] = ':: Postfix Admin ::'; // Текст заголовка
$CONF['user_footer_link'] = "http://domain.tld"; // Ссылка, отображаемая в главном меню при входе под обычным пользователем
$CONF['show_footer_text'] = 'YES'; // Показывать "подвал" на каждой странице
$CONF['footer_text'] = 'Вернуться на domain.tld'; // Текст "подвала"
$CONF['footer_link'] = 'http://domain.tld'; // Ссылка "подвала"
$CONF['welcome_text'] = <<<EOM // Текст письма, отправляемого новым пользователям
Добрый день!
Поздравляем вас с получением новой учётной записи!
EOM;
$CONF['emailcheck_resolve_domain'] = 'YES'; // При создании ящика или пересылки проверять наличие домена
$CONF['used_quotas'] = 'YES'; // Показывать использование квот из словаря Dovecot в базе данных
$CONF['new_quota_table'] = 'YES'; // Использовать таблицу quota2 для отображения информации об использовании квот
$CONF['theme_logo'] = 'images/logo-default.png'; // Путь к своему логотипу
$CONF['theme_css'] = 'css/default.css'; // Путь к собственному файлу стилей
На этом настройку Postfixadmin можно считать оконченой. Продолжение: Установка и настройка Dovecot