пятница, 25 сентября 2009 г.

PostfixAdmin на Debian

Перевод статьи: PostfixAdmin on Debian

Postfix Admin - это web-интерфейс для настройки пользователей почтового сервера на основе Postfix и MySQL.

Он позволяет создавать пользователей и псевдонимы в пределах домена.

Этот урок рассматривает установку Postfix Admin, Postfix в связке с MySQL и включенной SMTP-аутентификацией, и Dovecot (для POP3/POP3S/IMAP/IMAPS) в связке с MySQL.

Не смотря на то, что этот урок был проверен на Debian Etch, настройка Postfix/MySQL одинакова и должна правильно работать на большинстве дистрибутивов.

Если вы хотите настроить фильтрацию почты каждого пользователя от спама и вирусов, обратитесь к следующему уроку: http://bliki.rimuhosting.com/space/knowledgebase/linux/mail/postfix+with+amavis+and+mysql

Postfixadmin теперь есть в официальных репозиториях Debian и Ubuntu. Просто воспользуйтесь apt-get для его установки:
# apt-get install postfixadmin
ЗАМЕЧАНИЕ: Пакет не попал в репозитории Ubuntu. Просто скачайте файл со страницы http://sourceforge.net/project/showfiles.php?group_id=191583&package_id=225300 и выполните:
# dpkg -i postfixadmin_2.2.0_all.deb
Postfixadmin будет установлен в каталог /usr/share/postfixadmin/, также будут установлен файл конфигурации /etc/postfixadmin/config.inc.php, а в конфигурацию apache будет добавлен дополнительный псевдоним посредством файла /etc/apache2/conf.d/postfixadmin:
Alias /postfixadmin /usr/share/postfixadmin
Если вы решите воспользоваться установкой из архива с исходными текстами, это всё можно сделать вручную.

Настроим Postfix Admin в соответствии с вашей спецификой (например, зададим подходящий пароль к базе данных, настроим домен по умолчанию и т.п.)

Отредактируем файл /usr/share/postfixadmin/config.inc.php и укажем следующее:
# vi config.inc.php
[...]
$CONF['configured'] = true;
$CONF['postfix_admin_url'] = 'http://ваш-домен.ru/postfixadmin';
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'SecretPassword!';
$CONF['database_name'] = 'postfix';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['encrypt'] = 'cleartext';
Просмотрите остаток файла, если вам захочется сделать более тонкие настройки.

Вы можете быстро заменить домен по умолчанию на ваш собственный:
# replace "change-this-to-your.domain.tld" "ваш-домен.ru" -- /usr/share/postfixadmin/config.inc.php
Создайте базу данных и пользователя в mysql:
$ mysql -u root -p
mysql> create database postfix;
mysql> grant all privileges on postfix.* to 'postfixadmin'@'localhost' identified by 'SecretPassword!';
mysql> flush privileges;
mysql> q
Откройте браузер и перейдите по ссылке http://ваш-домен.ru/postfixadmin/ или http://ваш-IP/postfixadmin/. Будет предложено запустить процесс настройки. Удостоверьтесь, что все проверки установщика сообщают 'OK'.

Рекомендуется удалить setup.php.

Теперь перейдите по ссылке http://ваш-домен.ru/postfixadmin/admin. Вы должны получить приглашение. Войдите с использованием почтового ящика администратора, заведённого ранее на странице настройки. Отсюда вы можете добавлять домены, почтовые ящики и т.п. Но Postfix этого не увидит. Нам нужно установить Postfix и настроить его.

Установим Postfix и SASL2 с поддержкой MySQL
# apt-get install postfix-mysql postfix-tls libsasl2-modules-sql libsasl2-modules
Добавим в файл /etc/postfix/main.cf следующие строки:
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:106
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 106
virtual_transport = virtual
virtual_uid_maps = static:106
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
  reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient,
  reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
