Настройка связки postfixadmin, postfix, dovecot 2

Моя настройка без использования mysql здесь:
http://bloknot.pp.ua/dovecot-configuration
http://bloknot.pp.ua/nastroika_postfix

Чтобы не забыть, записываю свою установку postfix, postfixadmin, dovecot 2 версии на Ubuntu 12.04 сервере.
Использовал информацию с оф сайтов postfix, dovecot, postfixadmin, а так же
http://bozza.ru/art-169.html
http://bozza.ru/art-170.html
http://www.exratione.com/2012/05/a-mailserver-on-ubuntu-1204-postfix-dov...
http://rtfm.co.ua/freebsd-stroim-pochtovuyu-sistemu-postfix-dovecot-mysq...
http://libnix.com/install-postfix-dovecot-mysql-postfixadmin-ubuntu.html
http://www.rebelcode.ru/linux/servernaya-pochta-na-osnove-postfix-doveco...

Общая схема работы postfixadmin - dovecot - mysql - postfix
postfixadmin - создает записи в бд mysql ( пользователи, пароли, домены, алиасы, почтовые ящики...)
postfix - принимает отправляет почту, dovecot - помещает почту в почтовый католог в папки пользователей, раздает ее пользователям и проводит авторизацию пользователей при получении-отправке ими почты.

Не рассматривая ssl, работает примерно следующим образом:
При приеме почты извне (соединение устанавливается на 25 порт)postfix решает принимать или отвергнуть почту, если принимает, то передает ее dovecot-y ( через сокет /var/spool/postfix/private/dovecot-auth )который (используя auth-worker ) получает информ из бд ( используя данные /etc/dovecot/dovecot-mysql.conf ) о почтовом каталоге для пользователя, dovecot помещает почту в почтовый каталог пользователя имея права (vmail в моем конфиге ) на запись в этот каталог (процесс lda ).
При получении пользователем своей почты, например, через imap, пользователь подключается на (143 порт)к процессу imap-login (запущен от пользователя dovenull) который передает данные процессу auth-worker, который запрашивает и получает данные от бд о пользователе-пароле, и если пользователь валидный, то используя процесс imap ( с правами vmail ) получает почту из своего почтового каталога.
При отправке почты пользователь подключается к smtp postfix-a на 25(587) порт. Postfix соединяется с dovecot через сокет для авторизации пользователя. Dovecot, используя auth-worker, подключается к бд, получает данные и если пользователь валидный, то почта уходит на обработку postfix-y который решает отправлять ее или нет.

Установка и настройка:
Сначала ставим mysql, и в зависимости от наличия памяти выбирается конфиг из предоставляемых в .../examples : можно взять my.smal.cnf если мало памяти или my.medium.cnf . Для удобства упраления mysql я ставлю phpmyadmin. Далее в mysql создается пользователь и база для работы postfixadmin либо с помощью phpmyadmin либо в mysql:

mysql -u root -p ( далее ввести пароль root в mysql )
CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'mypass';
GRANT USAGE ON *.* TO 'dbuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE DATABASE IF NOT EXISTS `dbname`;
GRANT ALL PRIVILEGES ON `dbname`.* TO 'dbuser'@'localhost';
Соответственно изменив названия бд, имя пользователя и пароль.
Все таблицы в бд создаст postfixadmin.

Postfixadmin
Скачиваем с оф сайта postfixadmin
http://postfixadmin.sourceforge.net/
Устанавливаем и настраиваем postfixadmin
Распаковывем архив в нужную директорию на сервере и настраиваем apache, nginx,...

Редактируем в файле config.inc.php в корне postfixadmin такие строки:
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin'; установить имя пользователя к бд
$CONF['database_password'] = '123'; установить пароль к бд
$CONF['database_name'] = 'postfixadmin'; установить имя бд
$CONF['database_prefix'] = '';
Далбратиться в браузере к postfixadmin, например так
http://mydomainname/postfixadmin/setup.php
и выполнить все требования postfixadmin-a если чего-то не хватает в системе. Будет предложено создать аккаунт админа для postfixadmin и выведен хэш, который надо будет вписать в соответствующую строку config.inc.php
$CONF['setup_password'] = ' ';
В старых версиях pfa требовалось удалять setup.php, в новых это не требуется.
Можно сразу войти в postfixadmin и создать домен и почтовый ящик для дальнейшей работы. При этом только будут созданы записи в бд, директориии на диске будут созданы только после того как dovecot попытается доставить в них полученную почту.

Устанавливаем и настраиваем postfix
Конфиг /etc/postfix/main.cf

# Main configuration file for postfix

biff = no

# только ipv4
inet_protocols = ipv4

append_dot_mydomain = no
alias_maps = hash:/etc/aliases
#
myhostname = hostname.mydomain.com
mydomain = mydomain.com
myorigin = mydomain.com
mydestination = localhost
#mydestination = 127.0.0.1
#
mynetworks = 127.0.0.1

