Como o servidor de correio sabe qual tipo de cliente está sendo autenticado?

1

Meu aplicativo java hospedado na nuvem é autenticado com êxito em nosso servidor de e-mail em outro host (um VPS gerenciado) em mail.example.com. O servidor em mail.example.com aceita e-mail para nossos usuários em [email protected]. No entanto, o reencaminhamento é recusado e as tentativas de enviar correio para o endereço [email protected] são rejeitadas.

No entanto, minha pergunta não é "Como corrijo isso?" Tenho certeza de que é praticamente o mesmo problema que este: Como corrigir o Postfix '' Relay Access Denied '? . Deixarei isso para os administradores que gerenciam mail.example.com - provavelmente eles adicionarão o IP do host do aplicativo à configuração mynetworks no arquivo main.cf.

Minha pergunta é: Como o servidor de e-mail sabia que o aplicativo java não era meu cliente de e-mail? Eu testei a configuração de e-mail do aplicativo java com o ID do usuário e a senha que uso todos os dias para meu próprio e-mail. Eu uso um laptop e me conecto a e-mails de todos os lugares - cafés, casas, hotéis, etc.

O que torna meu aplicativo java diferente de mim no meu laptop conectado à Starbucks?

    
por marfarma 22.06.2010 / 20:56

1 resposta

2

Você meio que tocou no seu comentário acima; Basicamente, a primeira coisa em uma conexão é emitir um comando HELO (smtp) ou EHLO (esmtp) do cliente para o servidor. O problema é que, agora, você não sabe o que o example.com tem em seu arquivo de configuração de mensagens.

O que eu faria para depurar é configurar seu próprio MTA (exim, postfix, etc.) em um servidor em algum lugar e aumentar a saída de log para capturar seu cliente normal e suas sessões de envio de aplicativo java e comparar o que cada MUA é enviando para o servidor, especialmente aquele campo HELO / EHLO. Alternativamente, se a configuração de um servidor de e-mail rápido for demais para você, você poderia usar o tcpdump no host e capturar os pacotes brutos de saída e visualizá-los no Wireshark para ler as cargas úteis.

Como exemplo, aqui está a configuração padrão do Exim fora da caixa em relação a essa informação:

  # Hosts are required to say HELO (or EHLO) before sending mail.
  # So don't allow them to use the MAIL command if they haven't
  # done so.

  deny condition = ${if eq{$sender_helo_name}{} {1}}
       message = Nice boys say HELO first

  # Use the lack of reverse DNS to trigger greylisting. Some people
  # even reject for it but that would be a little excessive.

  warn condition = ${if eq{$sender_host_name}{} {1}}
       set acl_m_greylistreasons = Host $sender_host_address lacks reverse DNS\n$acl_m_greylistreasons

  accept

Você também pode verificar se o seu aplicativo Java está usando o mesmo tipo de autenticação do seu cliente regular - talvez seu servidor de email reaja de maneira diferente se um estilo PLAIN ou LOGIN for usado em vez de, digamos, CRAM-MD5. Isso é de responsabilidade exclusiva do administrador do MTA, então novamente você está à mercê deles.

    
por 07.08.2010 / 16:08