ЗАМЕЧАНИЕ: UID и GID равные 106 на вашей системе могут быть другими. Посмотрите на UID и GID пользователя postfix (или vmail) в файле /etc/passwd и укажите их. Например, на моём сервере:
# grep postfix /etc/passwd
postfix:x:102:105::/var/spool/postfix:/bin/false
--> uid: 102; gid: 105

Создайте следующие файлы в каталоге /etc/postfix/:
mysql_virtual_alias_maps.cf
user = postfix
password = SecretPassword!
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
mysql_virtual_domains_maps.cf
user = postfix
password = SecretPassword!
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
mysql_virtual_mailbox_maps.cf
user = postfix
password = SecretPassword!
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
Если вы хотите разрешить ретрансляцию почты через ваш сервер после SMTP AUTH, пропишите в файле /etc/postfix/sasl/smtpd.conf следующие настройки:
pwcheck_method: auxprop
mech_list: PLAIN LOGIN
auxprop_plugin: sql
sql_verbose: yes
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: SecretPassword!
sql_database: postfix
sql_select: select password from mailbox where username = '%u@%r'
Создайте структуру каталогов, включая каталог для первого домена. Вы так же можете войти в PostfixAdmin и создать учётную запись 'test' для домена ваш-домен.ru.
# mkdir -p /home/vmail/yourdomain.com/test
# chmod -R 770 /home/vmail
# chown -R postfix:postfix /home/vmail/
Установим Dovecot с поддержкой MySQL
# apt-get install dovecot-common dovecot-imapd dovecot-pop3d
Отредактируем файл /etc/dovecot/dovecot-mysql.conf с настройками Dovecot/MySQL, воспользовавшись следующими опциями:
driver = mysql
connect = dbname=postfix user=postfixadmin host=localhost password=SecretPassword!
default_pass_scheme = PLAIN
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir,
                    106 AS uid,
                    106 AS gid
             FROM mailbox
             WHERE username = '%u'
Теперь настроим Dovecot на использование MySQL, задав следующие опции в файле /etc/dovecot/dovecot.conf:
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n
mail_access_groups = mail
first_valid_uid = 106
first_valid_gid = 106
protocol imap {
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
auth default {
  mechanisms = digest-md5 plain
  passdb sql {
    args = /etc/dovecot/dovecot-mysql.conf
  }
  userdb sql {
    args = /etc/dovecot/dovecot-mysql.conf
  }
  user = root
}
Перезапустим Dovecot и Postfix и проверим их.

По завершении вы должны получить возможность добавлять новые домены, почтовые ящики, псевдонимы с помощью PostfixAdmin и получить правильно работающую систему, включая SMTP-аутентификацию. Отметим, что для работы SMTP-аутентификации saslauthd не требуется.

Примечание переводчика:
  1. В репозитории Debian Lenny и выше на момент перевода готовый пакет PostfixAdmin обнаружен не был.
  2. После редактирования файла /etc/postfixadmin/config.inc.php нужно перейти не по ссылке http://ваш-домен.ru/postfix/, а по ссылке http://ваш-домен.ru/postfix/setup.php
  3. Чтобы http://ваш-домен.ru/postfix/setup.php не выдавал ошибки, нужно поставить пакет php5-imap и включить использование модуля imap в PHP.

2 комментария:

Блог программистов комментирует...

у меня проблемка возникла при настройке, сервера все поднялись, а вот почемуто постфикса в /etc/ нет и пе создаются папки пользователей при создании нового пользователся в postfixadmin

в чём может быть проблемма?
(кстати почта соответственно не работает тоже)

morbo комментирует...

>а вот почемуто постфикса в /etc/

Как такое может быть? Сам postfix поставить не забыли? ;D

>пе создаются папки пользователей при создании нового пользователся в postfixadmin

Их создаёт dovecot при первом приёме письма или обращении пользователя к каталогу. Если даже после этого катлог не появится, значит у dovecot нет прав на создание каталогов.