Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Нужны пояснения про nginx smtp proxy или "умный" MTA
> 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
"приниматель".
|