FreeBSD - статьи




Настройка mysql - часть 3


примеры insert'ов демонстрируют систему работы скрипта, который обрабатывает эту таблицу. первое правило:

поле type 'delivered-to'. этим правилом будут ловится все письма, у которых в служебной строке delivered-to встретился адрес, попавший под маску в регулярных выражениях, соответствующую полю mask (персонально для mysql не забываем экранировать знак back slash '\' им же самим, а для перловых регэкспов служебные символы). в поле forward_addr хранится адрес, на который нужно копировать письмо, если оно подошло под условия. поле what установлено в буковку 'i', что значит (i)nclude, т.е. включающее правило. таким образом в первом примере будет ловится вся почта для домена raven.elk.ru и копироваться на адрес me@raven.elk.ru.

второе правило - это исключение из первого примера адреса test1@raven.elk.ru. т.о. в комплексе этих двух правил на адрес me@raven.elk.ru будет копироваться вся почта для домена raven.elk.ru, исключая адрес test1@raven.elk.ru.

create table forward( id int(10) unsigned not null auto_increment, type varchar(50) not null default 'delivered-to', mask varchar(255) not null default '.+', forward_addr varchar(255) not null default 'root', what char not null default 'i', comment text, primary key(id), key what(what), key type_mask(type, mask) );

insert into forward(type, mask, forward_addr, what, comment) values('delivered-to', '[a-z0-9\- _]+\\@raven\\.elk\\.ru', 'me@raven.elk.ru', 'i', 'forwarding all mail for raven.elk.ru');

insert into forward(type, mask, forward_addr, what, comment) values('delivered-to', 'test1\\@raven\\.elk\\.ru', 'me@raven.elk.ru', 'e', 'exclude forward test1 mail');

теперь осталось создать пользователей в mysql и выдать им соответствующие права на доступ к нашим таблицам. пользователь mailer - это наши демоны, в числе которых будет postfix, courier-imap и cyrus-sasl2 в лице pam-mysql :-) а пользователь mail_admin - это эникейщик в нашей конторе, которого можно допустить до базы через phpMyAdmin и заставить его самого делать почтовые эккаунты юзерам, а самим расслабляться и пить пиво ;)

grant select on mail.* to mailer@localhost identified by 'mailer_password';

grant select, insert, update on mail.* to mail_admin@localhost identified by 'mail_admin_password';





  • Содержание  Назад  Вперед