[Megoldva] Postfixadmin, dovecot, quota

Fórumok

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

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

+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}

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.

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

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

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

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

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

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.

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 *

subs
--
Imperare sibi maximum imperium est.