4 Краткий отчет о практике (приложение 1). Строки с таким выделением
Скачать 0.62 Mb.
|
Настройка PostfixСейчас нам необходимо указать Postfix, где ему искать информацию в базе данных. Для этого создадим шесть текстовых файлов. Как вы можете заметить, я указываю Postfix соединяться с MySQL через IP адрес 127.0.0.1 вместо localhost. Это связано с тем, что Postfix запущенный в chroot окружении не сможет иметь доступа к MySQL сокету, если будет пытаться использовать localhost для подключения. Проверим, что mysql «слушает» локальный IP адрес cat /etc/mysql/my.cnf | grep bind bind-address = 127.0.0.1 Если пришлось поменять /etc/mysql/my.cnf, то перезапустим mysql sudo service mysql restart и проверяем, что он действительно слушает этот адрес: sudo netstat -tap | grep mysql tcp 0 0 localhost:mysql *:* LISTEN 5908/mysqld (здесь 5908- это номер процесса, у Вас будет другой). Теперь создадим файлы для того, чтобы postfix знал, где что искать в нашей базе данных: sudo nano /etc/postfix/mysql-virtual_domains.cf user = mail_admin password = dbname = mail query = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1 sudo nano /etc/postfix/mysql-virtual_forwardings.cf user = mail_admin password = dbname = mail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1 sudo nano /etc/postfix/mysql-virtual_mailboxes.cf user = mail_admin password = dbname = mail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' hosts = 127.0.0.1 sudo nano /etc/postfix/mysql-virtual_email2email.cf user = mail_admin password = dbname = mail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1 sudo nano /etc/postfix/mysql-virtual_transports.cf user = mail_admin password = dbname = mail query = SELECT transport FROM transport WHERE domain='%s' hosts = 127.0.0.1 Т.к. в этих файлах у нас лежит пароль для доступа к базе данных, меняем права доступа к ним (разрешаем чтение только группе postfix, в которую входит наш почтовый сервер postfix): sudo chmod o= /etc/postfix/mysql-virtual_*.cf sudo chgrp postfix /etc/postfix/mysql-virtual_*.cf Проверяем права доступа к этим файлам: ls -al /etc/postfix/mysql-virtual*.cf -rw-r—– 1 root postfix 134 2010-11-26 11:24 /etc/postfix/mysql-virtual_domains.cf -rw-r—– 1 root postfix 119 2010-11-26 11:25 /etc/postfix/mysql-virtual_email2email.cf -rw-r—– 1 root postfix 132 2010-11-26 11:24 /etc/postfix/mysql-virtual_forwardings.cf -rw-r—– 1 root postfix 188 2010-11-26 11:25 /etc/postfix/mysql-virtual_mailboxes.cf -rw-r—– 1 root postfix 128 2010-11-26 11:25 /etc/postfix/mysql-virtual_transports.cf Создаем нового пользователя и группу с названием vmail с домашней директорией /home/vmail , где будут находится почтовые ящики: sudo groupadd -g 5000 vmail \\ sudo useradd -g vmail -u 5000 vmail -d /home/vmail -m Предварительная настройка postfix (нам еще придется ее менять чуть позже). Не забудьте поменять oban.aaa.ru на Ваше реальное полное имя сервера, а то postfix не будет работать! sudo postconf -e 'myhostname = oban.aaa.ru' sudo postconf -e 'mydestination = oban.aaa.ru, localhost, localhost.localdomain' sudo postconf -e 'mynetworks = 127.0.0.0/8' sudo postconf -e 'virtual_alias_domains =' sudo postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf' sudo postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf' sudo postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf' sudo postconf -e 'virtual_mailbox_base = /home/vmail' sudo postconf -e 'virtual_uid_maps = static:5000' sudo postconf -e 'virtual_gid_maps = static:5000' sudo postconf -e 'smtpd_sasl_auth_enable = yes' sudo postconf -e 'broken_sasl_auth_clients = yes' sudo postconf -e 'smtpd_sasl_authenticated_header = yes' sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination' sudo postconf -e 'smtpd_use_tls = yes' sudo postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtp.crt' sudo postconf -e 'smtpd_tls_key_file = /etc/postfix/smtp.key' sudo postconf -e 'transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf' sudo postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks' |