Проверка работы почтового сервера Exim

Exim — это MTA ( Mail Transfer Agent ), агент передачи сообщений, в просторечии - почтовик или почтовый сервер, использующийся в операционных системах Linux, FreeBSD. Exim, весьма распространен и в некоторых операционных системах является почтовым сервером по умолчанию.

PHP скрипт для проверки работоспособности почтового сервера:

<?php
 
$testemaillist = array(
'mail1@domain1.tld',
'mail2@domain2.tld',
'mail5@domain5.tld'
);
 
for ($i=0; $i < count($testemaillist); $i++) {
if (mail("$testemaillist[$i]", "Test email for $testemaillist[$i]", "Test email for $testemaillist[$i] \n To be, or not to be, \n that is the question")) {
echo "Sent - $testemaillist[$i]<br>";
} else {
echo "Error - $testemaillist[$i]<br>";
}
}
?>

Этот скрипт попытается отправить проверочное письмо по списку адресов из массива. Измените этот список на почтовые ящики к которым у вас есть доступ и сохраните скрипт в каком-нибудь PHP файле у себя на сайте (например testmail.php) и затем запустите в окне браузера (https://mydomain.tld/testmail.php).

При успешной работе скрипта вы увидите в окне браузера список email адресов куда сервер попытается доставить почту. Далее вам нужно будет проверить указанные в скрипте почтовые ящики, чтобы убедиться что письма пришли.

Идентификаторы сообщений в очередях Exim, представляют из себя буквенно-цифровые последовательности в верхнем и нижнем регистрах: XXXXXX-YYYYYY-ZZ и используются большинством команд администрирования очереди и логирования в Exim. Для каждого сообщения создаются три файла в spool директории ( зачастую это: /var/spool ). Если вы работает с данными файлами вручную, без использования описанных ниже команд и утилит, убедитесь что обработали все три файла, например, не оставив в очереди exim только один из них, удалив остальные. Каталог /var/spool/exim/msglog содержит файлы со служебной информацией для каждого сообщения и именуются в соответствии с ID этого сообщения. Каталог /var/spool/exim/input содержат файлы заголовков и данных, к ID сообщения в имени, добавлены суффиксы -H и -D, соответственно. Кроме того в этих директориях могут появляться хэшированные подкаталоги для работы с большими почтовыми очередями.

  • Проверяем сервер на отправку почты из консоли:
# echo "test" | mail -s 'test message' email@example.com

где email@example.com адрес электронный почты, на который вы хотите отправить проверочное сообщение.

  • Опция -bt запускает exim в режиме тестирования адресов, в котором каждый параметр берётся как адрес, который будет тестироваться на доставку. Результаты пишутся на стандартный вывод. Если тест неудачен, и вызывающий - не административный пользователь, детали о ошибке не выводятся, поскольку они могут содержать секретную информацию, типа имён пользователей и паролей для поиска в БД.
exim -bt -d test@dieg.info
  • Проверить количество сообщений в очереди:
exim -bpc
  • Получить список сообщений в очереди:
exim -bp
  • Просмотреть тело сообщения с конкретным ID:
exim -Mvb email-id
  • Удалить все «замороженные» сообщения из очереди:
exipick -zi | xargs exim -Mrm
  • Полностью очистить очередь сообщений (удалить все неотправленные сообщения):
exipick -i | xargs exim -Mrm

Логи Exim находятся в каталоге /var/log/exim , чаще всего интересует файл mainlog (в нем хранятся все события почтовой службы), еще есть panic.log (там находятся сообщения об ошибках). У Dovecot же логи, как правило, пишутся в файл /var/log/maillog или /var/log/mail.

  • exiwhat - список, что делают процессы exim`a
  • exiqgrep - выбор из очереди
  • exiqsumm - суммирование очереди
  • exigrep - поиск по главному логу
  • exipick - выбор сообщений по различным критериям
  • exicyclog - ротация лог-файлов
  • eximstats - выбор статистики из логов
  • exim_checkaccess - проверка приёма адреса с данного IP
  • exim_dbmbuild - сборка файла DBM
  • exinext - извлечение информации повторов отсылки почты, удобно смотреть почему почта не отправляется. Пример использования
    exinext user@example.com

    xinext можно указать только локальную часть, без домена, и он выдаст любую информацию повторов для этой локальной части, в вашем дефолтовом домене.

  • exim_dumpdb - дамб БД подсказок
  • exim_tidydb - очистка БД подсказок
  • exim_fixdb - правка БД подсказок
  • exim_lock - блокировка файла почтового ящика (mailbox)
  • Утилита, которая могла бы использоваться на сайтах с многими MTA - exilog Tom Kistner's. Она обеспечивает визуализацию логов от многих серверов exim`a.
PQ VPS сервера в 28+ странах.