Анализ логов при блокировке за спам

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

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

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

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

Чтение лога

Дополнительную информацию о том, как разбирать логи qmail и access_log, можно найти в инструкции Чтение логов

В рамках данной статьи еще раз отметим, что неудачные отправки будут помечены в логе qmail двумя звездочками (**):

Jun 25 01:23:45 vh84 splogger[19943]: 1joDo0-0005Bd-LB ** mail@hotmail.fr R=dnslookup T=remote_smtp: SMTP error from remote mail server after RCPT TO:<titus121@hotmail.fr>: host eur.olc.protection.outlook.com [104.47.9.33]: 550 5.5.0 Requested action not taken: mailbox unavailable (S2017062302).

Определение причины блокировки

Существует несколько причин, из-за которых ваша рассылка может быть определена как нежелательная и заблокирована:

  • Письма отклоняются как спам
  • Письма не проходят проверку DMARC
  • Рассылка выполняется на несуществующие почтовые ящики
  • IP-адрес отправителя находится в черном списке

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

Письма отклоняются как спам

В этом случае в логе будут встречаться ошибки вида:

550 spam reject; 
554 5.7.1 Message rejected under suspicion of SPAM

Сообщение означает, что принимающий сервер отклонил письмо, заподозрив, что это спам.

Пример подобного лога:

Jun 25 01:24:53 vh256 splogger[10713]: 1joDp7-0002mn-2s X-PHP-Originating-Script: "2157:class-phpmailer.php"

Jun 25 01:24:53 vh256 splogger[10713]: 1joDp7-0002mn-2s <=user@server.timeweb.ru U=user P=local S=4666 id=e2d6cb8a510412a2c1d736c19c5cce2e@goodmanexpert.com

Jun 25 01:24:53 vh256 splogger[10716]: 1joDp7-0002mn-2s **name@mail.ru R=dnslookup T=remote_smtp H=mxs.mail.ru [94.100.180.31] X=TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=yes: SMTP error from remote mail server after end of data: 550 spam message rejected. Please visit http://help.mail.ru/notspam-support/id?c=2VFQCmsIj_XndmnnBFTa1ne5-RHRbW_DSzxt0X6mKocNAAAAov4AACD1dCY~ or  report details to abuse@corp.mail.ru. Error code: 0A5051D9F58F086BE76976E7D6DA540411F9B977C36F6DD1D16D3C4B872AA67E. ID: 0000000D0000FEA22674F52

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

Например, в логе, который мы привели, указаны ссылка и e-mail для обращений, а также код ошибки и ID сообщения, которые будет нужно предоставить поддержке:

Please visit http://help.mail.ru/notspam-support/id?c=2VFQCmsIj_XndmnnBFTa1ne5-RHRbW_DSzxt0X6mKocNAAAAov4AACD1dCY~ or  report details to abuse@corp.mail.ru. Error code: 0A5051D9F58F086BE76976E7D6DA540411F9B977C36F6DD1D16D3C4B872AA67E. ID: 0000000D0000FEA22674F52

Письма не проходят проверку DMARC

Письмо отвергается почтовым сервером получателя, так как не проходит проверку DMARC, используемую почтовыми сервисами для борьбы со спамом и фишингом.

Пример лога:

Jun 25 14:27:20 vh256 splogger[7270]: 1joQ2K-0001tG-3U X-PHP-Originating-Script: "1253:sendmail.php"

Jun 25 14:27:20 vh256 splogger[7270]: 1joQ2K-0001tG-3U <= user@server.timeweb.ru U=user P=local S=1572

Jun 25 14:27:20 vh256 splogger[7274]: 1joQ2K-0001tG-3U ** email@mail.ru R=dnslookup T=remote_smtp H=mxs.mail.ru [94.100.180.31] X=TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=yes: SMTP error from remote mail server after end of data: 550 5.7.1 This message was not accepted due to domain (mail.ru) owner DMARC policy (RFC 7489) https://help.mail.ru/mail-help/postmaster/dmarc

DMARC проверяет, совпадает ли адрес отправителя, указанный в письме, с фактическим отправителем сообщения.

Чаще всего причиной отклонения писем является наличие в заголовках From или envelope-from домена известных почтовых сервисов. В примере выше это mail.ru, как видно из строки:

This message was not accepted due to domain (mail.ru) owner DMARC policy

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

Альтернативным решением проблемы может стать использование SMTP-авторизации при отправке почты. Для перевода почтовых служб на SMTP-отправку вы можете воспользоваться нашей инструкцией.

Рассылка выполняется на несуществующие почтовые ящики

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

Примеры ошибок:

User not found;
User unknown;
No such user here;
account unknown;
Address rejected;
non-existent hosts;
Unrouteable address;
Invalid mailbox;
Mailbox unavailable;
Invalid recipient;
DNS: no such domain;
Recipient address rejected;
Bad destination mailbox address;
Host or domain name not found;
The email account that you tried to reach does not exist.

Пример такого лога:

Jun 25 01:23:44 vh84 splogger[19941]: 1joDo0-0005Bd-LB X-PHP-Originating-Script: "2917:tools.php"

