Sziasztok,
belőttem egy postfixadmin, mysql, quota dolgot. Minden megy rendesen, csak a user query-t nem tudom úgy belőni, hogy minden működjön.
Az egyik esetben nem tölti fel sql-be az aktuális mailbox méretet, így a postfixadmin nem mutatja, de a webmail, illetve a dovecot figyeli a quotát, és ha eléri, tiltja a levél lerakását a mailbox-ba. Ebben az esetben a query-ben dirsize-t néz, és nem sql-ből kéri le a méretet.
A másik eset, hogy mysql-be rendesen bekerül a mailbox mérete, ekkor viszont a dovecot nem foglalkozik a quotával. Vagyis rossz értéket ad vissza a query.
Most ez a user_query:
user_query = SELECT '/var/mail/vmail/%d/%u' as home, 'maildir:/var/mail/vmail/%d/%u' as mail, 5000 AS uid, 5000 AS gid, concat('dict:storage='
, cast(round(quota / 1024) as char), '::proxy::quota') AS quota FROM mailbox WHERE username = '%u' AND active = '1'
Tudnátok segíteni, hogy nálatok hogy néz ki ez a query? Köszönöm előre is.
Balázs
- 2529 megtekintés
Hozzászólások
Eleg zavaros a leveled, at tudnad fogalmazni?
Pl. mi az, h bekerul a mysql-be mailbox merete, de a dovecot nem foglalkozik vele? AKkor mi rakja bele?
Mindenesetre arra figyelj, hogy dovecot 1.2+ eseten a quota2 tablat hasznalja a postfixadmin.
tompos
- A hozzászóláshoz be kell jelentkezni
Az üzenetet én se teljesen értem, úgyhogy válaszolok ide. Régebben hülyítettem olyannal magamat, hogy: mértékegységek. Tehát ha egyik mondjuk bájtot szeretne, másik meg kbájtot, akkor is akadhatnak problémák :)
- A hozzászóláshoz be kell jelentkezni
Bocs, tényleg zavaros az egész. A quota2 táblát használom, és megy is minden rendesen, a postfixadmin felületen látszódik a mailbox mérete, de az lda (dovecot) lerakja akkor is a levelet, ha a mailbox mérete elérte a quotát. Így érthetőbben fogalmaztam?
köszi
Balázs
- A hozzászóláshoz be kell jelentkezni
Megadtad az lda-nak, hogy hasznalja a quota plugin-t?
tompos
- A hozzászóláshoz be kell jelentkezni
+1
egészen pontosan a postfix "virtual" local delivery agentje helyett pl. maildrop-ot kell használni.
pl:
etc/postfix/main.cf:
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
etc/postfix/master.cf:
maildrop unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop -w 90 -d ${recipient}
- A hozzászóláshoz be kell jelentkezni
"és nem sql-ből kéri le a méretet."
Vagy Dovecot LDA, SQL quota plugin-el.
- A hozzászóláshoz be kell jelentkezni
A maildrop honnan fog tudni itt a quota-rol?
Ahogy lentebb is szerepel, dovecot lda kell, de en ugy ertelmeztem, hogy eredetileg is az van neki.
Vagy a maildropnak is meg lehet adni, h turja az sql-t?
tompos
- A hozzászóláshoz be kell jelentkezni
Én is úgy értem, hogy adott a quota SQL-ben.
- A hozzászóláshoz be kell jelentkezni
pl. a maildirben is tárolva van (fájlban) a quota....
szerk: a dovecot lda modulja is akkor túrja csak az sql-t, ha dictionary quota backendet állítasz be neki.
Ha quota backend-nek maildir-van, akkor a maildirsize nevű fájl(ok) ban tárolja a quota adatokat, és ez a megoldás kompatibilis a legtöbb többi imap szerverrel illetve lda-val.
- A hozzászóláshoz be kell jelentkezni
Hogy lesz kompatibilis a postfixadminnal?
t
- A hozzászóláshoz be kell jelentkezni
Alapból sehogy.
Létezik postfixhez egy VDA patch, amivel viszont megoldható (virtual_mailbox_limit_maps)
- A hozzászóláshoz be kell jelentkezni
Akkor jobb, ha megiscsak dovecot lda-t hasznal, nem?
tompos
- A hozzászóláshoz be kell jelentkezni
ja
- A hozzászóláshoz be kell jelentkezni
Szia,
nálam dovecot az lda, és a quota plugin be van rakva:
mail_plugins = sieve quota
Illetve a postfixban:
master.cf:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
main.cf:
virtual_transport = dovecot
Illetve a dictionary quota backend:
dovecot.conf:
dict {
quota = mysql:/etc/dovecot/dovecot-dict-quota.conf
}
plugin {
quota = dict:::proxy::quota
}
Szerintetek mi miatt nem megy mégsem?
Berakom a dovecot user query-t megint, hogy egyben legyen:
dovecot-sql.conf:
user_query = SELECT '/var/mail/vmail/%d/%u' as home, 'maildir:/var/mail/vmail/%d/%u' as mail, 5000 AS uid, 5000 AS gid, concat('dict:storage=', cast(round(quota / 1024) as char), '::proxy::quota') AS quota FROM mailbox WHERE username = '%u' AND active = '1'
Köszi:
Balázs
- A hozzászóláshoz be kell jelentkezni
A mail plugins melyik szekcioban van?
Mit mondanak a logok?
tompos
- A hozzászóláshoz be kell jelentkezni
A mail plugins a konfig végén van, gondolom a globális résznél.
A logokban semmi hiba nincs, simán lerakja az dovecot (lda) a levelet a mailbox-ba.
köszi
Balázs
- A hozzászóláshoz be kell jelentkezni
Gondolod?:)
tompos
- A hozzászóláshoz be kell jelentkezni
Biztos, hogy a dovecot teszi le?
Nálam a mailbox_transport = dovecot
nélkül postfix lesz a kézbesítő, hiába a virtual_transport.
Ha be van töltve a quota plugin, de nincs rendesen felkonfigolva, akkor ilyesmit kell látnod:
2011-05-23 08:46:59 IMAP(): Info: Module loaded: /usr/lib/dovecot/modules/imap/lib10_quota_plugin.so
2011-05-23 08:46:59 IMAP(): Info: Module loaded: /usr/lib/dovecot/modules/imap/lib11_imap_quota_plugin.so
2011-05-23 08:46:59 IMAP(): Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_autocreate_plugin.so
2011-05-23 08:46:59 IMAP(): Info: Module loaded: /usr/lib/dovecot/modules/imap/lib20_fts_plugin.so
2011-05-23 08:46:59 IMAP(): Info: Module loaded: /usr/lib/dovecot/modules/imap/lib21_fts_squat_plugin.so
2011-05-23 08:46:59 IMAP(): Info: Effective uid=5000, gid=5000, home=(none)
2011-05-23 08:46:59 IMAP(): Info: quota: No quota setting - plugin disabled
- A hozzászóláshoz be kell jelentkezni
Tuti a dovecot teszi le a levelet:
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): Loading modules from directory: /usr/lib/dovecot/modules/lda
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): Module loaded: /usr/lib/dovecot/modules/lda/lib10_quota_plugin.so
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): Module loaded: /usr/lib/dovecot/modules/lda/lib90_sieve_plugin.so
May 31 07:12:08 mailtemplate dovecot: auth-worker(default): mysql: Connected to /var/run/mysqld/mysqld.sock (postfix)
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): auth input: home=/var/mail/vmail/teszt.hu/tesztuser@teszt.hu
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): auth input: mail=maildir:/var/mail/vmail/teszt.hu/tesztuser@teszt.hu
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): auth input: uid=5000
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): auth input: gid=5000
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): auth input: quota=dict:storage=10000::proxy::quota
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): Quota root: name=storage=10000 backend=dict args=:proxy::quota
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): dict quota: user=tesztuser@teszt.hu, uri=proxy::quota, noenforcing=0
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): maildir: data=/var/mail/vmail/teszt.hu/tesztuser@teszt.hu
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): maildir++: root=/var/mail/vmail/teszt.hu/tesztuser@teszt.hu, index=, control=, inbox=/var/mail/vmail/teszt.hu/tesztuser@teszt.hu
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): dict quota: user=tesztuser@teszt.hu, uri=proxy::quota, noenforcing=0
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): sieve: using sieve path for user's script: /var/mail/vmail/teszt.hu/tesztuser@teszt.hu/sieve/.dovecot.sieve
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): sieve: opening script /var/mail/vmail/teszt.hu/tesztuser@teszt.hu/sieve/.dovecot.sieve
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): sieve: executing compiled script /var/mail/vmail/teszt.hu/tesztuser@teszt.hu/sieve/.dovecot.sieve
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): Namespace : Using permissions from /var/mail/vmail/teszt.hu/tesztuser@teszt.hu: mode=0700 gid=-1
May 31 07:12:08 mailtemplate dovecot: deliver(tesztuser@teszt.hu): sieve: msgid=<20110531051208.A75C6F2C269@mailtemplate.teszt.hu>: stored mail into mailbox 'INBOX'
May 31 07:12:08 mailtemplate dovecot: dict: mysql: Connected to localhost (postfix)
May 31 07:12:09 mailtemplate postfix/pipe[7189]: A75C6F2C269: to=, relay=dovecot, delay=0.44, delays=0.26/0.01/0/0.17, dsn=2.0.0, status=sent (delivered via dovecot service)
May 31 07:12:09 mailtemplate postfix/qmgr[2178]: A75C6F2C269: removed
- A hozzászóláshoz be kell jelentkezni
"userdb_quota=maildir:storage=10000"
Tipp: Ez olyan dirsize-es kvótának tűnik, nincs véletlenül egy bent maradt sor valahol a plugin szekcióban?
"quota = maildir:10000"
- A hozzászóláshoz be kell jelentkezni
Szia,
nincs sehol ilyen bejegyzés, csak ez:
quota = dict:::proxy::quota
Balázs
- A hozzászóláshoz be kell jelentkezni
Senki nem használ ilyet? Aki mégis, át tudná dobni a saját lekérdezését, hogy meg tudjam nézni, hogy nálam mi lehet a gond?
köszi
Balázs
- A hozzászóláshoz be kell jelentkezni
Ujra megkerdezem, egeszen biztos, h megadtad az lda-nak is a quota-t?
tompos
- A hozzászóláshoz be kell jelentkezni
Szia,
az előbb nem értettem, hogy mi biztos. Szóval biztos:
protocol lda {
postmaster_address = postmaster@mailtemplate.teszt.hu
hostname = mailtemplate.teszt.hu
mail_plugins = sieve quota
quota_full_tempfail = yes
rejection_reason = Your message to <%t> was automatically rejected:%n%r
}
Illetve, ha ez a user query, vagyis dirsize-t használ, akkor megy a quota:
user_query = SELECT '/var/mail/vmail/%d/%u' as home, 'maildir:/var/mail/vmail/%d/%u' as mail, 5000 AS uid, 5000 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
köszi
Balázs
- A hozzászóláshoz be kell jelentkezni
Csak ebben az esetben a quota2 táblába nem kerülnek fel a mailbox-ok méretei, és így a postfixadmin nem mutatja.
- A hozzászóláshoz be kell jelentkezni
Lassan erteni is lehet, amit irtal.
Nalam:
dict {
quota = mysql:/etc/dovecot/dict-sql.conf
}
Ez pedig:
map {
pattern = priv/quota/storage
table = quota
username_field = username
value_field = bytes
}
map {
pattern = priv/quota/messages
table = quota
username_field = username
value_field = messages
}
Mondjuk itt a quota tabla szerepel vmiert, de ez a lenyegtelenebb resze.
Valamint meg ez van a dovecot.conf-ban:
quota = dict:User quota::proxy::quota
quota_rule = *:storage=10GB
User query:
user_query = SELECT CONCAT (maildir, 'Maildir/'), 101 AS uid, 102 AS gid, concat('*:storage=', quota, 'B') AS quota_rule FROM mailbox WHERE username = '%u'
Mas talan nincs is.
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Ahogy látom megy. Legközelebb megpróbálom jobban összeszedni magam a kérdés feltételénél.
Balázs
- A hozzászóláshoz be kell jelentkezni
Vegulis mi volt a megoldas?;)
tompos
- A hozzászóláshoz be kell jelentkezni
dovecot.conf-ba:
quota = dict:User quota::proxy::quota
dovecot-sql.conf-ba:
user_query = SELECT CONCAT (maildir, 'Maildir/'), 101 AS uid, 102 AS gid, concat('*:storage=', quota, 'B') AS quota_rule FROM mailbox WHERE username = '%u'
A többi jó volt nálam.
köszi még1x
- A hozzászóláshoz be kell jelentkezni
küldj egy mail a dnlcokukacfreemailponthu címre és küldök conf-fájlokat ami alapján megvalósíthatod,javíthatod vagy kiegészítheted az általad készítetteket.
Debian Lenny, Ubuntu *
- A hozzászóláshoz be kell jelentkezni
Köszi, a fenti megoldás megy.
Balázs
- A hozzászóláshoz be kell jelentkezni
subs
--
Imperare sibi maximum imperium est.
- A hozzászóláshoz be kell jelentkezni