Постоянно при работе с exim приходится искать на других сайтах информацию по работе с очередью и остальным командам MTA Exim. Сайты меняются, уходят, приходят и надеяться можно только на себя. Решил у себя сделать заметку по наиболее часто используемым мною командам.

Управление Exim

Проверка конфигурации, вывод версии, вывод включенных в сборку модулей
exim -bV

Чем в данный момент занят MTA Exim?
exiwhat

Проверка маршрутизации почты по адресу электронной почты
exim -bt email@example.com

Генерирование и отображение статистики Exim из лог-файла
eximstats /path/to/exim_mainlog

Проверка SMTP соединения из коммандной строки для определенного IP-адреса. Результат покажет через какие проверки будет проходить письмо с данного IP-адреса, через какие ACL и фильтры. Необходимо заменить x.x.x.x на необходимый IP-адрес.
exim -bh x.x.x.x

Отображение всех настроек Exim
exim -bP

Информация по очередям (Queue) Вывести информацию по колличеству писем в очереди
exim -bpc

Вывести список сообщений в очереди (время в очереди, размер, идентификатор сообщения, отправитель, получатель)
exim -bp

Отображение всех сообщений в очереди (количество, объем, старых, новых, области, и итоги)
exim -bp|exiqsumm

Поиск сообщений в очереди
Поиск в очереди сообщения от определенного отправителя
exiqgrep -f [user]@example.com

Поиск в очереди сообщений для конкретного получателя/домена
exiqgrep -r [user]@example.com

Вывод только Message-ID, как результат одного из двух поисковых запросов выше
exiqgrep -i [ -r | -f ] ...

Вывод количества сообщений, как результат одного из поисковых запросов выше
exiqgrep -c [ -r | -f ] ...

Вывод только Message-ID очереди
exiqgrep -i

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

Просмотр тела сообщения в очереди
exim -Mvb

Просмотр лога сообщения
exim -Mvl

Управление очередью
Отправка всех frozen писем
exiqgrep -zi | xargs exim -M

или
exim -bp | grep -i frozen | awk '{ print $3 }' | xargs exim -M

Начать процесс выполнения очереди
exim -q -v

Начать процесс выполнения только для локальных получателей
exim -ql -v

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

Удалить все сообщения, которые старше, чем Х секунд из очереди (например, 5 дней будет 432 000 секунд)
exiqgrep -o 432000 -i | xargs exim -Mrm

Заморозить все сообщения в очереди от отправителя
exiqgrep -i -f email@example.com | xargs exim -Mf

Просмотр заголовков сообщения в очереди
exim -Mvh

Просмотр теля сообщения в очереди
exim -Mvb

Просмотр лога сообщения
exim -Mvl

Удалить все замороженные сообщения из очереди
exiqgrep -zi | xargs exim -Mrm

Удалить все сообщения из очереди (плохая идея)
# exiqgrep -i | xargs exim -Mrm
# exipick -i | xargs exim -Mrm
# exim -bpr | awk {'print $3'} | xargs exim -Mrm

retry time not reached for any host after a long failure period

1
2
3
4
cd /var/spool/exim/db
rm -f retry retry.lockfile
rm -f wait-remote_smtp wait-remote_smtp.lockfile
service exim restart

или

1
2
3
4
5
/usr/sbin/exim_tidydb -t 1d /var/spool/exim retry > /dev/null
/usr/sbin/exim_tidydb -t 1d /var/spool/exim reject > /dev/null
/usr/sbin/exim_tidydb -t 1d /var/spool/exim wait-remote_smtp > /dev/null
/scripts/courierup — force
/scripts/eximup –force

Дебаг

Проверка mysql lookups

1
exim -be '${lookup mysql{SELECT goto FROM alias WHERE address ="'${quote_mysql:$local_part@$domain}'" AND active="'1'"}}'