Postfix + Dovecot + Quota + RoundCube ...

Fórumok

Sziasztok!

Az alábbi komponensek már adottak (azaz működnek):

OS: Debian Lenny amd64
SMTP: Postfix
Maia Mailguard 1.0.3
Postfixadmin-2.3.1
RoundCube 0.4 (beta)
Dovecot 1.2 (lenny backports) - pop3 és imap quota, quotadict
Postfix virtual_transport = dovecot (mert így rendesen kezeli a kvótabejegyzéseket a dovecot).

A kérdésem a kvótára vonatkozna. Minden tökéletesen működik, a RoundCube, a Mozilla Thunderbird pontosan látja a kvótát, ha bejön egy levél, a dovecot transport miatt a kvótabejegyzés szépen frissül.

Megoldást arra keresek, hogy ha valaki levelet küld egy már betelt postafióknak, hogyan kaphatna értesítést a kézbesítés sikertelenségéről, feltüntetve a kvóta túllépését, mint okot.

A Postfixban a virtual_maildir_limit_message nem használható, mert az csak a virtual_transport = virtual esetében érvényes, de akkor viszont a kvótabejegyzések nem lesznek jók (a Beérkezett üzenetek mérete nem szerepel a kvótában, az meg elég nagy baj), ezért a dovecot LDA az IMAP kézbesítő.

Van esetleg valakinek tippje, merre érdemes keresgélni?

A Postfix/Dovecot/Roundcube trióhoz ragaszkodnék, ha lehet :-).

Köszönöm!

Attila

Hozzászólások

0.4-es roundcube-ot hanyagold, kicsit bugos még a beta :>

Ubuntu 10.04, Thinkpad x60s

Ah, ez pont nem az az oldal. A Dovecot-ban van quota warning, szkriptelhető, de ez a postafiók tulajdonosának küld levelet. Én azt szeretném, hogy ha én küldök levelet egy már betelt postafiókra, akkor én kapjak vissza üzenetet, hogy a kvóta túllépése miatt az üzenetem nem kézbesíthető a címzett részére.

Nem, a Postfix küld vissza egy levelet automatikusan, de abban nem a kvótára hivatkozik, hanem arra, hogy a levél olvasás nélkül törölve lett, ami persze igaz, de nem a címzett, hanem a levélszerver törölte.

De akkor a Sieve megoldja ezt a kérdésemet? Vele még nem foglalkoztam, de akkor utána nézek.

lehet rosszul emlékszem rá, de tudtommal a debianos postfix nem kezeli a quotát...

--
by Mikul@s

Nos, VDA patch-es a Postfixem, de ez most nem lényeges. A VDA akkor kell (szerintem), ha a Postfix-nek kell kezelnie a Maildir++ specifikációt (és ebben a kvótát is). Ehhez a Postfix main.cf ben kell lennie egy virtual_transport = virtual sornak.

Nálam nem így van, mert akkor a Bejövő üzenetek tartalmának mérete nem adódik hozzá az össz mérethez (nem értem egyébként, hogy miért, egyszerűen ez a tapasztalat).

A main.cf ben a virtual_transport=dovecot szerepel, így a quota tökéletesen működik, mert a Dovecot tudja, mikor jön a Maildir-be levél (hiszen ő teszi bele, nem a Postfix), viszont ha betelt a Quota, valahogyan vissza kellene értesíteni a levél feladóját az elutasítás okáról (erre talán jó lenne a Dovecot Sieve pluginja? nem tudom, fentebb ajánlották).

Nálam ez van:

virtual_overquota_bonce = no

Ugyanis, ha

virtual_transport = dovecot

akkor NEM a Postfix, hanem a Dovecot LDA állítja össze a figyelmeztető levelet. Ebben az esetben pedig testre szabható az üzenet, a dovecot.conf ban, a protocol lda szekcióban:
rejection_subject =
rejection_reason =

Attila

Na most ölöm meg a céges Exchange 2007 szervert...
Arrrggghhhhh...

A Dovecot LDA küld vissza levelet. Az alábbi tartalommal:

Your message to valaki_at_valahol_hu was automatically rejected:
Quota exceeded (mailbox for user is full).

Reporting-UA: mail01.valahol.hu; Dovecot Mail Delivery Agent
Final-Recipient: rfc822; valaki_at_valahol_hu
Original-Message-ID: <92bcf944cebd20c91287ab8a5bf8fb45@localhost>
Disposition: automatic-action/MDN-sent-automatically; deleted

Na EZT fordítja le a 2007 Exchange magyarra így:

