web-dev-qa-db-ja.com

許可されたユーザーからのみ電子メールを送信するようにexim4を設定するにはどうすればよいですか?

Exim4構成のさまざまなリレー制御に頭を悩ませています。

サーバーからメールを送信したり、自宅や職場からメールを送信したりすることができます(適切なネットブロックを明示的に追加したため)。許可されていません。

私が目指しているのは、適切なユーザー名とパスワードを入力すれば、どのサーバーからでも(有効な)メールアドレスにメールを送信できることです。ここでSASLがはたらくのではないかと思いますが、現在、リレーできるドメインとリレーできるマシンとの間で混乱しています。

これを解明できる人はいますか?

[注:Ubuntuボックス、exim4のDebianスタイルの分割構成]

4
Rob Cowell

これは私のeximセットアップに似ています。ネットワーク内から任意のドメインに電子メールを送信できますが、ネットワークの外部からeximが配信するメールはローカルドメインのみですnlessユーザーが最初にeximを認証します。このようにして、最初に認証する限り、世界中のどこからでもメールサーバーを介してメールを送信できます。

私の設定の重要なセクションは次のとおりです:

domainlist local_domains = @ : example.com
domainlist relay_to_domains =
hostlist   relay_from_hosts = 127.0.0.1 : 192.168.0.0/24 : 2001:111:1111::/64

これは基本的に、eximが「ホーム」であることを知っているローカルドメインをexample.comに設定します。また、eximがメールのリレーを許可されるサブネット範囲も設定します。 relay_to_domains以外に、私がブランケットをリレーする先のドメインが他にないため、example.comは空白です。

tls_advertise_hosts = *

どのクライアントもTLSを介して認証できるように、TLSの可用性を宣伝しています。

acl_check_rcpt:
    [...]
    accept  hosts         = +relay_from_hosts
    accept  authenticated = *
    require message = relay not permitted
        domains = +local_domains : +relay_to_domains

このACLは、メールの送信先と、リレーするかどうかを決定する前にだれが送信したかについていくつかのチェックを行います。最初の行は、以前に定義された内部ネットワーク内のホストからのメールを中継します。 2行目は、認証されたユーザーからのメールを中継します。 3番目と4番目では、以前の条件が満たされていない場合は、ローカルドメインのみを中継する必要があります。

最後のセクションはオーセンティケーターなので、eximは認証されたユーザーがどのように見えるかを認識しています。鉱山は次のようになります。

plain_saslauthd_server:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
  server_set_id = $auth2
  server_prompts = :

login_saslauthd_server:
  driver = plaintext
  public_name = LOGIN
  server_prompts = "Username:: : Password::"
  # don't send system passwords over unencrypted connections
  server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}}
  server_set_id = $auth1

明らかに、これには、システム上で動作するSASLデーモンと共に、sasl機能がコンパイルされたeximビルドが必要です。私はCyrus SASLDを使用しており、メモリからインストールして忘れることはかなり簡単です。

私は実際にこれをOpenBSDで実行しているので、これらの手順がsplit-config Ubuntuボックスに正確にどのように変換されるかはわかりません。ただし、それで十分です。

5
growse