Como determinar qual usuário enviou um email específico com postfix?

9

Temos um servidor de postfix que requer autenticação para a retransmissão de SMTP por meio dele. Nós usamos caixas de correio virtuais no banco de dados MySQL.

Uma mensagem foi retransmitida por nosso sistema e precisamos determinar qual das nossas contas de usuário foi usada para enviá-la.

Os cabeçalhos das mensagens contêm:

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)

Não temos um usuário chamado "Usuário" e o endereço IP não é o mesmo do qual estaríamos enviando e-mails. Gostaria de descobrir quais de nossas contas de usuário o remetente autenticou ao enviar a mensagem.

Existe uma maneira de rastrear isso?

    
por Nick 05.07.2012 / 05:23

1 resposta

15

Se você solicitar o ID da mensagem (7BA184B4AD4 no seu caso) em /var/log/mail.log , deverá encontrar uma linha de registro indicando o sasl_username . Por exemplo:

% 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

Editar: Se você definir a opção smtpd_sasl_authenticated_header em /etc/postfix/main.cf O postfix adicionará o nome de usuário do SASL ao cabeçalho Received nos e-mails. Note que este cabeçalho pode ser adulterado, então o acima é a única maneira confiável de determinar qual usuário enviou a mensagem.

smtpd_sasl_authenticated_header = yes
    
por 05.07.2012 / 05:37