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

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
eFusion
рядовой
Сообщения: 15
Зарегистрирован: 2013-04-04 15:41:32
Откуда: Украина-Донецк

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

Непрочитанное сообщение eFusion » 2013-04-04 15:53:05

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

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

Непрочитанное сообщение kpp » 2013-04-04 16:05:52

Часть лога для примера.
Что именно искать в логе.
Этот лог у вас не ротируется?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

eFusion
рядовой
Сообщения: 15
Зарегистрирован: 2013-04-04 15:41:32
Откуда: Украина-Донецк

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

Непрочитанное сообщение eFusion » 2013-04-04 16:30:47

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 года.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

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

Непрочитанное сообщение kpp » 2013-04-04 17:37:51

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

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

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}"
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

eFusion
рядовой
Сообщения: 15
Зарегистрирован: 2013-04-04 15:41:32
Откуда: Украина-Донецк

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

Непрочитанное сообщение eFusion » 2013-04-04 18:01:09

Спасибо тебе, милый человек!
Пошел пробовать, отпишусь позже.

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

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

Непрочитанное сообщение rayder » 2013-04-04 19:28:59

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

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

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

Непрочитанное сообщение FiL » 2013-04-05 21:11:05

Решение, конечно, рабочее. Но в некоторых случаях оно не работает.
Например, человек всю свою почту форвардит на gmail.com. И читает там и отвечает оттуда. Но адрес активно используется. А вот авторизаций на сервере не будет ни одной.

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

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

Непрочитанное сообщение rayder » 2013-04-06 15:11:50

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

а вот слать от совоего имени с других почтарей - это уже не красиво
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

FiL
ст. лейтенант
Сообщения: 1375
Зарегистрирован: 2010-02-05 0:21:40

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

Непрочитанное сообщение FiL » 2013-04-07 1:22:12

rayder писал(а):тогда это уже не ящик а обычный алиас.
в таких случаях я просто удаляю ящик и оставляю только алиас. но это осталось со старых времен.
тут все зависит от политики компании, как бы хранение почты компании на внешних серверах может противоречить политике безопасности. но тут у каждого свое.

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

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

eFusion
рядовой
Сообщения: 15
Зарегистрирован: 2013-04-04 15:41:32
Откуда: Украина-Донецк

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

Непрочитанное сообщение eFusion » 2013-04-08 9:57:22

kpp, а можете растолковать, что делает эта злая регулярка т.к. не силен в них.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

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

Непрочитанное сообщение kpp » 2013-04-08 14:19:01

Лог просматривается начиная с определенный ранее даты и до конца файла.
Отбираются строки, которые начинаются по шаблону

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

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

eFusion
рядовой
Сообщения: 15
Зарегистрирован: 2013-04-04 15:41:32
Откуда: Украина-Донецк

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

Непрочитанное сообщение eFusion » 2013-04-09 22:28:45

Спасибо огромное. Пошел учить матчасть

sudo
мл. сержант
Сообщения: 132
Зарегистрирован: 2011-02-05 10:54:11

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

Непрочитанное сообщение sudo » 2013-04-30 18:09:32

rayder писал(а): ИМХО. смотреть надо на логи MDA а не MTA.
А если спам падает и пользователь просто его не удаляет и не читает, а так и оставляет непрочитанным ? ))