Назад | Перейти на главную страницу

Как определить, какой пользователь отправил конкретное письмо с постфиксом?

У нас есть постфиксный сервер, который требует аутентификации для ретрансляции SMTP через него. Мы используем виртуальные почтовые ящики в базе данных MySQL.

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

Заголовки сообщения содержат:

Received: from User (c-76-109-241-139.hsd1.fl.comcast.net [xx.109.xxx.139]) 
    by ourserver.com (Postfix) with ESMTPA id 7BA184B4AD4; 
    Tue,  3 Jul 2012 05:42:59 -0400 (EDT)

У нас нет пользователя с именем «Пользователь», и IP-адрес не тот, с которого мы бы отправляли почту. Я хотел бы узнать, в какой из наших учетных записей пользователей аутентифицировался отправитель при отправке сообщения.

Есть ли способ отследить это?

Если вы введете grep для идентификатора сообщения (7BA184B4AD4 в вашем случае) в /var/log/mail.log вы должны найти строку журнала, указывающую sasl_username. Например:

% zgrep 07A1753F /var/log/mail.log*
Jul  4 19:47:58 mammon postfix/smtpd[4936]: 07A1753F: client=c-69-181-123-456.hsd1.ca.comcast.net[69.181.123.456], sasl_method=PLAIN, sasl_username=mgorven

Редактировать: Если вы установите smtpd_sasl_authenticated_header вариант в /etc/postfix/main.cf Postfix добавит имя пользователя SASL в Received заголовок в письмах. Обратите внимание, что этот заголовок может быть изменен, поэтому описанный выше единственный надежный способ определить, какой пользователь отправил сообщение.

smtpd_sasl_authenticated_header = yes