в этом пункте я намеренно пропускаю описание установки и конфигурирования mysql как sql сервера и расскажу только то, что нужно непосредственно для работы нашей системы. делаю это я для того, чтобы на самом начале отсеять людей ничего не понимающих из того, что мы собираемся делать и кроме того, я уже давно потерял интерес к mysql как самостоятельному sql серверу.
итак, создаём базу данных для наших программ:
create database mail; use mail;
создаём таблицы с необходимыми индексами. первая таблица transport - описания транспортов для наших виртуальных доменов. сразу добавляем туда наш единственный домен - raven.elk.ru с транспортом virtual.
create table transport( domain varchar(255) not null default '', transport varchar(255) not null default '', comment text, primary key(domain) );
insert into transport(domain, transport) values('raven.elk.ru','virtual:');
следующая таблица - алиасы адресов. смысл её в том, что если postfix увидит письмо на адрес указанный в поле alias, то это письмо будет переправлено на адрес в соответствующем поле rcpt. адреса в полях могут принадлежать одинаковым доменам, разным доменам, а так же там могут быть адреса, которые не принадлежат нашим доменам ;) просто если, вдруг, письма с такими адресами получателя будут проходить через наш MTA (например от наших пользователей), то postfix изменит их адреса получателя и письма уйдут туда, куда мы их отправим.
create table aliases( alias varchar(255) not null default '', rcpt varchar(255) not null default '', comment text, primary key(alias) );
insert into aliases(alias, rcpt) values('root@raven.elk.ru', 'iam@raven.elk.ru');
insert into aliases(alias, rcpt) values('abuse@raven.elk.ru', 'iam@raven.elk.ru');
insert into aliases(alias, rcpt) values('mailer-daemon@raven.elk.ru', 'iam@raven.elk.ru');
insert into aliases(alias, rcpt) values('postmaster@raven.elk.ru', 'iam@raven.elk.ru');
insert into aliases(alias, rcpt) values('hostmaster@raven.elk.ru', 'iam@raven.elk.ru');
insert into aliases(alias, rcpt) values('iam@raven.elk.ru', 'me@raven.elk.ru');