The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"dovetot-sieve+postfix+mysql"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"dovetot-sieve+postfix+mysql"  
Сообщение от axel101 (ok) on 22-Янв-09, 16:24 
В общем стоит задача:
Есть база mysql (сформированная postfixadmin), если пользователь есть в базе, то доставлять почту в его ящик, если нету, то доставлять в какой-либо общий ящик.
Попробовал решить с помощью sieve, но возник затык: dovecot lda сначала проверяет почту с помощью sieve скриптов, а потом только смотрит на mysql ящики, можно ли сделать наоборот, либо сделать проверку существования mysql пользователей в самом sieve скрипте?

Если кто-то знает альтернативное решение поставленной задачи, то буду рад его увидеть

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "dovetot-sieve+postfix+mysql"  
Сообщение от PavelR (??) on 22-Янв-09, 20:21 
>[оверквотинг удален]
>Есть база mysql (сформированная postfixadmin), если пользователь есть в базе, то доставлять
>почту в его ящик, если нету, то доставлять в какой-либо общий
>ящик.
>Попробовал решить с помощью sieve, но возник затык: dovecot lda сначала проверяет
>почту с помощью sieve скриптов, а потом только смотрит на mysql
>ящики, можно ли сделать наоборот, либо сделать проверку существования mysql пользователей
>в самом sieve скрипте?
>
>Если кто-то знает альтернативное решение поставленной задачи, то буду рад его увидеть
>

переписать SQL-запрос, чтобы он всегда возвращал нужное значение - либо пользователя либо имя общего ящика.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "dovetot-sieve+postfix+mysql"  
Сообщение от axel101 (ok) on 23-Янв-09, 12:26 
>переписать SQL-запрос, чтобы он всегда возвращал нужное значение - либо пользователя либо
>имя общего ящика.

Хм, запрос для dovecot переписал:


SELECT username AS user, maildir FROM mailbox WHERE username = '%u' AND active = '1'
UNION
SELECT username AS user, maildir FROM mailbox WHERE username = 'mail@domain.ru' AND active = '1' LIMIT 1

Запрос может не самый лучший, но отрабатывает нормально. Пытаюсь отправить почту на test@domain.ru В этом случае создаётся ящик test@domain.ru и почта направляется на него, вместо того чтобы доставить на mail@domain.ru. вот лог:

Jan 23 12:19:52 2413 dovecot: auth(default): master in: USER    1       test@domain.ru   service=deliver
Jan 23 12:19:52 2413 dovecot: auth-worker(default): sql(test@domain.ru): SELECT username AS user, maildir, 1150 AS uid, 12 AS gid FROM mailbox WHERE username = 'test@domain.ru' AND active = '1' UNION SELECT username AS user, maildir, 1150 AS uid, 12 AS gid FROM mailbox WHERE username = 'mail@domain.ru' AND active = '1' LIMIT 1
Jan 23 12:19:52 2413 dovecot: auth-worker(default): auth(test@domain.ru): username changed test@domain.ru -> mail@domain.ru
Jan 23 12:19:52 2413 dovecot: auth(default): master out: USER   1       mail@domain.ru   maildir=mail@domain.ru/   uid=1150        gid=12
Jan 23 12:19:52 2413 deliver(test@domain.ru): auth input: maildir=mail@domain.ru/
Jan 23 12:19:52 2413 deliver(test@domain.ru): auth input: uid=1150
Jan 23 12:19:52 2413 deliver(test@domain.ru): auth input: gid=12
Jan 23 12:19:52 2413 deliver(test@domain.ru): maildir: data=/var/vmail/test@domain.ru
Jan 23 12:19:52 2413 deliver(test@domain.ru): maildir++: root=/var/vmail/test@domain.ru, index=, control=, inbox=/var/vmail/test@domain.ru
Jan 23 12:19:53 2413 deliver(test@domain.ru): msgid=<5b3f3f050901230119x783441b9o811374275407c515@mail.gmail.com>: saved mail to INBOX
Jan 23 12:19:53 2413 postfix/pipe[17736]: 8EC8C792D57: to=<test@domain.ru>, relay=dovecot, delay=0.94, delays=0.6/0.01/0/0.34, dsn=2.0.0, status=sent (delivered via dovecot service)
Jan 23 12:19:53 2413 postfix/qmgr[4079]: 8EC8C792D57: removed


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "dovetot-sieve+postfix+mysql"  
Сообщение от axel101 (ok) on 23-Янв-09, 14:19 
Изменил запрос virtual_mailbox для postfix, в логах пишет что нашёл мой нужный почтовый ящик, а ${recipient} всё равно остаётся старым, и в dovecot delivery передаётся старый приёмник, как мне изменить recipient на новый?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "dovetot-sieve+postfix+mysql"  
Сообщение от AlekseyC (ok) on 23-Янв-09, 18:58 
>Изменил запрос virtual_mailbox для postfix, в логах пишет что нашёл мой нужный
>почтовый ящик, а ${recipient} всё равно остаётся старым, и в dovecot
>delivery передаётся старый приёмник, как мне изменить recipient на новый?

Создайте новый алиас через Postfix Admin:

To create a catch-all use an "*" as alias.
For domain to domain forwarding use "*@domain.tld" as to.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "dovetot-sieve+postfix+mysql"  
Сообщение от axel101 (ok) on 24-Янв-09, 13:31 
>To create a catch-all use an "*" as alias.
>For domain to domain forwarding use "*@domain.tld" as to.

Да, я так и сделал, просто я сразу так не сделал потому что думал что алиасы будут вообще всю почту переправлять, не обращая внимание на созданные ящики, спасибо, всё работает

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2023 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру