web-dev-qa-db-ja.com

Exim4は、ローカルホストを除くすべてのホストにTLSを必要とします

私のウェブメールはSTARTTLSをサポートしておらず、ローカルホストの全員のリレーを有効にしたいので、ローカルホストから接続が確立された場合、EximにTLSなしでのみAUTHPLAINとLOGINをアドバタイズさせたいと思います。

つまり、接続されているクライアントに応じて、次の可能性を宣伝するためのeximが必要です。

  • localhost(TLSの前):
    • AUTH PLAIN
    • AUTH LOGIN
    • STARTTLS
  • その他のホスト(TLSより前):
    • STARTTLS
  • その他のホスト(TLS後):
    • AUTH PLAIN
    • AUTH LOGIN

最終的に、ログイン情報がループバックまたは暗号化された接続を介してのみ送信されるようにすることができます。

これを行うための正しい行は、authenticatorsセクションの全員にTLSを要求する場所だと思います。

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

しかし、現在接続されているクライアントを確認する方法が見つかりません。私の最善の推測$Host(一部の構成例で使用されているようです)は常に未定義です。

これを機能させる方法はありますか?

4
Hurzelchen

auth_advertise_hostsは次のように設定する必要があります。

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

送信者がTLSを使用する場合、auth_advertise_hostslocalhost : *に展開されます。それ以外の場合、auth_advertise_hostslocalhost : nopeに展開されます。ローカルホストはとにかく認証するように招待されますが、他のホストはTLSが使用されている場合にのみ認証されます(パターンnopeは実際のホストと一致しないため)。

3
Kondybas