Автоматизация наше все =)
На одной из моих подработок часто возникала задача заблокировать какой-то из адресов на сервере. Чтобы человеку с этого ip нельзя было зайти ни на один из сайтов.
В принципе, телодвижений минимум, но делать это все равно не очень хотелось - уж очень однообразно. А однообразные задачи несложно автоматизировать. Вот я и задумался над вопросом автоматизации этой операции.
Итак, какие операции мне требуется выполнять программно?
1. Забирать письма из определенного почтового ящика
2. Выбирать из этого письма ip-адрес
3. Добавлять адрес в определенную цепочку файрвола
4. Удалить письмо, как более не нужное
Работа с письмами
Для работы с письмами я выбрал легковесный, но подходящий для моих целей сборщик писем - getmail.
В конфигурационном файле также указал, что собранные письма следует сразу же удалять.
Вот такой конфигурационный файл (getmailrc):
[retriever]
type = SimpleIMAPRetriever
server = mail.v-midas.com
username = xxxx@xxxx.com
password = yyyyyy
[destination]
type = Maildir
path = ~/.maildir/
Для писем, как уже видно из конфига создана директория ~/.maildir. Во время испытаний оказалось, что getmail не умеет создавать поддректории и поэтому их придется создать самостоятельно. В ~/.maildir нужно создать new cur tmp.
Файрвол
Тут все достаточно тривиально. Для блокировки создана отдельная цепочка, в которую и заносятся все записи. В моем случае это цепочка blocked.
Автоматизация
Естественно, автоматизация всех описанных в начале операций выполнена в виде bash-скрипта. Вот он:
#!/bin/bash
export HOME="/home/blocked"
export DISPLAY=":0"
CUR_PATH="$HOME/.getmail"
cd $CUR_PATH
MAIL_DIR="$HOME/.maildir"
export LANG="ru_RU.UTF-8"
export LC_ALL="$LANG"
FPID="/tmp/cc.pid"
date
if [ -s $FPID ]; then
echo "found cc.pid"
cat $FPID
rm $FPID
exit 78
fi
echo $$ >$FPID
getmail -n 1>std.msg 2>err.msg
sleep 2
mailfiles=`ls $HOME/.maildir/new`
for i in $mailfiles
do
iptables -A blocked -s `cat $HOME/.maildir/new/$i | egrep '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'` -j REJECT
done
rm $FPID
Этот скрипт запускается по крону раз в 10 минут. В него можно добавить еще много разных функций, если вдруг это потребуется.
пятница, 26 ноября 2010 г.
вторник, 23 ноября 2010 г.
Акции, распродажи, скидки.... в чем фишка?
Сегодня в магазине предложили поучаствовать в акции. За каждые 300р из суммы покупки мне дается купон. При определенном количестве купонов дается возможность купить подушку или одеяло в 2 раза дешевле.
С одной стороны мысль, что опять какое-то разводилово, а с другой...
Если человеку нужно купить эту вещь и он получает возможность купить ее дешевле (ведь ничего лишнего участники акции не платят), то это же выгодно =). Пусть маркетологи радуются, что они обхитрили людей и повысили продажи =). На самом деле они обхитрили сами себя ;).
С одной стороны мысль, что опять какое-то разводилово, а с другой...
Если человеку нужно купить эту вещь и он получает возможность купить ее дешевле (ведь ничего лишнего участники акции не платят), то это же выгодно =). Пусть маркетологи радуются, что они обхитрили людей и повысили продажи =). На самом деле они обхитрили сами себя ;).
понедельник, 1 ноября 2010 г.
Создание папок в Postfixadmin
Postfixadmin - единственная OpenSource панель, которая мне показалась удобной и функциональной. Однако в процессе настройки выяснилось, что настройки по умолчанию не совсем корректные. При создании ящиков, создавались лишь стандартные imap директории, а "Отправленные", "Черновики" и т.д. не создавались.
В результате ковыряния конфигурационного файла были найдены и настроены следующие параметры:
$CONF['create_mailbox_subdirs']=array('Sent', 'Templates', 'Drafts', 'Junk');
$CONF['create_mailbox_subdirs_host']='localhost';
$CONF['create_mailbox_subdirs_prefix']='';
$CONF['create_mailbox_subdirs_hostport']=143;
параметр create_mailbox_subdirs_prefix изначально содержал "INBOX.". Но Thunderbird не хотел воспринимать папки с префиксом, как системные и сохранять в них соответствующую информацию.
В результате ковыряния конфигурационного файла были найдены и настроены следующие параметры:
$CONF['create_mailbox_subdirs']=array('Sent', 'Templates', 'Drafts', 'Junk');
$CONF['create_mailbox_subdirs_host']='localhost';
$CONF['create_mailbox_subdirs_prefix']='';
$CONF['create_mailbox_subdirs_hostport']=143;
параметр create_mailbox_subdirs_prefix изначально содержал "INBOX.". Но Thunderbird не хотел воспринимать папки с префиксом, как системные и сохранять в них соответствующую информацию.
Подписаться на:
Сообщения (Atom)