5.1.4 Як визначити хто надсилає спам на VPS/Dedicated. Блокування пошти для окремого сайту

Практично на всіх наших серверах ми використовуємо для відправки пошти сервіс під назвою Exim.

Exim — це так званий MTA (Mail Transfer Agent), агент передачі повідомлень, просторіччя - поштовик або поштовий сервер, що використовується в багатьох операційних системах сімейства UNIX.

Кожен лист, який проходить через поштовий сервіс, має свій ідентифікатор або по-іншому унікальний номер листа. Ідентифікатори повідомлень у чергах Exim, являють собою буквено-цифрові послідовності у верхньому і нижньому регістрі, наприклад “1TrXS1-0003SL-3h”, і використовуються більшістю команд адміністрування черги та логування в Exim.

Базові комадні для роботи з Exim

Тепер розглянемо короткий список команд SSH з керування поштою та поштовою чергою.

Важливо: Усі команди потрібно виконувати від root і вони доступні лише для VPS/Dedicated.

Вивести кількість повідомлень у поштовій черзі (те, що ми бачимо в моніторингу): exim -bpc

Друк списку повідомлень у черзі. Виводяться час постановки в чергу, розмір, ID повідомлення, відправник, одержувач:

  1. exim -bp

Приклад такого списку:

4h 791 1TrXgs-0004t8-0W noelle_foreman@artemida2012.kiev.ua 
bbyy@aol.com 

4h 1.8K 1TrXgu-0004tZ-5w 
noelle_foreman@artemida2012.kiev.ua 

Відповідно ідентифікатори цих двох повідомлень: 1TrXgs-0004t8-0W та 1TrXgu-0004tZ-5w.

У всіх прикладах [id] - це унікальний ідентифікатор потрібного Вам листа. Видалити повідомлення з черги:

  1. exim -Mrm [id]

(Приклад: exim -Mrm 1TrXgs-0004t8-0W, видалити з черги повідомлення з переданим ідентифікатором)

Переглянути заголовки повідомлень:

  1. exim -Mvh [id]

Переглянути тіло повідомлень:

  1. exim -Mvb [id]

Перегляд логів повідомлення:

  1. exim -Mvl [id]

Видалити всі заблоковані повідомлення у поштовій черзі:

$ exipick -z -i | xargs exim -Mrm

Видалити всі повідомлення з поштової черги, де домен відправника domain:

  1. exipick -f @domain-i | xargs exim -Mrm

Видалити всі повідомлення з поштової черги, де домен одержувача domain:

  1. exipick -r @domain-i | xargs exim -Mrm

Видалити всі повідомлення з поштової черги:

  1. exipick -i | xargs exim -Mrm

Якщо в черзі кілька сотень тисяч повідомлень, швидше виконатиме видалення черги командами:

  1. rm -rfv /var/spool/exim4/input/
  2. rm -rfv /var/spool/exim4/msglog/

Як визначити звідки йде розсилка спаму на сервері

Тепер розглянемо як знайти хто і як розсилає спам на сервері і як це заблокувати?

Для цього необхідно виконати наступний ланцюжок команд.

1. Вивести список повідомлень у поштовій черзі за допомогою команди

  1. exim -bp

2. Візуально визначити у списку з якого домену чи скриньки йде пошта. Зазвичай це легко видно за рахунок великої кількості пошти, надісланої з однієї поштової скриньки. Також, визначити з чого саме йде спам можна аналізуючи логи, тіло та заголовок кількох одноманітних листів за допомогою команд, описаних вище.

3. Якщо спам йде з зламаної поштової скриньки - відключити його, або змінити пароль скриньки у його властивостях у розділі Поштові скриньки.

Якщо спам йде з CRON-завдання - видалити таке завдання у розділі Планувальник Cron

Якщо спам відправляється сайтом - Знайдений WWW-домен потрібно або заблокувати або заблокувати пошту для цього WWW-домену. Сайт при цьому буде працювати - не працюватиме тільки пошта, надіслана скриптом PHPmail - для режимів роботи PHP CGI та PHP Apache це робиться по-різному:

  • для режиму php apache у загальному конфізі apache2 (/etс/apache2/apache2.conf) сервера під rootзнайти блок Virtualhost потрібного домену і в рядку
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f

змінити в дорозі /usr/sbin/sendmail слово sendmail на sendmoil. Або зробити та ж у розділі WWW-домени у властивостях конфіга apache2. Після цього потрібно перезавантажити сервіс apache2, щоб зміни набули чинності. Після цього PHPmail тільки для цього сайту і тільки в режимі PHP Apache не працюватиме і скрипти не зможуть розсилати листи.

  • для режиму PHP CGI під користувачем-власником сайту у файлі php-bin/php.ini у рядку
sendmail_path = "/usr/sbin/sendmail -t -i -f

змінюємо в дорозі /usr/sbin/sendmail слово sendmail на sendmoil. При цьому перезавантажувати нічого не потрібно і зазначене блокування буде поширюватися на ВСЕ WWW-домени цього користувача, які працюють в режимі PHP CGI, а не на якийсь конкретний.

Ще раз хотілося б відзначити, що таке блокування поширюється лише на скрипти та крон за допомогою яких поширюється пошта – скриньки, створені на цьому ж домені, будуть працювати.

Просунуті методи визначення відправників спам-розсилки

Якщо визначити хто надсилає спам за допомогою черги не вдалося, можна скористатися ще кількома командами:

  1. tail -n 1000 /var/log/nginx/access.log | grep POST

Виведе список POST-запитів усіх сайтів, у яких можна визначити шкідливий файл, який генерує розсилку.

Також розсилку можуть робити підключившись SSH. Для визначення зламаного користувача скористайтесь командою:

  1. ps axu | grep ssh

Яка виведе всі SSH підключення до сервера. Потім наберіть команду:

  1. w

Яка виведе усі активні з’єднання. Зазвичай користувач, якого немає у виведенні цій команді, але є у виведенні попередньої зламаний - у такому разі просто змініть пароль користувача або його облікового запису FTP.

Команда

  1. killall -u user

закриє всі відкриті з’єднання SSH користувача user.

Якщо замість логіна користувача вказані цифри або FTP-аккаунт користувача, якого в Користувачах не видно, можна знайти у файлі /etc/group або /etc/passwd.

Також скрипт розсилки може бути в папках tmp та var/tmp - ці папки також варто перевірити та почистити.

Ще розсилати спам можна запускаючи скрипти через cron. Швидко переглянути всі cron всіх користувачів можна у папці /var/spool/cron/crontabs.

Також, буває, що відправником спаму вказані різні неіснуючі скриньки на вашому поштовому домені - це також один з методів розсилки. Для того, щоб запобігти появі таких листів, потрібно у властивостях Поштового домену встановити в полі Дія за замовчуванням “Ігнорувати та видалити”.

Якщо на сервері не встановлено Exim a postfix, можна скористатися такими командами.

Виведення поштової черги:

  1. mailq

Очистка поштової черги:

  1. postsuper -d ALL

Ттакож, в панелі управління ISPManager4 для роботи з поштовою чергою є можливість встановити та використовувати плагін, який називається Поштова черга. Встановити плагін можна тільки з під root у розділі Плагіни – натисніть Встановити праворуч угорі, зі списку виберіть ispmque та встановіть його. Після цього оновіть панель керування і в розділі Інструменти з’явиться новий розділ Поштова черга. У цьому розділі можна повністю переглядати всю чергу і всі записи кожного листа в черзі, а також чистити чергу і повторювати відправку окремих листів, тобто по суті все те, що і описаним вище методом SSH.