Справочник команд SSH для EXIM

Дата публикации:

Автор:

Раздел сайта:

Exim (от англ. EXperimental Internet Mailer) — это сервис, почтовый агент пересылки сообщений, используемый в операционных системах семейства Unix. Очень часто exim сервис применяется на выделенных серверах, VPS и хостинге. Для того, чтобы управлять exim сервисом по ssh мы собрали необходимый набор команд.

Получение базовой информации по Exim

Проверить правильность синтаксиса конфигурационного файла и узнать с поддержкой каких опций собран exim:

# exim –bV

Вывести количество сообщений в очереди:

# exim –bpc

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

# exim –bp

Просмотр активных отправителей

# exim -bp | awk '{print $4}' | sort | uniq -c | sort -rn

Вывод суммарной информации.

Выводимые колонки: количество писем, объем, самое старое время, самое новое время, домен.

# exim -bp | exiqsumm

Тестирование маршрута доставки до указанного адреса:

# exim -bt user@mail.ru

user@mail.ru router = lookuphost, transport = remote_smtp host mxs.mail.ru [94.100.176.20] MX=10

Имитировать SMTP транзакцию из командной строки, как если-бы сообщение пришло с указанного IP адреса. При этом будет показано прохождение и срабатывание проверок, фильтров и листов доступа (ACL). На самом деле, никакое сообщение никуда доставлено не будет.

# exim -bh 94.100.176.20

Листинг всех настроек конфигурации

# exim -bP

Поиск в очереди с помощью утилиты exiqgrep

Просмотр сообщений конкретного отправителя

# exiqgrep -f name@domain.com

Просмотр сообщений для конкретного получателя

# exiqgrep -r name2@domain2.com

Поиск сообщений, старше, указанного времени ( количества секунд)

В примере, сообщения старше 1 дня:

# exiqgrep -o 86400

Поиск сообщений свежее указанного времени(количества секунд). В примере поиск сообщений, пришедших в течение последнего часа:

# exiqgrep -y 3600

Просмотр замороженных сообщений

# exiqgrep -z

Подсчет замороженных сообщеий

# exiqgrep -zc

Просмотр заблокированных сообщений

# exiqgrep -x

Подсчет заблокированных сообщеий

# exiqgrep -xc

Просмотр только идентификаторов всех сообщений

# exiqgrep -i

Управление очередью сообщений

Принудительная рассылка всей почты в очереди

Запуск очереди

# exim -q -v

Запуск очереди только для локальных доставок:

# exim -ql -v

Удалить сообщение из очереди:

# exim –Mrm <ID-сообщения>

Удалить все заблокированные сообщения из очереди:

# exipick -zi | xargs exim -Mrm

Удалить все сообщения из очереди:

# exipick -i | xargs exim -Mrm Или

# exim -bpr | awk {'print $3'} | xargs exim -Mrm

Удалить все заблокированные сообщения:

# exiqgrep -z -i | xargs exim –Mrm

Или

# exim -bpr | grep frozen | awk {'print $3'} | xargs exim -Mrm

Удалить все сообщения, старше 5 дней (86400 * 5 = 432000 секунд):

# exiqgrep -o 432000 -i | xargs exim -Mrm

Заблокировать(заморозить) все письма от указанного отправителя:

# exiqgrep -i -f user@example.tld | xargs exim -Mf

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

# exiqgrep -i -f user@example.tld | xargs exim -Mrm

Заблокировать( заморозить ) сообщение:

# exim -Mf <ID-сообщения>

Разблокировать сообщение:

# exim -Mt <ID-сообщения>

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

# exim –M <ID-сообщения>

Доставить сообщение, только если достигнуто время для повторной доставки:

# exim -Mc <ID-сообщения>

Принудительно остановить сообщение с формулировкой «отменено администратором»:

# exim –Mg <ID-сообщения>

Просмотр заголовки сообщений:

# exim -Mvh <ID-сообщения>

Просмотр тела сообщений:

# exim -Mvb <ID-сообщения>

Просмотр логов сообщения:

# exim -Mvl <ID-сообщения>

Добавить получателя в сообщение:

# exim -Mar <ID-сообщения> <address> <address>

Изменить адрес отправителя сообщения:

# exim -Mes <ID-сообщения> <address>

Поиск сообщений отправленных с определенного IP адреса:

# exigrep '<= .* \[12.34.56.78\] ' /path/to/exim_log

Поиск сообщений отправленных на определенный IP адрес:

# exigrep '=> .* \[12.34.56.78\]' /path/to/exim_log

