Sziasztok,
Próbálnék egy levél küldő szervert készíteni, ami képes SPF, DKIM kezelésre és mellette real time logol adatbázisba. De szerintem bátran mondhatom, hogy már az elején elakadtam.
Tehát a cél:
- Nem túl nagy terhelésű levél küldő készítése, napi maximum 1000 mail kiküldése. Vannak erősebb és gyenégg napok, de átlagnak vehető az 1000 / nap. Ebből 0db hírlevél, vagy SPAM levél, csak fontos céges, web alkalmazás levelek (regisztráció megerősítés..stb.), automatizált értesítők éjszakánként (pl, meg nem erősített regisztrációk, újboli kiértesítése).
- A lehető legmagasabb fokú SPAM elleni küzdelem beállítható legyen rajta, úgy mint SPF, DKIM
- Csak leveleket kell tudjon küldeni, fogadni nem kell neki semmit. Fogadni egy másik szerver fogadja a leveleket, ez csak kiküld.
- Egy nagyon fontos, ha nem a legfontosabb tulajdonság, pedig, hogy real time tudja naplózni mysql-be a rendszer, hogy ki, kinek mikor mit küldött ki és arra mi volt a címzett szerver válasza. Tehát kb: timestamp, from, to, subject, remote answer... A REAL TIME itt nagyon fontos.
Az elképzelés a következő volt:
- Postfix, mert levél küldésre kiválóan konfigurálható. Bár nagyon sok mást is tud, amire itt nincs szükség, de hát enni nem kér.
- Postfix a SPAM elleni harc esetén is jó választásnak tűnt, mivel SPF, DKIM, mind megoldható nála.
- Majd jött a loggolás... Nah itt megakadtam.
-- Volt a rsyslog, ami tud adatbázisba logolni, de az csak fájl helyett DB-be ír mindent ömlesztve. Ugyan az, mint a syslog-ng, csak nem fájlba ment.
-- Tudnék írni egy scriptet, ami a mail.log fájlt felparsolja, de real time nem tudom, hogyan oldjam meg. Ha a logrotate átfordítja a log fájlt két script futás között, akkor kiesig a köztes esemény a logokból. Illetve, ha nagy, akkor amíg lockolom a fájlt (értsd parsolom), nem tudom, hogy a syslog-ng mit csinál, mert hogy nem vár rám, az biztos.
-- Aztán persze megoldható úgy is, hogy folyamatosan nyitva a fájl, de csak olvasásra, vagyis nincs lock, és figyeli a scipt az új sorokat és logol. De mi van, ha lehal a script, akkor újraindulásig, független, hogy kézi, vagy automatizált, a köztes idő elvész.
-- Köztes megoldás, hogy rsyslog ment adatbázisba és ami a levelezéssel kapcsolatos, azt parsolgatja egy script és kigyűjti belőle, ami nekem kell és a felparsolt sorokat megjelöli egy flaggel, hogy azzal már végzett. De mivel scriptről beszélünk, az sem real time, mert percenként fut a script.
A legjobb az lenne, hogyha lehetne olyat csinálni, hogy a postfix minden levél küldés esetén meghívna egy scriptet, ami a paraméterekből, vagy a postfix által átadott adatok alapján insertálgatná az adatbázis sorokat. A script nem figyel folyamatosan, így nem tud lehalni... A postfix régi motoros, nem hibázik, tehát minden script hívás megtörténne, idővel a script bug mentes lenne, tehát adat vesztés gyakorlatilag 0-ra redukálódna.
Vagy... és most jön az, amiről én nem tudok. Lehet, hogy létezik erre egy tök egyszerű megoldás, csak én még nem hallottam róla.
Bármilyen építő jellegű választ és ötletet szívesen fogadnék.
Köszönettel...