Эта статья рассчитана на новичков, те же кто не первый день использует логи, наверняка имеют автоматизированные решения и мало что для себя почерпнут.
Вкратце скажу, что я использовал 3 программы: 1. Notepad++, 2. PHP, 3. AMS.
Возможно, первую можно заменить на более продвинутый скрипт PHP, чем сейчас, но поскольку объем работы был небольшой, я решил не заморачиваться.
Сначала запускаю Notepad++ и захожу Поиск -> Найти в Файлах. В появившемся окне в Найти вбиваю "([a-Z]+@[a-Z]+.[\.a-Z]+)" - регулярка того, что я ищу (в данном случае это все то, что похоже на мыла), Режим поиска выбираю Регулярные выражения., выбираю папку с логами, жму "Найти все". Жду пока Notepad распарсит все логи у меня было около 10ГБ логов, поэтому процесс был не быстрый (лучше пойти погулять в это время или поспать, как в моем случае).
Далее копирую вывод из Notepad++ в файл logsemails.txt. Заливаю его на сервер с php, и запускаю там скрипт:
Готово! Теперь файл mails_corp.txt содержит все корпоративные мыла из кучи логов, которые вы собрали.
Если вам нужны биги, то просто поменяйте строчку
if(!$contains) на if($contains)
Далее, запускаем АМС, создаем новую рассылку, выбираем "Валидация базы (поиск мертвых адресов)", на список адресов - добавляем их из файла mails_corp.txt, профиль отправки - только встроенный smtp, рассылка через Socks Proxy - тут важно, чтобы соксы были хорошие и их было достаточно, чтобы smtp вас не добавляли в черный список (это скажется на качестве валида и на том, сколько хороших мыл вы пропустите). У меня на большом кол-ве соксов получился результат 22% валида из 100к, делитесь сокс-провайдерами, если у вас результат получился лучше. Посмотреть какие соксы у вас "проседают" можно в "Статусе потоков", Столбец - эффективность.
На этом все! Удачного поиска! Надеюсь кому-то пригодится.
PS:По запросу могу улучшить скрипт, чтобы Notepad++ был не нужен. PPS: Сделал. В функцию listFolderFiles передаем путь к каталогу с логами.
Код:
<?php
function listFolderFiles($dir) {
$ffs = scandir($dir);
//убираем из списка текущий каталог
unset($ffs[array_search('.', $ffs, true)]);
//убираем из списка каталог выше
unset($ffs[array_search('..', $ffs, true)]);
foreach ($ffs as $ff) {
if(is_dir($dir.'/'.$ff)) {
listFolderFiles($dir.'/'.$ff);
}
else {
parseFile($dir.'/'.$ff);
}
}
}
function parseFile($ff) {
$content = file_get_contents($ff);
preg_match_all("([a-zA-Z]+@([a-zA-Z]+\.[\.a-zA-Z]+))", $content, $matches);
$emails = [];
foreach($matches[1] as $key => $domain) {
$contains = FALSE;
foreach(["hotmail","gmail","yahoo"] as $bigdomain) {
if(str_contains(strtolower($domain), $bigdomain))
$contains = TRUE;
}
if($contains)
$emails[] = strtolower($matches[0][$key]);
}
$emails = array_unique($emails);
foreach($emails as $email) {
echo $email."\n";
}
}
listFolderFiles('logs');
?>
ppps:
еще вариант выбираешь функцию Емайл парсер, далее папку и...
все майлы в 1 файле