web-dev-qa-db-ja.com

Exim4 SMTPサーバーでは、認証されていないユーザーが電子メールを送信できます

専用サーバーでDebian7.x AMD64 + Exim 4.82を使用していますが、共有ホスティングで動作するSMTPサーバーもあります。いくつかの特別な配信スクリプト/フィルターを備えたSMTPをVPSにセットアップしたいと思います(たとえば、一部のアカウントのすべての受信メールのコピーを送信します)

現在、VPSの状況は次のとおりです。

  • 認証なしでスマートホスト経由でローカル(インバウンド)メールを送信します
  • 認証なしでスマートホスト経由ですべての送信メールを送信します<==不要な動作
  • sMTPクライアントの認証タイプが「通常のパスワード」に設定されている場合、SMTPクライアントは資格情報を要求し、電子メールを正しく配信します
  • 上記のすべてのケースは、クライアント側でTLS暗号化が有効になっているかどうかに関係なく同じように動作します

/etc/exim4/update-exim4.conf.conf

dc_eximconfig_configtype='smarthost'
dc_other_hostnames='myhost.mycompany.com; localhost'
dc_local_interfaces='127.0.0.1; xxx.xxx.xxx.xxx' <=== public IPv4 address
dc_readhost='mycompany.com'
dc_relay_domains='*'
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='smtp.external.com'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'

/etc/exim4/passwd.clientコンテンツ:

*:smtp.external.com:secret

自己署名証明書を生成し、TLS /etc/exim4/exim4.conf.localmacrosを有効にしました

MAIN_TLS_ENABLE = 1

私はplan_textとplain_loginを使おうとしましたが、現在はsaslauthdを使用しています(以前にpostfixでテストしたので、動作すると確信しています)。

exim -bP authenticator_list出力:

plain_saslauthd_server
login_saslauthd_server
cram_md5
plain
login

telnet myhost.mycompany.com 25出力:

EHLO test
250-myhost.mycompany.com Hello xxxxxxxxx [xxx.xxx.xxx.xxx]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-STARTTLS
250 HELP
...
AUTH PLAIN <random string>
503 AUTH command used when not advertised

オーセンティケーターがアドバタイズされていない(EHLO応答に250-AUTH ...行がない)ためだと思いますが、デフォルトでは、すべての標準オーセンティケーターにこの条件があります

.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_in_cipher}{}{}{*}}
.endif

したがって、server_advertise_condition条件を処理するには、AUTH_SERVER_ALLOW_NOTLS_PASSWORDSファイルに/etc/exim4/exim4.conf.localmacrosを追加する必要があると想定しますが、クライアントでTLS暗号化の使用が有効になっていない場合は、とにかく考慮されません(私はそうですか?).

だから私は今何をすべきかについて少し混乱しています..私は私の構成が次のように機能することを望みます:

  • ローカルのfetchmail(メール)リクエストは、認証なしでローカルにルーティングされます(つまり、cronジョブ)
  • リモート(プレーンまたは暗号化、問題ではありません)リクエストは、任意の宛先(同僚のラップトップ)から外部SMTP(スマートホスト)を介してルーティングする他の宛先(顧客)に機能する必要があります必須ユーザー認証、それ以外の場合はリクエストを拒否/拒否します
1
Salaros

*からdc_relay domainsを削除します。これにより、誰でも中継できます。ローカルネットワークを中継する場合は、そのIP範囲をdc_relay_netsに入力します。

認証されたユーザーがどこからでもメールを送信できるようにする場合は、認証されたユーザーの承認ルールが必要です。デフォルトの構成には、認証されたユーザーのチェックをバイパスする適切なルールを含めて、ユーザーがローカルネットワーク上にいるかのように電子メールを送信できるようにする必要があります。

AUTH_SERVER_ALLOW_NOTLS_PASSWORDS/etc/exim4/exim4.conf.localmacrosに追加すると、安全でない接続で認証をテストできるようになります。ネットワークを盗聴できる人は誰でもあなたの資格情報を取得できるため、これを許可しないことをお勧めします。

このマクロを追加して、リモートユーザーの送信ポートを有効にすることができます。送信ポートは、リモート送信の優先ポートです。

 daemon_smtp_ports = 25 : 587

私のデフォルト構成では、サーバー側のオーセンティケーターはコメントアウトされています。私はそれらをプレーンテキストとmd5認証にうまく使用しました。ユーザーIDとパスワードは2番目と3番目のフィールドです。

3
BillThor