- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Недавно пришла абуза на спам с заголовками моего сервера. Посмотрел - у меня exim с ума сошел. Забил весь раздел var письмами в очереди и чуть ли не вешает сервер. После перезагрузки спам возобновляется. Пришлось отключить exim. Специалисты с агавы не смогли определить причину и написали что через мои скрипты спамят. Этого не может быть, так как с отключенным exim функция mail() в php работает.
Не подскажите в какую сторону копать?
"так как с отключенным exim функция mail() в php работает."
_НЕ_ работает, вы хотели сказать? Ибо если работает (письма доходят) - что-то
Вы отключили определенно не то.
Так заголовки-то могут датироваться
старой датой. До отключния почтовика. Вы это проверили?
Либо есть другие уязвимости в скриптах - может вам веб-шелл закачали
и используют скрипт, напрямую соединяющийся с принимающим сервером.
Я вот могу телнетом спамить, без всяких mail().
Идти смотреть заголовки писем спама, логи апача за соответствующую дату
- в большинстве случаев "дырку", через которую рассылают - видно сразу.
Проверьте утилитой nmap, какие внешние порты открыты у вашего сервера.
функция mail(), просто помещает письмо в очередь, если mail сервер отключен, то оно просто не будет отправлено, ошибку финкция при этом не возвращает. Если в очереде на отправку много сообщений, значит спамят через функцию mail(). Посмотрите какие письма лежат в очереди, в заголовках обычно пишется пользователь от имени которого был отправлен скрипт, также посмотрите логи почтового сервера, там тоже можно узнать пользователя. Также командой top в консоли, часто можно обнаружить скрипт по нагрузке и частоте появления.
функция mail(), просто помещает письмо в очередь, если mail сервер отключен
Совершенно верно, после чего возвращает TRUE, если поставить в очередь удалось. Т.е.
по статусу того, что оно возвращает - судить о работе почты рано ;)
в заголовках обычно пишется пользователь от имени которого был отправлен скрипт, также посмотрите логи почтового сервера, там тоже можно узнать пользователя. Также командой top в консоли, часто можно обнаружить скрипт по нагрузке и частоте появления.
Как правило, пользователь там - apache. Мало кто догадывается (помимо хостеров)
хоть выставлять sendmail_path уникальные для виртуалхостов апача, с отдельным
адресом в аргументе -f.
Так что логи веб-сервера... Или top, если _в данный момент_ - спамят через скрипт.
"так как с отключенным exim функция mail() в php работает."
_НЕ_ работает, вы хотели сказать? Ибо если работает (письма доходят) - что-то
Вы отключили определенно не то.
Вот скрин из директадмин:
Точно говорю что работает mail() в таком состоянии. У меня на почту приходят письма когда комментарии оставляют с помощью этой функции, да и я ее просто запускал чтобы проверить еще раз.
функция mail(), просто помещает письмо в очередь, если mail сервер отключен, то оно просто не будет отправлено, ошибку финкция при этом не возвращает. Если в очереде на отправку много сообщений, значит спамят через функцию mail(). Посмотрите какие письма лежат в очереди, в заголовках обычно пишется пользователь от имени которого был отправлен скрипт, также посмотрите логи почтового сервера, там тоже можно узнать пользователя. Также командой top в консоли, часто можно обнаружить скрипт по нагрузке и частоте появления.
А какие логи смотреть?
здесь
/var/spool/exim/msglog
или здесь?
/var/spool/exim/input
Если включить exim то top показывает что он забирает от 10% мощности и эти папки очень быстро наполняются пока не забивают раздел var на 100%, тогда сервер виснет.
Точно говорю что работает mail() в таком состоянии. У меня на почту приходят письма когда комментарии оставляют с помощью этой функции, да и я ее просто запускал чтобы проверить еще раз.
Если у вас почта на томже сервере то используется локальная доставка, которая работает даже с отключеным mail сервером, попробуйте отправить через mail(), чтонибудь на другой сервер.
Shirase добавил 09.02.2010 в 17:52
/var/log/maillog
Shirase добавил 09.02.2010 в 17:59
Также можно попробовать заменить стандартный sendmail на собственный shell скрипт, который сохраняет рабочую директорию в файл, на практике я такой вариант не пробовал.
Путь к sendmail которая используется в настоящий момент можно посмотреть здесь /etc/mail/mailer.conf
Также можно временно удалить sendmail, чтобы прекратить спам, а затем смотреть логи apache на наличие ошибок, из-за отсутствия sendmail.
Если включить exim то top показывает что он забирает от 10% мощности и эти папки очень быстро наполняются пока не забивают раздел var на 100%, тогда сервер виснет.
Конечно, у вас очередь спамом забита (даже если скрипт
прекратил уже рассылку). Нужно почистить почтовую очередь.
Смотрим почтовую очередь: exim -bpu
Очищаем ненужное, по списку msg-id: exim -Mrm id1 id2 ..
Если у вас почта на томже сервере то используется локальная доставка, которая работает даже с отключеным mail сервером, попробуйте отправить через mail(), чтонибудь на другой сервер.
Да, почта там-же. На gmail тоже доходит, вот сейчас попробовал.
Там в заголовке:
Received: from apache by server with local (Exim 4.62)
(envelope-from <admin@*****.org>)
id 1Nes1V-000Afp-98
for *******@gmail.com; Tue, 09 Feb 2010 18:29:09 +0300
То есть видно что там exim поработал, который отключен.
antono добавил 09.02.2010 в 19:18
Конечно, у вас очередь спамом забита (даже если скрипт
прекратил уже рассылку). Нужно почистить почтовую очередь.
Смотрим почтовую очередь: exim -bpu
Очищаем ненужное, по списку msg-id: exim -Mrm id1 id2 ..
Когда exim запущен наверное не успевает очищать. Я делал так
killall exim
и удалял все файлы из msglog и input вручную.
тоже было такое )
пару админов выковыривали ботов ( бестолку ( пару недель затишья, потом опять спам ..... (
лекарство одно - переустанавливай операционистку на серваке
да и DA можешь выкинуть ....
Когда exim запущен наверное не успевает очищать. Я делал так
killall exim
и удалял все файлы из msglog и input вручную.
Кстати, если останавливаете exim _не_ через панельку (а в консоли - service stop,
killall/kill, etc...) - будьте готовы, что она может перезапустить их.
тоже было такое )
пару админов выковыривали ботов ( бестолку ( пару недель затишья, потом опять спам ..... (
На массовом виртуальном хостинге - такое достаточно частое явление, хотя
локализовать спамера (до виртуалхоста, конкретного пользователя etc) -
обычно достаточно просто. А если проекты свои - нужно ковырять до конца.
лекарство одно - переустанавливай операционистку на серваке
да и DA можешь выкинуть ....
Одними переустановками это не решить, конечно. Уязвимые скрипты останутся.
Но DA выкинуть - поддерживаю. А если на сервере меньше десятка отдельных
проектов - выкинуть панельки типа DA как класс.