Exim4構成のさまざまなリレー制御に頭を悩ませています。
サーバーからメールを送信したり、自宅や職場からメールを送信したりすることができます(適切なネットブロックを明示的に追加したため)。許可されていません。
私が目指しているのは、適切なユーザー名とパスワードを入力すれば、どのサーバーからでも(有効な)メールアドレスにメールを送信できることです。ここでSASLがはたらくのではないかと思いますが、現在、リレーできるドメインとリレーできるマシンとの間で混乱しています。
これを解明できる人はいますか?
[注:Ubuntuボックス、exim4のDebianスタイルの分割構成]
これは私の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ボックスに正確にどのように変換されるかはわかりません。ただし、それで十分です。