Az üzenet olvasás nélkül törölve ekkor: 2010. július 29. 11:50:31 (GMT+01:00) Belgrád, Budapest, Ljubljana, Pozsony, Prága.

A Roundcube levelezőn viszont láttam az IGAZI, EREDETI, a Dovecot LDA által visszaküldött e-mailt.

Szóval az eredeti kérdés törölve, megoldódott.

De adódik egy másik a fentiek miatt: ezt a Quota exceeded üzenetet kellene testreszabni, lefordítani úgy, hogy egy Exchange is megértse. Ennek nézek utána, de ha van kész ötletetek, ne kíméljetek.

Köszönök minden segítséget!

Attila

1, A válasz teljesen korrekt(LDA) bár nekem túl szószátyár. (rfc2298)
2, Attól, hogy valamit k. sok pénzért veszel nem hozol mindig jó döntést (ez most nem rád vonatkozott).
Mivel hogy az MS hibás fordítását kevés esélyed van hogy legyőzd, és ha igen akkor is míg megvárod, hogy mindenhol lecseréljék a hülye MDN fordításukat implementáló szoftverüket a világon, addig kinő a 3. lábad.
3, Ha LDA megoldás érdekel és gyors akkor http://wiki.dovecot.org/LDA oldalt javasolnám... (-e opcióra erős tekintettel)
4, Ha a 3-as nem megoldás vagy nem működik, akkor sajna marad hogy kitalálod hogy lenne jó, megírod a változást, Timo meg ha tetszik neki (szerencsére jó arc, nem sznob) beteszi.

(Személyes véleményem szerint, kellene lda konfig opció a MDN disposition-ra és a deleted action-t le kellene cserélni denied akcióra ha a szószátyár viselkedés nem oké. Ha nekem ez gond lenne és nem akarnék vele nagy cécót, akkor újrafordítanám a deliver-t hogy kicserélem ezt a szót benne)

Lehet, hogy nem voltam egyértlemű...akkor bocsi...

A levélszerver, amit készítek, Dovecot LDA-t használ. Tehát a 3-as pontot kipipálhatjuk.

Ahol főállásban dolgozom, ott van az Exchange szerver (tehát nem én vettem ;-), és előszőr innen próbáltam ki, mi a helyzet. Ez hiba volt.

Más postafiókról (pl. gmail) küldve levelet egy betelt postafióknak, a hibaüzenet gond nélkül visszajön. A Dovecot LDA konfigban még a hibaüzenetet is testreszabhatom.

Ha viszont valaki szintén Exchange fiókból küld levelet egy betelt kvótájú fiókba, a levél küldője csak annyit fog látni, hogy levelét olvasás nélkül törölték, ez pedig adott esetben igencsak félrevezető lehet. Köszönjük, Microsoft.

Nem értettem félre, hanem te értetted félre, lehet nem voltam egyértelmű.
1, Jól tudod az LDA válaszol. A válasza szabványos (fent hivatkoztam rfc-re) automatikus üzenet diszpozíció: törölve. Ezt fordítja rosszul az Exchange.
2, Azt elérni, hogy az exchange-be az elfordítást kijavítsák (Olvasás nélküli törlés -> A cimzett a levelet nem kapta meg, törölve lett-re) nehezen tudod, de ha sikerülne, akkor sem fog bekerülni az összes telepített exchange-be ez a változás.
3, Az "egyszerű" megoldás, hogy a delivert "-e" flaggel hívod meg, ami megváltoztatja a működését (ezt nem kívántam leírni itt) EX_NOPERM visszatérési értéke lesz (vagy EX_TEMPFAIL). Neked nem biztos, hogy jó. Írtam, hogy próbáld ki.
4, És itt írtam, hogy ha a 3. -pontban hivatkozott megoldás nem működik, vagy neked nem opció, akkor maradt, hogy kitalálod (forrás szintjén) hogy mit szeretnél válaszolni MDN-ként, majd ezt ha jó az ötlet a legkevesebb fájdalom ha patch-ként beküldöd, ha jó Timo beteszi.

Utána meg leírtam, hogy szerintem mi lenne a jó:
dovecot config akció: mdn-send-denied opciót bevezetni, és ha yes re állítják a deleted (a mostani diszpozíció amit félre van fordítva) helyett "denied" -et küld, ami azt jelentené: a receipt letiltva(fogalmam nincs hogy fordítja a exchange). Én ezt tenném be az LDA-ba, hogy ez lehessen. A helyes válasz sajnos az, hogy törölve lett, mert az LDA ilyenkor UA-ként működik és a levelet, hely hiányában ->devnull. A másik helyes válasz az lenne, hogy le van tiltva a válasz (denied).