Como faço para registrar o tráfego smtp criptografado por tls?

2

Gostaria de saber o que meu postfix local diz para o Amazon SES smtpd após o STARTTLS. Em texto simples, então eu posso entender isso. O Amazon SES requer o TLS, por isso não posso desativá-lo temporariamente.

Atualmente, registro as duas pernas do tráfego com este truque:

mkfifo proxypipe
cat proxypipe | nc -l 11111 | tee -a inflow | nc email-smtp.us-east-1.amazonaws.com smtp | tee -a outflow 1>proxypipe

e depois eu tenho postfix falar com localhost: 11111 em vez de email-smtp.us-east-1.amazonaws.com:25. Isso produz uma boa transcrição, contanto que eles estejam falando em texto claro. Assim que o STARTTLS aparece, tudo fica sem sentido, é claro.

Existe algum truque que eu possa rotear através de openssl, ou pós-processo usando openssl ou algo assim, para descobrir o que exatamente eles disseram uns aos outros? A pesquisa no Google não produziu nenhuma resposta.

    
por Johannes Ernst 21.08.2012 / 22:34

2 respostas

8

Não se preocupe em farejar a conexão de rede; como @ voretaq7 explicou, você não pode. Em vez disso, faça o log postfix da conexão adicionando o endereço IP do servidor SMTP remoto a debug_peer_list .

E se isso não lhe der detalhes suficientes para entender o que está acontecendo, defina smtp_tls_loglevel 4 para obter um despejo completo de tudo que passou pelo fio.

Quando terminar, altere sua configuração novamente. Você não quer deixar depuração por mais tempo do que o absolutamente necessário.

    
por 21.08.2012 / 23:47
5

Permita-me reformular sua pergunta:

I want to stick something in the middle of an TLS-encrypted connection that shows me the cleartext that's being sent.

. . Bem, não seria muito seguro agora, seria? Quero dizer, o ponto principal do TLS é evitar exatamente o que você está tentando fazer! - Então, não, o que você está pedindo NÃO é possível, nem é em qualquer lugar perto do nível de registro que qualquer administrador sensato desejaria.
Tudo o que você quer saber é com quem você se conectou (o sistema remoto), o que você disse a eles (e-mail de A para B) e o que eles disseram (OK, Diferido, Rejeitado).

Se você realmente quer espionar a conexão TLS, você tem que enganar o seu servidor para se conectar a um proxy que apresenta um certificado SSL falso (para o qual você tem a chave), o proxy pode descriptografar os dados (e registrá-lo ) e, em seguida, criptografá-lo novamente para encaminhar para os servidores reais da Amazon.
Você poderia montar uma fera com os subsistemas s_client e s_server do OpenSSL, mas a implementação dessa besta é deixada como um exercício para o leitor.

    
por 21.08.2012 / 23:32