Como obtenho um log de sessão SMTP no Exim?

4

Às vezes, ao depurar problemas de SMTP, o maillog padrão não é suficiente e eu preciso ver a sessão SMTP completa. No postfix, adiciono o IP problemático a "debug_peer_list", que habilita o log da sessão e outras informações de depuração apenas para esse IP.

Existe algo semelhante no exim? Eu encontrei apenas referências a "executando o exim no modo de depuração" que aparentemente faz com que todas as sessões sejam registradas, o que eu receio escrever rapidamente toneladas de logs desnecessários, causar E / S de disco pesado e dificultar encontrar a transação em questão

TL; DR: Qual é a melhor maneira de obter um log de transações SMTP completo de um IP (ou endereço de remetente) específico?

Estou executando o exim 4.80 (um servidor cpanel).

    
por Gryphius 31.12.2012 / 13:10

4 respostas

7

Você pode facilmente ver os comandos recebidos do sistema remoto com algumas adições de ACL:

# Global hosts setting, list of IP addresses you want to see SMTP commands
hostlist debug_hosts = xxx.xxx.xxx.xxx : yyy.yyy.yyy.yyy

# early in acl_smtp_helo
warn hosts     = +debug_hosts
     log_write = DEBUG: $smtp_command

# early in acl_smtp_mail
warn hosts     = +debug_hosts
     log_write = DEBUG: $smtp_command

# early in acl_smtp_rcpt
warn hosts     = +debug_hosts
     log_write = DEBUG: $smtp_command

Mas se você quiser ver nos registros o que seu lado está dizendo também, isso não é possível dentro do exim. Suas opções são restritas a qualquer ferramenta de depuração de rede fornecida pelo sistema, como tcpdump, tshark ou (meu favorito) ngrep.

Por exemplo, se você tem um cliente que reclama, ele não pode enviar e-mails através de seu servidor. Aqui está uma entrada simples que mostra por que eles não conseguem enviar:

# ngrep -q port 25 host 208.54.85.254
<snip>
T 208.54.85.254:15084 -> 208.89.138.22:25 [AP]
  AUTH PLAIN kkvdsoirDSAasdfrASDF4swSD23DAGAG6893Mgss==..                            

T 208.89.138.22:25 -> 208.54.85.254:15084 [AP]
  535 Incorrect authentication data..

Espero que um deles seja útil para você.

    
por 31.12.2012 / 17:06
2

Possivelmente não é o que você procura, mas o wireshark / tshark é ótimo para isso. Na linha de comando:

tshark -w exim.pcap -i <interface> host <target IP>

Em seguida, abra o arquivo no Wireshark e você poderá ler toda a conversa SMTP como quiser: Clique com o botão direito do mouse em um pacote correspondente e selecione 'Exibir conversa TCP'.

Se você quiser vê-lo como acontece, apenas omita o argumento -w do acima, embora isso possa ser bastante spam com grandes e-mails.

    
por 31.12.2012 / 15:08
0

Eu não acho que eu tenha o mesmo problema, mas executar a transação SMTP é uma ferramenta de depuração útil.

Por exemplo, se você estiver recebendo mensagens SMTP do host mysender.example.com, 93.184.216.34, com um endereço hospedado pelo seu MTA ([email protected]) em algum endereço externo (por exemplo, @ example .com) ficaria assim: digite cada linha interativamente, você verá que a saída é muito detalhada:

exim -bhc 93.184.216.34
EHLO mysender.example.com
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
DATA
.

Existem outras opções que as pessoas podem usar dependendo da configuração, mas isso está funcionando para mim. Feliz por aceitar as correções de pessoas que falam SMTP / Exim com mais fluência.

[Extraído do link

    
por 23.02.2018 / 23:39
0

O especificador de controlo de ACL debug pode ser �il para isto, e. você poderia usar a mesma abordagem em a resposta acima , mas usando

control = debug/opts=+all

em vez de logwrite . Observe que a saída vai para o arquivo debuglog no diretório de log por padrão, ou seja, algo como /var/log/exim4/debuglog .

    
por 07.06.2018 / 18:55

Tags