Exim - это MTA (приложение, которое направляет и передает электронную почту с одного узла в сети на другой), который широко используется в Unix-подобных операционных системах. Его гибкость и конфигурационные возможности делают его популярным выбором для построения почтовых серверов.
Ниже приведены некоторые команды, используемые для решения популярных задач.
Запустить:
# /etc/init.d/exim start
Остановить:
# /etc/init.d/exim stop
Перезапустить:
# /etc/init.d/exim restart
Перезапустить по другому:
# service exim start|stop|restart
Узнать что делает Exim в данный момент:
# exiwhat
Проверить маршрутизацию почты по заданному email:
# exim -bt user@my_mail.com
Вывести статистику Exim из лог файла:
# eximstats /путь__к_exim_mainlog
Проверить SMTP соединение для конкретного IP-адреса (покажет как проходит письмо с IP-шника, через какие ACL и фильтры):
# exim -bh 145.56.66.32
Узнать версию Exim:
# exim -bV | head -n 1
Вывести все настройки 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
Получить количество писем в очереди:
# exim -bpr | grep "<" | wc -l
Показать возвращенные письма (из-за неправильного адреса получателя или возвращенные по другим причинам):
# exiqgrep -f '^<>$'
Показать сколько замороженных писем в очереди:
# exim -bpr | grep frozen | wc -l
Найти сообщения, старее, указанного количества секунд. Например, сообщения старее 1 дня:
# exiqgrep -o 86400
Найти сообщения свежее указанного количества секунд. Сообщения, пришедшие в течении последнего часа:
# exiqgrep -y 3600
Найти сообщения по размеру, которые совпадают с заданным регулярным выражением (в примере от 100K и больше):
# exiqgrep -s '^\d{3,}K|\d{1,}M$'
Запустить процесс на выполнения в самой очереди:
# exim -q -v
Запустить процесс выполнения самой очереди для локальных получателей:
# exim -ql -v
Принудительно запустить другую очередь на выполнение:
# exim -qf
Принудительно запустить другую очередь на выполнение и попытаться очистить замороженные сообщения:
# exim -qff
Отправить одно сообщение принудительно:
# exim -M email_id
Работа с сообщениями
Вывести заголовки сообщения по его ID:
# exim -Mvh <message-id>
Просмотреть тело сообщения по его ID:
# exim -Mvb <message-id>
Посмотреть логи сообщения:
# exim -Mvl <message-id>
Посмотреть информацию по сообщению на конкретный email:
# tail -f /var/log/exim_mainlog| grep vitaly.n@gvocom.com # cat /var/log/exim_mainlog | grep 1ZAglY-0000dr-SY
Добавить получателя в сообщение:
# exim -Mar <message-id> <address> <address> ...
Поменять отправителя сообщения:
# exim -Mes <message-id> <address>
Удаление сообщений
Удалить замороженные сообщения:
# exim -bpr | grep frozen | awk {'print $3'} | xargs exim -Mrm
Удалить сообщение из очереди по его ID:
# exim -Mrm <message-id>
Удалить все сообщения из очереди которые старше указанного количества времени (1 день = 86400 сек.):
# exiqgrep -o 86400 -i | xargs exim -Mrm
Заморозить все сообщения в очереди от отправителя:
# exiqgrep -i -f email@example.com | xargs exim -Mf
Удалить все сообщения из очереди:
# exiqgrep -i | xargs exim -Mrm
Удалить сообщения которые идут от конкретного домена:
# exim -bp| exiqgrep -i -f DOMAIN_for_DELETE| xargs -n1 exim -Mrm
Удалить сообщения которые идут на конкретный домен:
# exim -bp| exiqgrep -i -r DOMAIN_for_DELETE| xargs -n1 exim -Mrm
Скрипты Exim.
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
Материал с сайта https://linux-notes.org/komandy-exim/
Комментарии к статье:
Добавить комментарий: