Hello,
Naplóznom kellene egy bizonyos domain-ről ezer felé küldött levelek kézbesítésének tényét. Ez azt jelentené, hogy mikor tőlem elvette a levelet a célszemély mx-e, az már bőven elég. A mail.log analizálás nem játszik, külön szeretném megoldani (pl. adatbázisba lerakni ezeket az adatokat).
Az MTA postfix, de ezt már írtam :).
Köszönöm!
- 1081 megtekintés
Hozzászólások
Pl. postfix smtp processzének logjait egy progranak irányítod át (pl syslog-ng -vel), és feldolgozod.
Más megoldás nagyon nincs, mert a postfix a syslog-al logol.
- A hozzászóláshoz be kell jelentkezni
Gyártottam syslog-ng filtert, de nem látom egyelőre a megoldást. Kb. ez a folyamat:
- postfix fogadja a levelet (ebben a sorban van a feladó illetve a címzett)
- továbbdobja az amavisnak, az megrágja és visszadobja a postfix-nek, hogy rendben (vagy nem)
- postfix kezetfog a címzett mx-ével, megegyeznek és a dest. mx elveszi a levelet.
Ez itt alap hangon 7-8 sor a logból. Az utolsó pontnál már csak a címzett van meg illetve az, hogy az mx átvette.
Nekem ebből három dologra van szükségem. Ki küldte. Kinek. Mikor vette át a címzett mx-e.
Ha esetleg van erre valakinek okos filtere, annak nagyon örülnék, ha nem akkor írok rá valami okos perl scriptet.
Köszi.
- A hozzászóláshoz be kell jelentkezni
Ez engem is érdekelne. Postfix nem tud közvetlenül SQL-be log-olni?
- A hozzászóláshoz be kell jelentkezni
nem
- A hozzászóláshoz be kell jelentkezni
patterndb & corellation cimszavaknak nezz utana (syslog-ng@ levlista archivum is sokat tud segiteni), ezek segitsegevel szerintem meg lehet oldani, viszonylag fajdalommentesen.
Vagy ez, vagy script.
--
|8]
- A hozzászóláshoz be kell jelentkezni
szerintem valami postfix log analizis segit, kulonallo scriptben, crontabbol futtatva idokozonkent
a kovetkezo logika szerint:
eloszor kivalogatjuk a postfix belso mailidket, adott domainre vonatkozoan
#!/bin/sh
FILE="/var/log/mail.log"
LIST=`egrep "(from|to)=<[^>]+@domain\.hu>" ${FILE} | \
awk '{print $6}' | \
sed 's/:$//' `
majd ezt kovetoen megnezzuk az egyes kikuldesi statuszokra vonatkozo logbejegyzeseket
#!/bin/sh
for i in $LIST; do
grep $i $FILE| grep "status=sent"
done
aztan izles szerint a megtalalt erdemi sorokat be lehet toltogetni insert into if not exists, a mailid-t mint egyedi kulcsot hasznalva az sql adatbazisba, hogy ne legyenek duplikatumok
a logrotate-re kell esetleg odafigyelni, mert amikor az fut, akkor lehet egy-ket levelrol nem keszul bejegyzes, de ezt a kikuldes idozitesevel meg lehet oldani
---
aztan meg egy kis disclaimer: ha spamek kikuldesere, vagy mas csibeszkedesre hasznalod az itt leirt know-howt, legalabb fajduljon meg a fejed ;P
- A hozzászóláshoz be kell jelentkezni
Mégiscsak scriptet írok. Köszönöm az info-t.
Nem spammelni fogok más nevében, egy ügyfelemnek kell a saját szerveremen nyomon követni, h kimentek e a levelek tőlünk.
- A hozzászóláshoz be kell jelentkezni