В начало → Создание виртуальной почтовой системы → 10. Настройка MySQL авторизации и виртуальных доменов |
Дальше мы перенастроим нашу авторизацию, на использование mailsql базы в courier-imap и postfix. Во всех следующих примерах, замените $paasword паролем, который вы задали пользователю mailsql для mysql.
Листинг 10.1:
# emerge /usr/portage/sys-libs/pam_mysql/pam_mysql-$currentversion.ebuild
(этот пакет здесь задан маской, которую вы должны заменить на текущую
версию пакета. версию пакета вы можете посмотреть в portage )
# nano -w /etc/pam.d/imap
(закомментируйте существующие строки настройки авторизации, и добавьте
указанные ниже)
#auth required pam_nologin.so
#auth required pam_stack.so service=system-auth
#account required pam_stack.so service=system-auth
#session required pam_stack.so service=system-auth
auth optional pam_mysql.so host=localhost db=mailsql user=mailsql \
passwd=$password table=users usercolumn=email passwdcolumn=clear crypt=0
account required pam_mysql.so host=localhost db=mailsql user=mailsql \
passwd=$password table=users usercolumn=email passwdcolumn=clear crypt=0
# nano -w /etc/pam.d/pop3
# nano -w /etc/pam.d/smtp
(сделайте такие же изменения в pop3 и smtp файлах)
Далее нам нужно поправить конфигурацию авторизации courier.
Листинг 10.2:
# nano -w /etc/courier-imap/authdaemonrc
authmodulelist="authmysql authpam"
# nano -w /etc/courier-imap/authdaemond.conf
AUTHDAEMOND="authdaemond.mysql"
# nano -w /etc/courier-imap/authmysqlrc
MYSQL_SERVER localhost
MYSQL_USERNAME mailsql
MYSQL_PASSWORD $password
MYSQL_DATABASE mailsql
MYSQL_USER_TABLE users
#MYSQL_CRYPT_PWFIELD crypt (эта строка должна быть закомментирована)
MYSQL_CLEAR_PWFIELD clear
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD homedir
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
# /etc/init.d/authdaemond restart
# /etc/init.d/saslauthd restart
Мы уже почти подошли к тому что вам обещал. Далее мы настроим необходимые конфиги postfix'a для связки с базой данных для всех необходимых необходимых транспортов.
Листинг 10.3: /etc/postfix/mysql-aliases.cf
# nano -w /etc/postfix/mysql-aliases.cf
# mysql-aliases.cf
user = mailsql
password = $password
dbname = mailsql
table = alias
select_field = destination
where_field = alias
hosts = unix:/var/run/mysqld/mysqld.sock
Листинг 10.4: /etc/postfix/mysql-relocated.cf
# nano -w /etc/postfix/mysql-relocated.cf
# mysql-relocated.cf
user = mailsql
password = $password
dbname = mailsql
table = relocated
select_field = destination
where_field = email
hosts = unix:/var/run/mysqld/mysqld.sock
Листинг 10.5: /etc/postfix/mysql-transport.cf (необязательно)
# nano -w /etc/postfix/mysql-transport.cf
# mysql-transport.cf
user = mailsql
password = $password
dbname = mailsql
table = transport
select_field = destination
where_field = domain
hosts = unix:/var/run/mysqld/mysqld.sock
Листинг 10.6: /etc/postfix/mysql-virtual-gid.cf (необязательно)
# nano -w /etc/postfix/mysql-virtual-gid.cf
#myql-virtual-gid.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = gid
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
Листинг 10.7: /etc/postfix/mysql-virtual-maps.cf
#nano -w /etc/postfix/mysql-virtual-maps.cf
#myql-virtual-maps.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = maildir
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
Листинг 10.8: /etc/postfix/mysql-virtual-uid.cf (необязательно)
# nano -w /etc/postfix/mysql-virtual-uid.cf
# mysql-virtual-uid.cf
user = mailsql
password = $password
dbname = mailsql
table = users
select_field = uid
where_field = email
additional_conditions = and postfix = 'y'
hosts = unix:/var/run/mysqld/mysqld.sock
Листинг 10.9: /etc/postfix/mysql-virtual.cf
# nano -w /etc/postfix/mysql-virtual.cf
# mysql-virtual.cf
user = mailsql
password = $password
dbname = mailsql
table = virtual
select_field = destination
where_field = email
hosts = unix:/var/run/mysqld/mysqld.sock
И последнее, правим /etc/postfix/main.cf еще один раз.
Листинг 10.10: /etc/postfix/main.cf
# nano -w /etc/postfix/main.cf
alias_maps = mysql:/etc/postfix/mysql-aliases.cf
relocated_maps = mysql:/etc/postfix/mysql-relocated.cf
local_transport = local
local_recipient_maps = $alias_maps $virtual_mailbox_maps unix:passwd.byname
virtual_transport = virtual
virtual_mailbox_domains =
virt-bar.com,
$other-virtual-domain.com
virtual_minimum_uid = 1000
virtual_gid_maps = static:$vmail-gid
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf
virtual_uid_maps = static:$vmail-uid
virtual_mailbox_base = /
#virtual_mailbox_limit =
Здесь видно чем значительно отличается postfix 2.0.x от 1.1.x. Сильнее всего заметно отсутствие необходимости в таблицах транспорта, virtual-gid и virtual-uid, хотя эти таблицы и вкладываются, чтобы вы могли их использовать при необходимости.
Примечание: Рекомендуем прочесть VIRTUAL_README идущий с postfix, для большего количества информации.
Листинг 10.11:
# postfix reload
Теперь, если все прошло хорошо, вы должны иметь работающий почтовый сервер. Пользователи должны быть способны авторизоватся в sql базе, использовать свой полный почтовый адрес для pop3, imap, и smtp. Настоятельно рекомендую проверить , что всё это действительно работает. Если вы столкнулись с проблемами, проверьте раздел troubleshooting в конце документа.
В начало → Создание виртуальной почтовой системы → 10. Настройка MySQL авторизации и виртуальных доменов |