acctfind

Поиск по файлам учёта
Найти конкретное письмо

Ищет записи в файлах учёта по значениям полей и печатает у найденных выбранные поля — стандартным выводом, CSV, TSV, HTML, XML, «красивым» XML или своим форматом.

На Unix программа называется pmtaacctfind и лежит в /usr/sbin; на Windows — acctfind в каталоге программ.

Отбор — по видам записей и по полям. –delivered, –bounced, –status и –mta выбирают виды записей; без них поиск идёт среди доставок и отказов. –match сравнивает поле с регулярным выражением Perl или со строкой без учёта регистра, а короткие ключи вроде –to и –dsnStatus делают то же для одного поля.

Отвечает на вопрос «что стало с письмом такому-то получателю», не выгружая учёт целиком. С учётом в JSON не работает — только с CSV.

Главная ловушка — искать не в том файле. Учёт поворачивается, и письмо «не нашлось» чаще потому, что искали в сегодняшнем файле, а оно осталось в повёрнутом. Файлов можно назвать несколько сразу.
Что делает Хаб. Не вызывает: события учёта приходят в Хаб потоком через вебхук, а сводки «Статистики учёта» он считает на узле другой программой — pmtastats.
Рекомендуемые значения

Когда звать:

Вопрос Эта ли команда
что стало с письмом одному получателю да — –to
кто отбился с постоянной ошибкой да — –bounced –dsnStatus m/^5\./
сводка по доставкам и отказам нет — pmtastats
что сейчас в очереди нет — list
Имя программы на Unix, виды записей, –match, форматы вывода и то, что учёт в JSON не поддерживается, — из руководства (§ 12.5). Разграничение вопросов наше.
Пример в конфигурации
# что стало с письмами одному получателю: исход, время в очереди и доставки
pmtaacctfind --iso-times --to test@example.com --output tsv[to,dsnAction,timeQueued,timeDelivered] /var/log/pmta/acct-*.csv
Пример руководства с другим адресом: tsv[…] задаёт порядок полей в строке вывода.
жёлтым — — имена директив, голубым — блоки. Так же они подсвечены и в тексте карточки.
Совместимость
PowerMTA 6.0
описана в руководстве этой версии · платформа: любая
С какой версии директива доступна, вендор указывает не для всех — здесь пометки нет. Имя встречается и в издании руководства 5.0.
Как проверить на узле
Проверить, что нужные файлы учёта на месте:
ls -l /var/log/pmta/acct*
head -1 "$(ls -t /var/log/pmta/acct-*.csv | head -1)"
Первая строка CSV — имена полей: их и называют в –output и –match.
В Хабе
Цена ошибки
безопасно: неверное значение ничего не ломает
Сценарии
Разобраться с доставляемостью