Страница 1 из 1

Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-04 15:53:05
eFusion
Подобная тема уже была (http://forum.lissyara.su/viewtopic.php?f=32&t=17505), но не совсем так.
Суть проблемы: есть куча почтовых ящиков и нужно найти юзеров, которые не пользовались ими >= года.
Файндить не вариант.
Необходимо пропарсить логи экзима на предмет последней авторизации и если данный юзер авторизовавылся год назад - удаляем этот ящик.
Просьба подсказать решение с помощью php или shell, либо киньте ссылочку где подобный вариант решается, либо какой-то примерчик.
З.Ы. Заранее спасибо

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-04 16:05:52
kpp
Часть лога для примера.
Что именно искать в логе.
Этот лог у вас не ротируется?

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-04 16:30:47
eFusion
grep 1UNdtu-0002Lp-TB /var/log/mail/exim-main-20130404.log
2013-04-04 09:43:58 1UNdtu-0002Lp-TB <= v.pupkin@main.net H=([192.168.2.213]) [192.168.2.213] P=esmtpsa X=TLSv1:CAMELLIA256-SHA:256 A=auth_plain:v.pupkin S=573 id=515D212E.8030106@main.net
2013-04-04 09:43:58 1UNdtu-0002Lp-TB no host name found for IP address 192.168.2.213
2013-04-04 09:43:58 1UNdtu-0002Lp-TB => i.ivanov <i.ivan@main.net> R=virtualuser T=local_vmail
2013-04-04 09:43:58 1UNdtu-0002Lp-TB Completed

Если я правильно понял, то этот кусок лога говорит насчет отправки письма от v.pupkin к i.ivanov и исходя из этого,
я так понимаю, что нужно искать логин например v.pupkin и наверное дату.

Да, логи архивируются и складируются на 2 года.

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-04 17:37:51
kpp
Вижу несколько вариантов.
К примеру, определяем дату как текущую минус год.
Затем находим ближайшую дату, существующую в логе.
Отбираем из лога все записи с датой позже определенной, отбирая имена пользователей.
Делаем разницу списка активных пользователей и всего списка пользователей.

Код: Выделить всё

log_file=файл_лога

# получить текущую дату минус год FREEBSD
dat=`date -v -1y +%Y-%m-%d`

# определить ближайшую бОльшую дату в логе
while [ -z "`grep "^${dat}" "${log_file}"`" ]
do
   dat=`date -v +1d -j -f "%Y-%m-%d" "${dat}" "+%Y-%m-%d"`
done

# отобрать пользователей за этот период
sed -n '/^'${dat}'/,${
        / <= [a-z,0-9,\.,-,_]*@/s/\([^ ]* \)\{3\}<= \([^ ]*\) .*/\2/p
        }' "${log_file}"

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-04 18:01:09
eFusion
Спасибо тебе, милый человек!
Пошел пробовать, отпишусь позже.

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-04 19:28:59
rayder
А складирует почту кто? dovecot/cyrus?
я на работе пробегаюсь просто по папкам и смотрю дату последнего письма в new (что значит что человек с этого момента почту не читал).
ИМХО. смотреть надо на логи MDA а не MTA.
Как вариант на будущее - добавляете в таблицу поле напр lastused, и создаете функцию которая апдейтит это поле, и возвращает уже то что просит от нее MDA.

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-05 21:11:05
FiL
Решение, конечно, рабочее. Но в некоторых случаях оно не работает.
Например, человек всю свою почту форвардит на gmail.com. И читает там и отвечает оттуда. Но адрес активно используется. А вот авторизаций на сервере не будет ни одной.

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-06 15:11:50
rayder
тогда это уже не ящик а обычный алиас.
в таких случаях я просто удаляю ящик и оставляю только алиас. но это осталось со старых времен.
тут все зависит от политики компании, как бы хранение почты компании на внешних серверах может противоречить политике безопасности. но тут у каждого свое.

а вот слать от совоего имени с других почтарей - это уже не красиво

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-07 1:22:12
FiL
rayder писал(а):тогда это уже не ящик а обычный алиас.
в таких случаях я просто удаляю ящик и оставляю только алиас. но это осталось со старых времен.
тут все зависит от политики компании, как бы хранение почты компании на внешних серверах может противоречить политике безопасности. но тут у каждого свое.

а вот слать от совоего имени с других почтарей - это уже не красиво
удалить ящик можно. Проблема в том, что если форвардинг настроен у юзера в его настройках, то если автоматом грохнуть юзера, то грохнется и алиас. А если юзера ен удалять, то и смысла ящик удалять смысла нет.

В чем некрасивость слать с других почтарей я не понял :(

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-08 9:57:22
eFusion
kpp, а можете растолковать, что делает эта злая регулярка т.к. не силен в них.

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-08 14:19:01
kpp
Лог просматривается начиная с определенный ранее даты и до конца файла.
Отбираются строки, которые начинаются по шаблону

Код: Выделить всё

2013-04-04 09:43:58 1UNdtu-0002Lp-TB <= v.pupkin@
Из таких строк извлекаем и выводим логин пользователя v.pupkin.
Вывод sed-а еще нужно отсортировать с удалением повторяющихся имен

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-09 22:28:45
eFusion
Спасибо огромное. Пошел учить матчасть

Re: Поиск неактивных пользователей и их почтовых ящиков

Добавлено: 2013-04-30 18:09:32
sudo
rayder писал(а): ИМХО. смотреть надо на логи MDA а не MTA.
А если спам падает и пользователь просто его не удаляет и не читает, а так и оставляет непрочитанным ? ))