Exim4 requer TLS para todos os hosts, mas localhost

4

Como meu webmailer não suporta STARTTLS e desejo habilitar a retransmissão para todos em localhost, gostaria que o Exim anunciasse AUTH PLAIN e LOGIN somente sem TLS se a conexão fosse estabelecida a partir do localhost.

Então, em outras palavras, eu gostaria de ter o exim para anunciar as seguintes possibilidades, dependendo do cliente conectado:

  • localhost (antes do TLS):
    • AUTH PLAIN
    • AUTH LOGIN
    • STARTTLS
  • qualquer outro host (antes do TLS):
    • STARTTLS
  • qualquer outro host (após o TLS):
    • AUTH PLAIN
    • AUTH LOGIN

Para que, no final, eu possa garantir que as informações de login sejam transmitidas somente por meio de loopback ou por meio de uma conexão criptografada.

Meu palpite é que a linha correta para fazer isso seria onde exigiríamos TLS de todos na seção authenticators :

plain:
  public_name = PLAIN
  server_advertise_condition = ${if !eq{$tls_cipher}{}{yes}{no} }
  # ...

Mas não consigo encontrar uma maneira de verificar qual cliente está conectado no momento. Meu melhor palpite $host (que parece ser usado em alguns dos exemplos de configuração) é sempre indefinido.

Alguma idéia de como eu poderia fazer isso funcionar?

    
por Hurzelchen 04.08.2014 / 19:08

1 resposta

3

Você precisa definir auth_advertise_hosts de tal forma:

. . . . . .
daemon_smtp_ports    = 25 : 465 : 587
tls_advertise_hosts  = *
tls_on_connect_ports =      465 : 587
auth_advertise_hosts = localhost : ${if eq{$tls_cipher}{}{nope}{*}}
. . . . . .

Se o remetente usar o TLS auth_advertise_hosts será expandido para o localhost : * . Caso contrário, auth_advertise_hosts será expandido para o localhost : nope . Localhost será convidado a autenticar de qualquer maneira, enquanto outros hosts somente quando eles forem usados TLS (porque o padrão nope não corresponderá a nenhum host real).

    
por 05.08.2014 / 23:28