Jun 25 01:23:44 vh84 splogger[19941]: 1joDo0-0005Bd-LB <=user@server.timeweb.ru U=user P=local S=925

Jun 25 01:23:45 vh84 splogger[19943]: 1joDo0-0005Bd-LB ** mail@hotmail.fr R=dnslookup T=remote_smtp: SMTP error from remote mail server after RCPT TO:<titus121@hotmail.fr>: host eur.olc.protection.outlook.com [104.47.9.33]: 550 5.5.0 Requested action not taken: mailbox unavailable (S2017062302).

Как правило, причинами рассылки на несуществующие ящики являются:

  • некорректные контакты в базе клиентов, по которой шла рассылка;
  • незащищенная форма обратной связи на сайте;
  • вредоносные скрипты на сайте.

Рассылка по базе клиентов

Если рассылка была выполнена по вашей базе клиентов, необходимо удалить из нее неактуальные почтовые адреса. Проверить адреса на валидность можно с помощью специальных сервисов в сети, например, https://2ip.ru/mail-checker/.

Рассылка через форму на сайте

Для выяснения источника рассылки (то есть, определения, с какого именно сайта она выполнялась) вы можете сопоставить неудачные отправки (отмеченные ** в логе отправки qmail) с временем POST-запросов в логе access_log.

Далее необходимо установить защиту для отправки писем с форм сайта (обратная связь, регистрация), например, CAPTCHA

Если CAPTCHA уже установлена, рекомендуем проверить сайты на наличие вредоносного кода. Эту услугу можно заказать у сторонних специалистов.

Рассылка через вредоносные скрипты

Подозрительные рассылки могут быть результатом взлома вашего сайта и заражения его вредоносным кодом.

В первую очередь необходимо проверить, какой скрипт выполняет отправку. Он будет указан в логе в строке X-PHP-Originating-Script: в виде uid:имя_скрипта (uid — это ID пользователя на сервере).

Например, в логе ниже имя скрипта — tools.php:

Aug 29 15:10:03 vh188 splogger[14344]: 1i3JFb-0003jM-Pk X-PHP-Originating-Script: "1254:tools.php"

Aug 29 15:10:03 vh188 splogger[14344]: 1i3JFb-0003jM-Pk <=user@vh188.timeweb.ru U=user P=local S=1011

Aug 29 15:10:03 vh188 splogger[14354]: 1i3JFb-0003jM-Pk ** sahjambox@gmail.com R=dnslookup T=remote_smtp: SMTP error from remote mail server after RCPT TO:<sahjambox@gmail.com>: host gmail-smtp-in.l.google.com [2a00:1450:4010:c0e::1a]: 550-5.1.1 The email account that you tried to reach does not exist. Please try\n550-5.1.1 double-checking the recipient's email address for typos or\n550-5.1.1 unnecessary spaces. Learn more at\n550 5.1.1  https://support.google.com/mail/?p=NoSuchUser r4si1728450ljg.165 - gsmtp

Выполнить поиск данного скрипта вы можете с помощью команды ниже, подключившись к своему аккаунту по SSH:

find ~/ -type f -name "имя_скрипта"

Например:

find ~/ -type f -name "tools.php"

Стоит обратить внимание на название скрипта, который инициирует рассылку.

  • Если название является стандартным, к примеру, tools.php, phpmailer.php, sendmail.php, mail.php, class-phpmailer.php и другие, то, скорее всего, причиной рассылки были неактуальные адреса или незащищенная форма на сайте.
  • Если скрипт имеет нестандартное название, например 12435.php, dgffgf.php и так далее, то стоит провести проверку файлов сайта на вирусы, так как, скорее всего, произошел взлом вашего сайта.
  • Если же название отсутствует (X-PHP-Originating-Script: ""), значит, отправка осуществлялась cron-задачей. Ее тоже нужно проверить. Для этого можно обратиться в службу поддержки. После рекомендуем обязательно проверить файлы сайта на вирусы

IP-адрес отправителя находится в черном списке

В этом случае в логе будут встречаться ошибки вида:

Access denied, banned sending IP

Пример лога:

Jul 12 01:23:35 vh180 splogger[973]: 1juNuB-0000Fh-Kv X-PHP-Originating-Script: "1397:class-phpmailer.php"

Jul 12 01:23:35 vh180 splogger[973]: 1juNuB-0000Fh-Kv <= user@vh180.timeweb.ru U=co22556 P=local S=32765 id=26c0ee2383eeaa08a8a77552e6eec23e@procollaboration.ru

Jul 12 01:23:37 vh180 splogger[975]: 1juNuB-0000Fh-Kv ** mail@mail.com R=dnslookup T=remote_smtp: SMTP error from remote mail server after RCPT TO:<amy@advancecnc.com>: host advancecnc-com.mail.protection.outlook.com [104.47.59.138]: 550 5.7.606 Access denied, banned sending IP [92.53.96.251]. To request removal from this list please visit https://sender.office.com/ and follow the directions. For more information please go to  http://go.microsoft.com/fwlink/?LinkID=526655 AS(1430) [DM6NAM12FT015.eop-nam12.prod.protection.outlook.com]

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