Postfix Perl Dragon

vladimir simeonov
18/07/2011

Postfix е най – добрият пощенски агент, но без добра програмка за парсване на логовете му остава усещането за липса в душата на админа. Една такава липса ме глождеше дълго време докато не се заех с тежката задача да напиша скрипт, който да обхожда логовете и да ги вмъква в mysql. целият чалъм и пиниз се състои в това, че postfix като програма съставена от под програмки, които тръгват, извършват определена задача и изчезват; навързани на сложна логическа нишка си записват своите дейности в системния лог, без от него да може да се направи привидно смислена връзка. на отделни редове без последователност, в лога се натрупва информацията и обработката на входящи, изходящи писма, препращания и т.н. трябваха ми месеци докато стигна до нещо работещо..

скрипта е достигнал версията си 3.2 към момента на писане на поста, извървявайки дълъг път от оптимизации и промяна в логиката, пренаписвания..

може би скоро, когато имам повече свободно време ще го пренапиша отново с цел оптимизация.

малко за самия скрипт или фамилия от скриптове:

dragon_parser.pl е основният скрипт вършейки цялата работа по прочитане на лога и записване в базата данни.

dragon_cleaner.pl изчиства базата от стари записи, според оказания интервал.

dragon_sqlize.pl обира писмата от catchall кутия в postfix и ги импортва в MySQL. внимавайте с обема на писмата. за натоварен сървър не се препоръчва използването на скрипта.

dragon_pbs.pl е малко скриптче, което замества pop-before-smtp програмите. скрипта може да се пуска чрез pop-before-smtp файла, който се копира в /etc/init.d/

dragon_unhidepw.pl хваща паролите които courier-authdaemon записва в лога, и ги записва в ldap. като цяло върши работа единствено на мен, но нямаше в кой друг проект да го добавя.

единственото което трябва потребителя да направи за да работи скрипта е:

1. инсталира perl библиотеките описани в Readme

2. стартира ./install.sh скрипта

3. добави задачи в cron за стартиране на скриптовете в желан timeframe от него

Comments are closed !