Команды Exim

Команды Exim

В моей статье «Команды Exim» я привел некоторые команды, которые можно использовать для управления MTA Exim и так же очередями электронной почты. Все команды что я приведу ниже, должны быть выполнены из под ROOT-а (от суперпользователя root). По мере возможности, я возможно буду добавлять новые команды ( которых нет), но основные приведены ниже.

Управление Exim-ом.

Запуск

# /etc/init.d/exim start

Чтобы остановить, выполните:

# /etc/init.d/exim stop

Перезапустить Exim:

# /etc/init.d/exim restart

Или еще можно выполнить по другому:

# service exim start|stop|restart

Выясняем чем же занят в данный момент Exim (его MTA).

# exiwhat

Чтобы проверить маршрутизацию почты по заданному емейлу.

# exim -bt user@my_mail.com

Генерируем и выводим статистику Exim из лог файла.

# eximstats /путь__к_exim_mainlog

Можно проверить SMTP соединение из прямо из командной строки для конкретного IP-адреса.

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

# exim -bh 145.56.66.32

Вывести все настройки Exim

# exim -bP

Узнать сколько писем в очереди.

# exim -bpc

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

# exim -bp

Вывести всех сообщений которые находятся в очереди (их количество, объем, старых или новых, их области).

# exim -bp|exiqsumm

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

# exiqgrep -f user@my_mail.com

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

# exiqgrep -r user@my_mail.com

Вывод только Message-ID (или как в примере выше).

# exiqgrep -i [ -r | -f ] ...

Показать количество сообщений (или как в примере выше).

# exiqgrep -c [ -r | -f ] ...

Показать только Message-ID очереди

# exiqgrep -i

Вывести заголовков сообщения которые в очереди

# exim -Mvh

Просмотреть тела сообщения которые находятся в очереди

# exim -Mvb

Чтобы посмотреть логи сообщения

# exim -Mvl

Запустим процесс на выполнения в самой очереди

# exim -q -v

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

# exim -ql -v

Отправить одно сообщения принудительно

# exim -M  email_id

А просмотреть ID:

# tail -f /var/log/exim_mainlog| grep vitaly.n@gvocom.com
# cat /var/log/exim_mainlog | grep 1ZAglY-0000dr-SY

1ZAglY-0000dr-SY — Это и есть ID сообщения.

Принудительно запустить другую очередь на выполнение

# exim -qf

Принудительно запустить другую очередь на выполнение и попытаться очистить замороженные сообщения

# exim -qff

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

# exim -bpr | grep "<" | wc -l

Показать сколько замороженных писем в очереди

# exim -bpr | grep frozen | wc -l

Удалить замороженные сообщения

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

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

# exim -Mrm

Удаляем все сообщения из очереди которые старше чем определенной даты.

Допустим, 5 дней будет 432 000 секунд:

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

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

# exiqgrep -i -f email@example.com | xargs exim -Mf

Удалить все сообщения из очереди (довольно плохая идея)

# exiqgrep -i | xargs exim -Mrm

Параметр «-o» указывает искать сообщения, старее, указанного количества секунд. В примере, сообщения старее 1 дня:

# exiqgrep -o 86400 [...]

Параметр «-y» ищет сообщения свежее указанного количества секунд. В примере, найти сообщения, пришедшие в течении последнего часа:

# exiqgrep -y 3600 [...]

Параметр «-s» даст возможность искать сообщения по размеру, которые совпадают с заданным регулярным выражением:

# exiqgrep -s '^7..$' [...]

Удалить сообщения которые идут от конкретного домена:

# exim -bp| exiqgrep -i -f DOMAIN_for_DELETE| xargs -n1 exim -Mrm

Удалить сообщения которые идут на конкретного домена:

# exim -bp| exiqgrep -i -r DOMAIN_for_DELETE| xargs -n1 exim -Mrm

Скрипты.

1. Чтобы получить отсортированный список электронной почты отправителя в Exim c почтовой очереди. Он покажет количество писем которые в очереди.

# exim -bpr | grep "<" | awk {'print $4'} | cut -d "<" -f 2 | cut -d ">" -f 1 | sort -n | uniq -c | sort -n

Вы получите результат, как как следует:

       1 captain@my_test_domain.com
       3 100500@test100500.com
       4 root@my_test_domain.org
     124 captain@your_domain

Но это не самый простой способ, а проще всего — это выполнить команду:

# exim -bp|exiqsumm

2. Следующие скрипты будут проверять скрипт, кто отсылает спам-сообщения:

# grep "cwd=/home" /var/log/exim_mainlog | awk '{for(i=1;i<=10;i++){print $i}}' | sort | uniq -c | grep cwd | sort -n

# awk '{ if ($0 ~ "cwd" && $0 ~ "home") {print $3} }' /var/log/exim_mainlog | sort | uniq -c | sort -nk 1

# grep 'cwd=/home' /var/log/exim_mainlog | awk '{print $3}' | cut -d / -f 3 | sort -bg | uniq -c | sort -bg

Вы получите результат первых двух сценариев. Третий сценарий просто к дополнению от первых двух скриптов:

8 cwd=/home/captain/public_html
9 cwd=/home/your_user_name/public_html/www/ololo
13 cwd=/home/test_user/public_html
99 cwd=/home/test_usr666/public_html
138 cwd=/home/test_user100500/public_html/web2
790 cwd=/home/test_user_6/public_html/captain

3. Иногда нужно выяснить кто же рассылает спам или скрипт. Следующий сценарий поможет вам найти точное названия скрипта, который отправляет спам-письма:

# ps auxwwwe | grep <your_user> | grep --color=always "<location of script>" | head

или

# ps auxwwwe | grep captain | grep --color=always "/home/captain/public_html/wp/wp-content/themes/twentyeleven" | head

Как только вы найдете точный сценарий, следующий сценарий поможет вам найти IP-адрес, который отвечает за спам. Вы получите список IP-адресов из следующего скрипта.Адрес IP-адреса, который имеет большое количество доступа, скорее всего — результат рассылки спама. Вы можете заблокировать IP-адрес в csf или apf брандмауэре.

# grep "<script_name>" /home/your_user/access-logs/my_test_domain.com | awk '{print $1}' | sort -n | uniq -c | sort -n

4. Следующая команда, которая покажет вам сценарий, который используете скрипт для отправки электронной почты. Если это отсылается от РНР, то его можно найти:

# egrep -R "X-PHP-Script"  /var/spool/exim/input/*

5. Это покажет 50 доменов, которые используют почтовый сервер:

# eximstats -ne -nr /var/log/exim_mainlog

6. Это покажет из какой пользовательской папки идет спам, так что вы можете легко отследить и заблокировать его.

# ps -C exim -fH ewww | grep home

7. Это покажет  IP-адреса, которые связан с сервером через порт 25.

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

8. Для того, чтобы найти «когото»  кто отсылает спам, выполните следующую команду

# ps -C exim -fH ewww | awk '{for(i=1;i<=40;i++){print $i}}' | sort | uniq -c | grep PWD | sort -n

9. Выше команда действует, только если спам в настоящее время в стадии отправки. Если спам выполнился, используйте следующую команду.

# grep "cwd=" /var/log/exim_mainlog | awk '{for(i=1;i<=10;i++){print $i}}' | sort | uniq -c | grep cwd | sort -n

10. Следующий скрипт даст суммарный ответ о почте с почтовой очередью.

# exim -bpr | exiqsumm -c | head

Вот такие команды exim. Если я не озвучил ( не нашел) все, то пожалуйста, сообщите мне и я дополню данный список. А на этом, я завершаю свою статью «Команды Exim».

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.