Dovecot i nie działająca funkcja "%d"
------------------------------ Witam, problem przedstawia się następująco, wirtualni użytkownicy poczty LMS na serwerze z linux PLD. MTA to Exim i on działa wyśmienicie, lecz mam problem z Dovecot podczas odbioru poczty. Mianowicie w pliku konfiguracyjnym nie jest brana pod uwagę funkcja %d (domena), bez niej nie można z czytać poczty dla danego usera z jego domeną.
wpis w dovecot.conf: mail_location = maildir:/home/mail/virtual/%d/%n
w logach dostaję: Nov 10 12:55:29 hosting dovecot: pop3(jacek): Error: user jacek: Initialization failed: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/mail/virtual//jacek Nov 10 12:55:29 hosting dovecot: pop3(jacek): Error: Invalid user settings. Refer to server log for more information
Jak widać funkcja %n działa bez problemu, dostaję usera o nazwie jacek lecz jego domeny nie. Proszę o pomoc, walczę już z tym 1 tydz. :(
Witam,
Napisałem sobie dwa zapytania na potrzeby raportu który chcę zrobić, nie wiem tylko jak na poziomie sql połączyć te zapytania aby wynik pojawiał się w momencie gdy customer.id jest wynikiem RÓWNOCZEŚNIE obydwu zapytań. Zapytanie ma wyświetlić wszystkich podłączonych klientów którzy mają równocześnie występujące: - zobowiązanie miesięczne na kwotę >= 4zł oraz - zobowiązania kwartalne, roczne na kwotę od 1zł do 4zł
SELECT customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at FROM customers LEFT JOIN assignments ON customers.id = customerid LEFT JOIN tariffs ON assignments.tariffid = tariffs.id WHERE deleted = 0 AND (customers.status = 3) AND (assignments.invoice = 1) AND (assignments.dateto >= (select now()::abstime::int4) OR assignments.dateto = 0) AND (assignments.at != 1) AND (tariffs.value BETWEEN 1 AND 4) GROUP BY customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at;
SELECT customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at FROM customers LEFT JOIN assignments ON customers.id = customerid LEFT JOIN tariffs ON assignments.tariffid = tariffs.id WHERE deleted = 0 AND (customers.status = 3) AND (assignments.invoice = 1) AND (assignments.dateto >= (select now()::abstime::int4) OR assignments.dateto = 0) AND (assignments.at = 1) AND (tariffs.value >= 4) GROUP BY customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at;
Będę wdzięczny za pomoc.
-- Pozdrawiam Paweł Mendela to green | systemy
Tak, na szybkości.......
SELECT customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at FROM customers LEFT JOIN assignments ON customers.id = customerid LEFT JOIN tariffs ON assignments.tariffid = tariffs.id WHERE deleted = 0 AND (customers.status = 3) AND (assignments.invoice = 1) AND (assignments.dateto >= (select now()::abstime::int4) OR assignments.dateto = 0) AND ( (assignments.period=3 and tariffs.value BETWEEN 1 AND 4) and (assignments.period in (4,5) and tariffs.value >= 4 ) ) GROUP BY customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at;
Pozdrawiam Miłosz
2011/11/10 Paweł zappa@bass.pl
Witam,
Napisałem sobie dwa zapytania na potrzeby raportu który chcę zrobić, nie wiem tylko jak na poziomie sql połączyć te zapytania aby wynik pojawiał się w momencie gdy customer.id jest wynikiem RÓWNOCZEŚNIE obydwu zapytań. Zapytanie ma wyświetlić wszystkich podłączonych klientów którzy mają równocześnie występujące:
- zobowiązanie miesięczne na kwotę >= 4zł
oraz
- zobowiązania kwartalne, roczne na kwotę od 1zł do 4zł
SELECT customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at FROM customers LEFT JOIN assignments ON customers.id = customerid LEFT JOIN tariffs ON assignments.tariffid = tariffs.id WHERE deleted = 0 AND (customers.status = 3) AND (assignments.invoice = 1) AND (assignments.dateto >= (select now()::abstime::int4) OR assignments.dateto = 0) AND (assignments.at != 1) AND (tariffs.value BETWEEN 1 AND 4) GROUP BY customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at;
SELECT customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at FROM customers LEFT JOIN assignments ON customers.id = customerid LEFT JOIN tariffs ON assignments.tariffid = tariffs.id WHERE deleted = 0 AND (customers.status = 3) AND (assignments.invoice = 1) AND (assignments.dateto >= (select now()::abstime::int4) OR assignments.dateto = 0) AND (assignments.at = 1) AND (tariffs.value >= 4) GROUP BY customers.id, customers.lastname, customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at;
Będę wdzięczny za pomoc.
-- Pozdrawiam Paweł Mendela to green | systemy ______________________________**_________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/**mailman/listinfo/lmshttp://lists.lms.org.pl/mailman/listinfo/lms
W dniu 2011-11-10 17:16, milek pisze:
Tak, na szybkości.......
SELECT customers.id http://customers.id, customers.lastname, customers.name http://customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at http://assignments.at FROM customers LEFT JOIN assignments ON customers.id http://customers.id = customerid LEFT JOIN tariffs ON assignments.tariffid = tariffs.id http://tariffs.id WHERE deleted = 0 AND (customers.status = 3) AND (assignments.invoice = 1) AND (assignments.dateto >= (select now()::abstime::int4) OR assignments.dateto = 0) AND ( (assignments.period=3 and tariffs.value BETWEEN 1 AND 4) and (assignments.period in (4,5) and tariffs.value >= 4 ) ) GROUP BY customers.id http://customers.id, customers.lastname, customers.name http://customers.name, customers.address, customers.city, customers.zip, tariffs.value, tariffs.period, assignments.dateto, assignments.at http://assignments.at;
Ta konstrukcja nie działa prawidłowo niestety (zwraca 0 wierszy).
Pytanie nie do konca pasuje do tematyki listy ale niech będzie...
Jesteś pewien, że użytkownik loguje się jako "user@domena"
Co pokazuje zmienna "%0.d" ?
pozdrawiam, Jacek
2011/11/10 Arek G sivy79pl@gmail.com:
Witam, problem przedstawia się następująco, wirtualni użytkownicy poczty LMS na serwerze z linux PLD. MTA to Exim i on działa wyśmienicie, lecz mam problem z Dovecot podczas odbioru poczty. Mianowicie w pliku konfiguracyjnym nie jest brana pod uwagę funkcja %d (domena), bez niej nie można z czytać poczty dla danego usera z jego domeną.
wpis w dovecot.conf: mail_location = maildir:/home/mail/virtual/%d/%n
w logach dostaję: Nov 10 12:55:29 hosting dovecot: pop3(jacek): Error: user jacek: Initialization failed: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/mail/virtual//jacek Nov 10 12:55:29 hosting dovecot: pop3(jacek): Error: Invalid user settings. Refer to server log for more information
Jak widać funkcja %n działa bez problemu, dostaję usera o nazwie jacek lecz jego domeny nie. Proszę o pomoc, walczę już z tym 1 tydz. :(
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
Już rozwiązałem problem, po prostu pobieram domenę z bazy po nazwie usera
Dzięki za zainteresowanie
W dniu 10 listopada 2011 17:36 użytkownik Jacek Kalamarz < jkalamarz@gmail.com> napisał:
Pytanie nie do konca pasuje do tematyki listy ale niech będzie...
Jesteś pewien, że użytkownik loguje się jako "user@domena"
Co pokazuje zmienna "%0.d" ?
pozdrawiam, Jacek
2011/11/10 Arek G sivy79pl@gmail.com:
Witam, problem przedstawia się następująco, wirtualni użytkownicy poczty
LMS
na serwerze z linux PLD. MTA to Exim i on działa wyśmienicie, lecz mam problem z Dovecot podczas odbioru poczty. Mianowicie w pliku konfiguracyjnym nie jest brana pod uwagę funkcja %d (domena), bez niej nie można z czytać poczty dla danego usera z jego
domeną.
wpis w dovecot.conf: mail_location = maildir:/home/mail/virtual/%d/%n
w logach dostaję: Nov 10 12:55:29 hosting dovecot: pop3(jacek): Error: user jacek: Initialization failed: mail_location not set and autodetection failed:
storage autodetection failed with home=/home/mail/virtual//jacek Nov 10 12:55:29 hosting dovecot: pop3(jacek): Error: Invalid user settings. Refer to server log for more information
Jak widać funkcja %n działa bez problemu, dostaję usera o nazwie jacek
lecz
jego domeny nie. Proszę o pomoc, walczę już z tym 1 tydz. :(
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
uczestnicy (5)
-
Arek G
-
Jacek Kalamarz
-
milek
-
Paweł
-
Paweł Mendela