Один из лучших способов отследить письмо - это изучить логи почтового сервера. В данной заметке речь пойдет о разборе файла журналов exim. Стоит отметить, что предварительный отбор необходимо сделать с помощью утилиты exigrep, она позволяет собрать в воедино все сообщения о пути следования письма в пределах вашего сервера. Перемещение сообщенияРассмотрим вариант успешного прохождения письма:
2012-09-21 22:35:13 [19942] SMTP connection from [212.158.ccc.ddd]:39655 I=[95.170.ccc.ddd]:25 (TCP/IP connection count = 1)
2012-09-21 22:35:14 [28651] 1TF5G6-0007S7-Bw <= munin@domain.ru H=host.domain.ru [212.158.ccc.ddd]:39655 I=[95.170.ccc.ddd]:25 P=esmtps X=TLSv1:DHE-RSA-AES256-SHA:256 CV=no S=742 id=E1TF5G5-0000dd-6G@host.domain.ru T="Munin notification for host.domain.ru" from <munin@host.domain.ru> for monitoring@mydomain.ru 2012-09-21 22:35:14 [28652] 1TF5G6-0007S7-Bw => monitoring <monitoring@mydomain.ru> F=<munin@host.domain.ru> P=<munin@host.domain.ru> R=virtual_user T=virtual_localdelivery S=862 QT=0s DT=0s 2012-09-21 22:35:14 [28652] 1TF5G6-0007S7-Bw Completed QT=0s
Начало строк
Каждая строка начинается с временной отметкой: 2012-09-21 22:35:14
сразу же за ней идет ID процеса Exim: [28651]
а следом внутренний ID полученного письма: 1TF5G6-0007S7-Bw
Утилита exigrep собирает разбросанные строки в файле логов Exim воедино именно по ID письма. В нагруженном сервере, строки относящиеся к одному и тому письму могут идти разрозненно.
Строка информации о SMTP соединении
Здесь более или менее все понятно: нам сообщается с какого хоста:порта [212.158.ccc.ddd]:39655 произошло подключение к нашему серверу I=[95.170.ccc.ddd]:25. Чаще всего эту строку вы не увидите, и в выводе exigrep будет всего три строки. Первая строка “<=”Первая строка начинается со знака “<=”, который означает, что в этой строке содержится информация о прибытие письма на наш сервер. Сразу же за этим знаком идет адрес электронной почты, с которой это письмо было отправлено. Далее с “H=” указывается имя хоста, с которого пришло письмо, в квадратных скобках следом идет IP адрес сервера отправителя, и следом TCP порт. Информация о сервере получателя начинается с “I=” и обозначения схожи. После обозначений сервера отправителя “H” и получателя “I” идет информация о протоколе, который использовался для доставки письма. В данном случае это esmtps. Обратите внимание, что “P” в этой строке означает протокол только потому, что это строка с “<=”, в случае, если знак был бы “=>”, то за буквой “P=” следовал бы “return path” полученного сообщения. Буква “X” сообщаем нам и шифре, который использовался для установления соединения. В большинстве случаев, это не та информация, которая может потребоваться при решении вопросом с прохождением почты. “CV” символизирует статус проверки сертификата, а “S=742” обозначает размер письма. Далее, информация в “id=” относится к ID сообщения, т.е. идентификатору письма, который был сформирован на сервере отправителя и добавлен в почтовые заголовки. “T” (topic) - это тема письма, и наконец строка завершается “for monitoring@mydomain.ru”, сообщая нам для кого предназначено данный email, т.е. адрес получателя. Вторая строка “=>”Вторая строка с “=>” очень простая для трактовки, ничего сложного нет. Стоит еще раз отметить, что буквы здесь в совокупности с “=>” могут обозначать совсем иное нежели в предыдущей строке с “<=”. Первое, что мы видим здесь после знака, это имя и адрес получателя письма, дальше “F=” - это адрес отправителя. Адрес для возврата письма идет сразу после “P=”.
Буквой “R=” обозначен (в нашем примере “virtual_user”) локальный идентификатор роутера, который и стал причиной записи этой строки в журнал Exim. Транспорт, с помощью которого было доставлено письмо обозначен буквой “T” (здесь “virtual_localdelivery”). Опять размер “S=”, время ожидания в очереди “QT” и время ожидания доставки “DT”. Третья строкаСообщение об успешной доставке.
Дополнительные ссылки- http://www.exim.org/exim-html-current/doc/html/spec_html/ch51.html
- http://kb.liquidweb.com/how-to-read-an-exim-maillog/
- http://kb.deru.net/?View=entry&EntryID=93
|