# если почтовый сервер обслуживает локальную сеть, то ее нужно добавить в mynetworks
mailbox_size_limit = 100000000
#
smtpd_helo_required = yes
#smtpd_delay_reject = no
smtpd_soft_error_limit = 5
smtpd_hard_error_limit = 10
unverified_recipient_reject_code = 550
#smtpd_sender_login_maps = hash:/etc/postfix/valid_envelop_senders
#
#smtpd_client_restrictions = reject_unauth_pipelining
#
smtpd_recipient_restrictions = reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unauth_pipelining,

reject_unverified_recipient,
sleep 30
# reject_non_fqdn_helo_hostname,
# reject_invalid_helo_hostname,
# reject_unknown_helo_hostname
#
smtpd_data_restrictions =
reject_multi_recipient_bounce
#
address_verify_map = btree:$data_directory/verify_cache
#

# каталог где хранится вся почта

virtual_mailbox_base = /home/vmail 
virtual_mailbox_domains = mysql:/etc/postfix/virtual_mailbox_domains.cf
#
virtual_mailbox_maps = mysql:/etc/postfix/virtual_mailbox_maps.cf
#
virtual_alias_maps = mysql:/etc/postfix/virtual_alias_maps.cf
#virtual_minimum_uid = 100
#
virtual_uid_maps = static:9999
virtual_gid_maps = static:9999
#
home_mailbox = Maildir/
#
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
#
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
#
# TLS
smtpd_tls_security_level = may
#smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_cert_file = /etc/ssl/certs/ssl-mail.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-mail.key
#smtpd_tls_protocols = !SSLv2
#
readme_directory = /usr/share/doc/postfix

Устанавливаем и настраиваем dovecot 2 версии.

Во второй версии Dovecot есть изменения в конфигурационных директивах и конфиге. Нопример, появились инклюды ( включения ), задающиеся директивой:
!include conf.d/*.conf
т.е. часть параметров задается в отдельных файлах и они включаются вышеуказанной командой. Пример такого конфига нашел тут
http://www.exratione.com/2012/05/a-mailserver-on-ubuntu-1204-postfix-dov...
Как пишет руководство по быстрой конфигурации, эти включения не обязательно использовать.
Чтобы посмотреть все доступные параметры и их значения используйте doveconf -a , только значения отличающиеся от умолчальных - doveconf -n , значения отличные от умолчальных и все установленные параметры - doveconf -N

Конфиг dovecot.conf:

# 2.0.19: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-24-virtual x86_64 Ubuntu 12.04.2 LTS ext3
protocols = pop3 imap
listen = *
auth_debug = yes
mail_debug = yes
auth_debug_passwords = yes

info_log_path = /var/log/dovecot-info.log
log_path = /var/log/dovecot.log
debug_log_path = /var/log/dovecot-dbg.log

auth_mechanisms = plain login digest-md5
#auth_username_format = %Lu
auth_verbose = yes
disable_plaintext_auth = no

first_valid_gid = 1000
first_valid_uid = 1000
mail_gid = 9999
mail_uid = 9999
mail_location = maildir:/home/vmail/%d/%n
mail_privileged_group = mail
#
passdb { # требуется для доступа к базе данных паролей
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
userdb { # требуется для доступа к базе данных пользователей
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}

service auth {
unix_listener /var/spool/postfix/private/dovecot-auth {
group = postfix # требуется для коннекта на сокет postfix-a для обмена данными
mode = 0660
user = postfix
}
unix_listener auth-userdb {
group = vmail # требуется для доступа в каталог почты.
mode = 0660
user = vmail
}
}
#
ssl_cert = </etc/ssl/dovecot/certs/dovecot.pem
ssl_key = </etc/ssl/dovecot/private/dovecot.pem

valid_chroot_dirs = /home/vmail
verbose_proctitle = yes
protocol pop3 {
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_uidl_format = %08Xu%08Xv
}

protocol lda {
sendmail_path = /usr/sbin/sendmail
postmaster_address = postmaster@mydomain.com # без этого параметра выдавал ошибку
Проверяем.
Чтобы создался каталог пользователя ( общий почтовый каталог, пользователя для каталога мы уже создали, см. http://bloknot.pp.ua/dovecot-configuration ) нужно чтобы в почтовый ящик пользователя пришло письмо.

 

 

 
 

Дополнение по FreeBSD и postfix 2.10>

Начиная с версии postfix 2.10 появился параметр smtpd_relay_restrictions= который надо добавить пустым для обеспечения совместимости с конфигом предыдущей версии, иначе при попытке отправить почту с sasl авторизацией не из mynetwork будет режектить.

 

Для FreeBSD в конфигах нужно проверить и изменить стандартные пути с /etc на /usr/local/etc и к файлам сертификатов.

Тут http://dovecot.org/doc/ лежит скрипт создания ssl сертификатов mkcert.sh и конфиг dovecot-openssl.conf, который удобно использовать для генерации сертификатов, кстати его же я использовал и для сертификатов postfix.

 

Отправить комментарий

CAPTCHA
Чтобы убедиться в том что Вы не робот, ответьте, пожалуйста, на вопрос
Fill in the blank