Re: Нужны пояснения про nginx smtp proxy или "умный" MTA

umask umask at yandex.ru
Tue Jul 10 08:58:18 MSD 2007


> u> Фактически соответствие пользователь\imap-сервер есть в базе

> u> сервера HTTP-аутентификации.

> Насколько я понимаю HTTP-сервер обращается к какой то реляционной базе

> данных для получения информации о пользователях?



Да, верно.

БД сейчас mysql, но может быть и любая другая. БД ещё не выбрана.

HTTP-сервер авторизации обращается к вот таким таблицам:



TABLE `server` (

  `server_id` int(11) default NULL,

  `server_ip` varchar(16) default NULL,

  `server_imap_port` int(11) default NULL,

  `server_pop_port` int(11) default NULL

);



TABLE `user` (

  `username` varchar(64) default NULL,

  `password` varchar(64) default NULL,

  `server_id` int(11) default NULL,

  KEY `server_id` (`server_id`)

);



Т.е. по логину и паролю из БД выбирается server_ip IMAP/POP-backend'а и исходя из протокола пользователя (IMAP/POP) server_imap_port или server_pop_port (это в случае проксирования nginx'ом IMAP/POP-клиентов).



Судя по всему, именно из данных этой таблицы будет строиться система транспортов в postfix.







> Если информация о пользователях хранится в PostgreeSQL то это будет

> выглядеть примерно так:

> в main.cf

> transport_maps = proxy:pgsql:$config_directory/maps/transport.cf

> В transport.cf

> user = someone

> password = some_password

> dbname = some_database

> query = SELECT CONCAT('lmtp:inet:', backend) FROM users WHERE

>           user = '%u' AND domain = '%d';

> где backend это сервер на котором находится ящик данного пользователя.

>           



А как в результат запроса к БД добавить tcp-порт в который postfix будет передавать письмо для локальной доставки (и это вообще возможно)?

Понятно, что postfix не отдаст письмо для доставки в IMAP, для этих целей вообще возможен свой postfix на backend'е или любой другой smtp/lmtp "приниматель". 





More information about the nginx-ru mailing list