Списки команд почтового сервера exim
Сегодня я опубликую кучу команд почтового сервера exim для проверки почтовой очереди, удаления почты и grep / search email log.
Exim – это агент пересылки почты, который используется в Unix-подобных операционных системах для отправки, получения и маршрутизации сообщений электронной почты.
Бесплатное программное обеспечение, распространяемое в соответствии с условиями Стандартной общественной лицензии (GNU), и оно стремится стать универсальным и гибким почтовым средством с обширными возможностями для проверки входящей почты. Разработан в 1995 году Филиппом Хейзелом в Кембриджском университете.
Если вы используете VestaCP или другую подобную конфигурацию, все журналы exim можно найти в /var/log/exim
/var/log/exim/main.log
1. Чтобы получить подсчитанное сообщение в очереди:
exim -bpc
2. Распечатайте список сообщений в очереди (время в очереди, размер, идентификатор сообщения, отправитель, получатель):
exim -bp
3. Распечатайте сводку сообщений в очереди (количество, объем, самый старый, самый новый, домен и итоги):
exim -bp | exiqsumm
4. Напечатайте, что сейчас делает Exim:
exiwhat
5. Проверка того, как указан адрес электронной почты:
exim -bt mail@domain.com
6. Запустите притворную SMTP-транзакцию из командной строки, как если бы она поступала с данного IP-адреса. Это покажет чеки, ACL и фильтры Exim по мере их применения. Сообщение на самом деле НЕ будет доставлено :
exim -bh XXX.XXX.XX.XX
7. Отобразите все настройки конфигурации exim:
exim -bP
Поиск в очереди с помощью exiqgrep
Exim включает в себя утилиту, которая очень удобна для просмотра очереди, которая называется exiqgrep.
1. Используйте -f для поиска в очереди сообщений от определенного отправителя:
exiqgrep -f @domaincom
2. Используйте -r для поиска в очереди сообщений для определенного получателя / домена:
exiqgrep -r @domain.com
3. Используйте -o для печати сообщений старше указанного количества секунд. Например, сообщения старше 1 дня:
exiqgrep -o 86400 [...]
4. Используйте -y для печати сообщений, которые моложе указанного количества секунд. Например, сообщения менее часа назад:
exiqgrep -y 3600 [...]
5. Используйте -s, чтобы сопоставить размер сообщения с регулярным выражением. Например, 700-799 байт:
exiqgrep -s '^7..$' [...]
Используйте -z для сопоставления только с замороженными сообщениями или -x для сопоставления только с замороженными сообщениями. Есть также несколько флагов, которые управляют отображением вывода.
6. Используйте -i, чтобы напечатать только идентификатор сообщения в результате одного из двух вышеуказанных поисков:
exiqgrep -i [ -r | -f ] ...
7. Используйте -c, чтобы напечатать количество сообщений, соответствующих одному из указанных выше поисков:
exiqgrep -c ...
8. Напечатайте только идентификатор сообщения всей очереди:
exiqgrep -i
Управление очередью
1. Запустите очередь
exim -q -v
2. Запустите запуск очереди только для локальных доставок:
exim -ql -v
3. Удалить сообщение из очереди:
exim -Mrm <message-id> [ <message-id> ... ]
4. Заморозить сообщение:
exim -Mf <message-id> [ <message-id> ... ]
5. Киньте сообщение:
exim -Mt <message-id> [ <message-id> ... ]
6. Доставьте сообщение, независимо от того, заморожено оно или нет, достигнуто ли время повтора или нет:
exim -M <message-id> [ <message-id> ... ]
7. Доставьте сообщение, но только если время повтора достигнуто:
exim -Mc <message-id> [ <message-id> ... ]
8. Принудительно завершить сообщение и отменить его как «отменено администратором»:
exim -Mg <message-id> [ <message-id> ... ]
9. Удалите все замороженные сообщения:
exiqgrep -z -i | xargs exim -Mrm
10. Удалите все сообщения старше пяти дней (86400 * 5 = 432000 секунд):
exiqgrep -o 432000 -i | xargs exim -Mrm
11. Заморозить всю почту в очереди от данного отправителя:
exiqgrep -i -f luser@example.tld | xargs exim -Mf
12. Просмотр заголовков сообщения:
exim -Mvh <message-id>
13. Просмотр тела сообщения:
exim -Mvb <message-id>
14. Просмотр журналов сообщений:
exim -Mvl <message-id>
Журналы почты Exim с Exigrep
Одна почтовая транзакция будет занимать несколько строк в файле, и не каждая строка будет содержать искомую строку поиска. Команда exigrep решает эту проблему, находя строку поиска в транзакциях, а затем тщательно собирает каждую запись журнала в отдельные завершенные транзакции.
1. Поиск сообщений, отправленных с определенного IP-адреса:
exigrep '<= .* \[112.225.12.12\] ' /path/to/exim_log
2. Поиск сообщений, отправленных на определенный IP-адрес:
exigrep '=> .* \[112.225.12.12\] ' /path/to/exim_log
Так вы ищите исходящие сообщения с символом «=>» , которые отправляются на «mail@domain.com». Канал для grep для символа «<=» будет соответствовать только строкам, содержащим информацию об отправителе, адресе «От», IP-адресе отправителя, размере сообщения, идентификаторе сообщения и строке темы, если вы включили запись темы.
3. Генерация и отображение статистики exim из лог-файла:
eximstats /path/to/exim_mainlog
4. То же, что и выше, с менее подробным выводом:
eximstats -ne -nr -nt /path/to/exim_mainlog
5.Чтобы удалить все сообщения в очереди, содержащие определенную строку в теле:
grep -lr 'a certain string' /var/spool/exim/input/ | \sed -e 's/^.*\/\([a-zA-Z0-9-]*\)-[DH]$/\1/g' | xargs exim -Mrm