Данный пример ищет сообщения содержащие символы «=>», и отправленные на адрес «user@domain.tld», далее по конвейеру, результат передается команде grep, которая из полученного результата выбирает строки, содержащие «<=» с информацией об отправителе, почтовом адресе, IP адресе, размере сообщения, ID сообщения и заголовок subject, если логгирование этой строки включено.

# exigrep '=> .*user@domain.tld' /path/to/exim_log | fgrep '<='

Генерировать из лог файла и показать статистику Exim:

# eximstats /path/to/exim_mainlog

То-же что и выше но с более подробными данными:

# eximstats -ne -nr -nt /path/to/exim_mainlog

Аналогично но за определенный день:

# fgrep YYYY-MM-DD /path/to/exim_mainlog | eximstats

Удалить все сообщения в очереди, содержащие в теле, определенную строку:

grep -lr 'a certain string' /var/spool/exim/input/ | \sed -e 's/^.*\/\([a-zA-Z0-9-]*\)-[DH]$/\1/g' | xargs exim -Mrm

Командой выше, мы проверяем содержимое каталога /var/spool/exim/input/, в поисках файлов очереди, содержащих определенную строку в теле сообщения, поскольку команда exiqgrep не умеет просматривать тело сообщений. Если вы решите удалить найденные файлы напрямую, ЭТО БУДЕТ НЕ ПРАВИЛЬНО, используйте предназначенные для этого команды exim.

После того как вы внесли изменения в файл конфигурации, необходимо перезапустить exim, или послать рабочему процессу сигнал SIGHUP, чтобы он перечитал конфигурационный файл и изменения вступили в силу.

Предпочтительней естественно отправить сигнал, нежели перезапускать приложение.

kill -HUP cat /var/spool/exim/exim-daemon.pid

Проверка распознавания адреса exim, и вывода роутера и транспорта который будет использоваться для доставки локальным пользователям:

# exim -bt postmaster@hostname.domain.com

Проверка распознавания адреса exim, и вывода роутера и транспорта который будет использоваться для доставки внешним пользователям:

# exim -bt user@mail.ru

Тестирование доставки сообщений внешним пользователям:

# exim -v user@mail.ru

Далее вводим руками заголовок письма:

From: root@hostname.domain.com To: user@mail.ru Subject: test letter test ^D ^C

Тестирование доставки сообщений локальным пользователям:

# exim -v postmaster

Далее вводим руками заголовок письма:

From: root@ hostname.domain.com To: postmaster@ hostname.domain.com Subject: test letter test ^D ^C

Для сообщений, которые подозреваются в спаме удобно сначала массово,сделать -Mf, потом -Mvl, -Mvh и -Mvb для пары выбранных наугад сообщений. Если все еще невозможно с консоли определить спам ли это(например, проблемы с кодировками или есть вложения), то можно с помощью -Mar добавить себя в список получателей, и ускорить данное сообщение спомощью -M. Когда все наконец станет ясно, то либо -Mrm, либо -Mt

 

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

Просмотр кол-ва сообщений в очереди

# exim –bp

Просмотр активных отправителей

# exim -bp | awk '{print $4}' | sort | uniq -c | sort -rn

126 <> 394 name@domain.com ……………………

Подсчет кол-ва сообщений в очереди от конкретного отправителя

# exiqgrep -i -f name@domain.com | wc -l

396 Просмотр ID-сообщений от конкретного отправителя

# exiqgrep -i -f name@domain.com | less

Как правило, при просмотре тела письма мы видим, что это спам

# exim –Mvb 1VJPb5-0000Mu-5y

# exim –Mvb 1VJPbG-0000OP-IB

# exim –Mvb 1VJZ8s-0003QA-J4

Также можно просмотреть заголовок сообщения

# exim –Mvh 1VJPb5-0000Mu-5y

Логи сообщения

# exim –Mvl 1VJPb5-0000Mu-5y

Поэтому нам необходимо

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

# exiqgrep -i -f name@domain.com | xargs exim -Mrm

Просмотр доменов и кол-ва писем посланных на этот домен, но отклоненных получателем

# tail -3000 /var/log/exim_mainlog |grep 'rejected RCPT' |awk {print$4}|awk -F\[ '{print $2} '|awk -F\] '{print $1} '|sort | uniq -c | sort -k 1 -nr | head -n 5

Проверка спамят ли из /tmp или /home

# tail -f /var/log/exim_mainlog | grep tmp

# tail -f /var/log/exim_mainlog | grep home

