web-dev-qa-db-ja.com

exim4-「RCPT後のリモートメールサーバーからのSMTPエラー」に関する自動返信を無効にする

他のサーバーdomain2(sendmailを使用)の前のdomain1にexim4をセットアップしています。 2番目のサーバーはインターネットに直接アクセスできないため、domain1はdomain2のMXです。また、domain2は、domain1のexim4でhubbed_Hostとして設定されます。

スパマーがno_such_user @ domain2にメッセージを送信すると、そのsendmailは拒否します。

550 5.1.1 <no_such_user@domain2>... User unknown

次に、domain1のexim4は次のような自動応答を行います。

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  no_such_user@domain2
    SMTP error from remote mail server after RCPT TO:<no_such_user@domain2>:
    Host 10.0.0.1 [10.0.0.1]: 550 5.1.1 <no_such_user@domain2>... User
unknown

スパマーは偽の「from」フィールドを使用し、そのような生成されたメッセージはeximによって長期間凍結されます。

Exim4からの一部またはすべての自動返信を無効にするにはどうすればよいですか?理想的には、mailer-daemonから自動応答を生成しないよりも、「ユーザー不明」というエラーでメッセージが配信されなかった場合に、フィルターが必要です。

ありがとう!

2
osgx

このブログ投稿 があなたが探しているものだと思います。

問題:メールサーバーがメッセージを受け入れ、後でメッセージを配信できないと判断した場合、元のメッセージの送信者にバウンスメールを返送する必要があります。これらのバウンスメールは、しばしば誤った方向に向けられます。

多くのMTAには解決策があるので、eximの解決策は次のとおりです。

解決策:この解決策は、フィルタリングを使用して、返送された電子メールを破棄します。したがって、eximには中央フィルターが必要です。このようなフィルターは、exim.conf構成ファイル[…]で構成できます。

1
fission

あなたの問題は、RCPT時に受信者のアドレスを確認していないことです。これは簡単に修正できます。

受信者のコールアウト検証を使用します。あなたが話している「リモート」サーバーはあなたの管理下にあるので、これは悪用されません。

Acl_smtp_rcptに割り当てられたACLには、「verify = recipient」を実行するルールがあります。あなたのルールを知らなければ、私は何をすべきかを正確に言うことはできません。この行が「accept」ブロック内にある場合は、その直前に、「domains = domain2」制限が追加され、「verify = receive/callout」(これらの8文字を追加)を行う別のacceptブロックをほぼ同じように追加できます。最後に)。これが「accept」ではなく「require」ブロックにある場合は、そのブロックの後に、次のような拒否ブロックを追加できます。

  deny  domains = domain2
        !verify = recipient/callout

タイムアウト、延期時のアクションなどを制御するためのオプションは他にもあります。Exim仕様の§40.42「コールアウトの追加パラメーター」(システムのどこかに「spec.txt」があるはずです)を参照してください。

1
Phil P