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