Главная | Контакты



Главная > Программы > Exim

Exim команды

Получение базовой информации по Exim
Поиск в очереди с помощью утилиты exiqgrep
Операции с очередями писем
Примеры в удалении спамерской почты из очереди

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

Проверить правильность синтаксиса конфигурационного файла и узнать с поддержкой каких опций собран exim:
# exim –bV
Печать списка сообщений в очереди:
# exim –bp
Просмотр активных отправителей:
# exim -bp | awk '{print $4}' | sort | uniq -c | sort -rn
Вывод суммарной информации:
# exim -bp | exiqsumm
Тестирование маршрута доставки до указанного адреса:
# exim -bt user@mail.ru
Иммитировать 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 -x
Просмотр только идентификаторов всех сообщений:
# exiqgrep -i

Операции с очередями писем

Следующие команды могут пригодиться в процессе обработки очереди писем (исполняются от имени суперпользователя)

Получить число сообщений, находящихся в очереди:
# exim -bpc
Принудительно повторить попытку отправки конкретного письма (с конкретным ):
# exim -M 
Выполнить обработку очереди:
# exim -qf
Выполнить обработку очереди и попытаться сбросить "замороженные" письма:
# exim -qff
Просмотреть логи для указанного сообщения:
# exim -Mvl 
Просмотреть тело сообщения:
# exim -Mvb 
Просмотреть заголовки сообщения:
# exim -Mvh 
Удалить сообщение из очереди, не отправляя сообщений об ошибке:
# exim -Mrm 
Удалить из очереди и отправить отправителю диагностику о невозможности доставки:
# exim -Mg 
Удалить из очереди все сообщения, старше чем 86400 секунд (1 сутки):
# exiqgrep -o 86400 -i | xargs exim -Mrm
Очистить все замороженные сообщения из очереди:
# exipick -zi | xargs exim -Mrm
Очистить все сообщения из очереди:
# exipick -i | xargs exim -Mrm
Принудительная рассылка всей почты в очереди. (Запуск очереди):
# exim -q -v
Запуск очереди только для локальных доставок:
# exim -ql -v
Удалить сообщение из очереди:
# exim –Mrm 
Удалить все заблокированные сообщения из очереди:
# 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 
Разблокировать сообщение:
# exim -Mt 
Доставить сообщение, вне зависимости от состояния блокировки или времени повторной доставки (принудительная доставка сообщения):
# exim –M 
Доставить сообщение, только если достигнуто время для повторной доставки:
# exim -Mc 
Принудительно остановить сообщение с формулировкой «отменено администратором»:
# exim –Mg 
Просмотр заголовки сообщений:
# exim -Mvh 
Просмотр тела сообщений:
# exim -Mvb 
Просмотр логов сообщения:
# exim -Mvl 
Добавить получателя в сообщение:
# exim -Mar  
Изменить адрес отправителя сообщения:
# exim -Mes  
Поиск сообщений отправленных с определенного 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
<-- postmaster@ hostname.domain.com router = localuser, transport = local_delivery
Проверка распознавания адреса 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 –bpc
Просмотр активных отправителей:
# 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
1VJPb5-0000Mu-5y
1VJPbG-0000OP-IB
1VJZ8s-0003QA-J4
……………………
Как правило, при просмотре тела письма мы видим, что это спам:
# 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
Удаление писем ОТ или ДЛЯ
# 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

Главная > Программы > Exim