Кто спамит? Подсказки по eximstats

Если на одном сервере работает множество сайтов – вы можете столкнуться с проблемой того, что IP адрес сервера будет время от времени попадать в СПАМ-листы. Как следствие, многие почтовые серверы не будут принимать Email сообщения с такого IP. 

Причин рассылки спама с многопользовательского сервера может быть множество – это и злонамеренная рассылка (когда учетная запись сайта используется сугубо для спама), либо эксплуатируется уязвимости сайта (в таком случае, владелец сайта не подозревает, что от его имени рассылается спам).

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

В качестве приложения для отправки email, на большинстве серверов используется Exim. Ниже приведены типичные консольные команды exim (eximstats): 

#exim –bV – вывод очереди сообщений 

#exim –bpc – вывод количества писем в очереди.

#exim -bp – вывод информации по письмам в очереди, время постановки в очередь, размер, ID сообщения, отправитель, получатель.

#exim -Mvh ID сообщения просмотреть заголовки сообщений.

#exim -Mvb ID сообщения  – просмотр тела письма

#exim -Mvl  ID сообщения – выводит лог письма

Эти команды Вам помогут проанализировать очередь писем на Вашем сервере и помогут в поиске сайта/аккаунта с которого рассылается СПАМ. Их достаточно в большинстве случаев.

Так же для более удобного анализа очереди exim можно воспользоваться утилитами, которые поставляются с ним.

К примеру  exiqsumm и exiqgrep:

#exim -bp | exiqsumm –  вывод программы по умолчанию состоит из пяти колонок: количество сообщений на домен, их общий объем, время жизни самого старого, самого нового, и собственно домен назначения. В конце вывода есть суммарные значения.По умолчанию вывод сортируется по доменам в алфавитном порядке.

#exim -bp | exiqsumm -c -s | head  – вывод будет иметь вид:

Count  Volume  Oldest  Newest  Domain

—–  ——  ——  ——  ——

   24   130KB     19h      3h  domain1.com > ukr.net

    9    22KB     22h     30m  domain2.com.ua > yahoo.com

    4    20KB     23h      4h  <> > domain3.net

Далее exiqgrep можно определить спамера, для примера:

#exiqgrep -b -f ‘domain1.com’ -r ‘ukr.net’ | awk ‘{print $3}’ | sort | uniq -c | sort -n | tail

Он будет внизу списка.

Тоже самое можно сделать с помощью команды exiqgrep:

#exiqgrep -b | awk ‘{print $3}’ | sort | uniq -c | sort -n | tail

 

После того как Вы определили спамера необходимо очистить очередь от нежелательной почты.

Это так же можно сделать разными способами:

#exiqgrep -i -f ‘spam@domain.com’ | xargs exim -Mrm |wc – очистка по конкретному отправителю

#exiqgrep -r ‘forspam@domain.com’ -i | xargs exim -Mr- очистка по определенному получателю

В случае если в очереди скопилось много frozen сообщений то удалить их можно так:

#exiqgrep -zi | xargs exim -Mrm – удаляет все frozen письма 

В редких случаях бывает так, что писем скопилось очень много и удалить средствами утилит exim их не возможно, тогда приходится прибегнуть к удалению всех писем в очереди к примеру командой:

#rm -rf /var/spool/exim/input/

Но будьте очень аккуратны и перепроверьте несколько раз перед применением её, иначе при допущении ошибки в пути Вы можете потерять данные на сервере.