Удаление писем ОТ или ДЛЯ <>

# exim -bpr | grep "<>" | awk '{print $3}' | xargs exim -Mrm

Удаление писем ОТ или ДЛЯ <domain.com>

# exim -bpr |grep "domain.com" | awk {'print $3'} | xargs exim -Mrm

Просмотр количества писем ОТ или ДЛЯ в очереди

# exim -bpr | grep "<*@*>" | awk '{print $4}'|grep -v "<>" | sort | uniq -c | sort –n

Просмотр IP-адресов,которые подключены на 25 порт

# netstat -plan|grep :25|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort

Просмотр кол-ва писем и доменов ,на которые отправляются эти письма.

# exim -bp | exiqsumm | more

Просмотр кол-ва замороженных сообщений

# exim -bpr | grep frozen | wc –l

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

# cd /var/spool/exim/input/

# egrep "X-PHP-Script" * -R

РЕКОМЕНДУЕМ

Файл .htaccess подробное описание, где находится, настройка и оптимизация

Файл .htaccess - это файл конфигурации, который определяет, как веб-сервер отвечает на запросы. WordPress .htaccess файл может быть использован для повышения вашего сайта производительности,...

Убираем показ ошибок на сайте при режиме работы Nginx и PHP-FPM

Столкнулся с задачей убрать ошибки при просмотре сайта, который работает в режиме nginx + php-fpm. В настройках php панели показ ошибок отключен, однако ошибки...

5 лучших плагинов для перевода сайта на WordPress, сравнение и описание

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

Новая сборка OKWP WordPress 1.9.4 для информационных сайтов

Много прошло времени, с момента последнего выхода сборки OkWP Wordpress. За это время я перебрал несколько вариантов сборки, что то добавлялось, что убирал. На...

MyISAM против Innodb MySQL Engine для WordPress что лучше и конвертация таблиц базы данных

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

Эффективные SEO-метрики для отслеживания вовлеченности и эффективности контента

Отслеживание эффективности контента связано с изучением метрики вовлечённости , который раскрывает основные проблемы, связанные с контентом. SEO является ключевым компонентом успеха онлайн-бизнеса. Таким образом,...

UDP против TCP, или Будущее сетевого стека (highload обсуждение)

Что мы знаем об IP-сетях Мы отправляем пакеты черный ящик их пересылает клиенту клиент собирает пакеты Внутри черного ящика есть уровни: Давайте сравним TCP и UDP....

Что такое HTTP/3 – описание и возможности нового протокола на основе UDP

В ноябре 2018 года в Бангкоке состоялась встреча Инженерной рабочей группы по Интернету (IETF), и был принят новый проект Интернет . Транспортный протокол QUIC, преемник HTTP/2 , был переименован в HTTP/3. HTTP/3 основан...
Справочник команд SSH для EXIM
Alecs Retin
Работаю в сфере web с 2009 года. Занимался созданием своих проектов в разных тематиках. В основном делаю сайты на Instantcms и Wordpress. Оказываю услуги разработки сайтов и стартапов, инвестирую в интернет проекты и сервисы. Более 10 лет занимаюсь Web разработкой и создание интернет проектов. Интернет магазины, информационные порталы, городские порталы. Оказываю поддержку в развитии и продвижении сайтов.

ПОХОЖИЕ МАТЕРИАЛЫ

Файл .htaccess подробное описание, где находится, настройка и оптимизация

Файл .htaccess - это файл конфигурации, который определяет, как веб-сервер отвечает на запросы. WordPress .htaccess файл может быть использован для повышения вашего сайта производительности,...

Убираем показ ошибок на сайте при режиме работы Nginx и PHP-FPM

Столкнулся с задачей убрать ошибки при просмотре сайта, который работает в режиме nginx + php-fpm. В настройках php панели показ ошибок отключен, однако ошибки...

5 лучших плагинов для перевода сайта на WordPress, сравнение и описание

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

Новая сборка OKWP WordPress 1.9.4 для информационных сайтов

Много прошло времени, с момента последнего выхода сборки OkWP Wordpress. За это время я перебрал несколько вариантов сборки, что то добавлялось, что убирал. На...

MyISAM против Innodb MySQL Engine для WordPress что лучше и конвертация таблиц базы данных

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

Эффективные SEO-метрики для отслеживания вовлеченности и эффективности контента

Отслеживание эффективности контента связано с изучением метрики вовлечённости , который раскрывает основные проблемы, связанные с контентом. SEO является ключевым компонентом успеха онлайн-бизнеса. Таким образом,...