550 relay not permitted
これは、私のDebianノートブックからExim4から送信されたEメールが返送されたときに表示されるエラーメッセージです。
奇妙なことに、最初の電子メールだけが返されます。 2回目以降の電子メールはリレーを通過し、問題なく宛先に到達します。ただし、ノートブックを再起動すると、再起動後に最初の電子メールが返送されます。
ポート587では、STARTTLS以降のリレーはプレーンテキストパスワードで保護されます。 X.509 証明書はヘビ油ではなく実際の証明書です。私は中継サーバーとラップトップを管理しています。重要な場合は、リレーサーバーもDebianでExim4を実行しています。 Postfixは関係ありません。
起動するたびにダミーの電子メール(または単にSMTP EHLO?)を送信するようにラップトップを設定すると、問題が解決する可能性があると思いましたが、解決された動作は奇妙に見えます。混乱しています。この問題を解決するために次に調査する必要があることをご存知でしたら、アドバイスをいただけますか?
答え1
電子メールのタイムアウトは、デーモンが最初にIPv6を試みるために発生する可能性があります。
IPv6プロトコルスタックの実装基本的にIPv4スタックの優先順位を指定するため、プログラム/デーモンが通信を試みるときにターゲットにパブリックIPv4アドレスとIPv6アドレスの両方がある場合は、最初にIPv6アドレスを使用しようとします。
パブリックIPv6がなくても、IPv6ローカルホストとリンクローカルアドレスがあります。
今回が初めてではありませんたぶん前回ではないかもしれません。時間が経つと、私はインターネットデーモンが最初にリンクローカルアドレスを送信元IPアドレスとして使用して他のアドレスと通信しようとし、タイムアウト後にのみ割り当てられた時間/試行が残っている場合はデータ転送に戻ることができることを発見しました。 IPv4 宛先として。 (このため、過去に運営していたISPでDNSや電子メールの問題を経験したことがあります。)
disable_ipv6=true
したがって、eximの場合は、非分割または分割構成スキームを使用するかどうか、またはディレクティブを使用してアプリケーション/デーモンレベルでIPv6を無効にすることができます。/etc/exim4/exim4.conf.template
/etc/exim4/update-exim4.conf.conf
~からEximインターネットメーラー - 第14章 - 主な構成
無効_ipv6目的:mainタイプ:ブール値デフォルト:false
このオプションがtrueに設定されている場合、EximバイナリがIPv6をサポートしてもIPv6アクティビティは発生しません。 AAAAレコードは照会されず、local_interfacesにリストされているすべてのIPv6アドレス、手動でルーティングされたルーターデータなどは無視されます。 IPリテラルが有効になっていると、IPリテラルルータはIPv6リテラルアドレスの処理を拒否します。
別のアプローチは、IPv4 アドレスにのみバインドすることです。欠点は、設定でIPv4アドレスをハードコードする必要があることです。:
local_interfaces = <; 127.0.0.1 ; \
192.168.23.65
システム自体はIPv6を積極的に使用しないため、次のようになります。
ファイルの最後の行に追加され、デフォルトではIPv4に優先順位が付けられます。/etc/gai.conf
precedence ::ffff:0:0/96 100
デフォルトでは、IPv6スタックを無効にするために追加されました/etc/sysctl.conf
(カーネル3からサポートされている設定)。
net.ipv6.conf.all.disable_ipv6=1
sysctlは起動時に適用されます。始める前に 有効にするには:
sudo sysctl -p
これをIPv6ディセーブルと呼んでも、モジュールはロードされ続け、インターフェイスにIPv6アドレスがなくても、IPv6ソケットに接続されているアプリケーションを引き続き表示できます。 IPv6カーネルモジュールがロードされないように、IPv6を無効にするオプションをカーネルに渡すこともできます。編集する/etc/default/grub
:
GRUB_CMDLINE_LINUX="ipv6.disable=1"
その後、grubがある場合はそれを適用します(grubパーティションが異なる場合もない場合もあります。ARMサーバーにはそのパーティションがなく、カーネルオプション用に別のファイルを編集する必要がありました)。
sudo update-grub
sudo grub-install /dev/sda
アプリケーションレベルでIPv6を無効にするには、1つ以上のデーモンを設定する必要があります(xinetd
インストールした場合)。
答え2
@RuiFRibeiroの答えが重要です。まず読んでください。ただし、この回答を理解した後に役立つ可能性がある追加情報がいくつかあります。
中継ホストがメールを中継する前にラップトップ自体の認証を必要とする場合(中継ホストはおそらくそうでなければならない)、ラップトップでExim4を設定する必要があります。常に身元を確認してください中継サーバーへ。
リレーサーバーは「スマートホスト」とも呼ばれます。何と呼んでも問題はここにあります。 Notebook Exim4のデフォルトの動作は、[i]メールを送信する前に認証を試みることですが、これが失敗した場合は[ii]認証されていないメールを送信します。
設定に失敗すると、電子メールが返送され、永久に失敗します。もちろん、あなたはそれが決して[ii]に属していないと思うかもしれませんが、明らかにあなたの場合には時々そうです。
修正は転送/30_exim4-config_remote_smtp_smarthostExim4構成セクション(ファイル内のマイシステム)/etc/exim4/exim4.conf.template)。このセクションで、次から始まるセクションを見つけます。
remote_smtp_smarthost:
このセクションでは、次のように始まる行を見つけることができます。
hosts_try_auth =
一部のものは記号に従いますが、注意を引くのは記号です=
。hosts_try_auth
次に変更してください。
hosts_require_auth =
ロゴ以降は変更はありません=
。
その結果、[i]が失敗するたびにアウトバウンドメール配信が失敗し、[ii]がメールに到達できなくなります。これはどのように役に立ちますか? [ii]の失敗とは異なり、[i]の失敗は次のようになるので役に立ちます。一時的な、永久的ではありません。表示された変更を実行すると、システムは認証なしで放棄するのではなく、認証を再試行して失敗に応答します。これがあなたが望む行動です。
構成変更をコミットする方法
設定ファイルを変更するだけでは問題は解決しません。たとえば、一見曖昧ですが、実際には重要なDebianコマンドを実行して変更をコミットするには、exim4-configを使用する必要がありますdpkg-reconfigure -phigh exim4-config
。構成変更をコミットした後に実際にサーバーを再起動する必要があるかどうかはわかりませんが、常に再起動します。再起動するには、コマンドを使用してくださいinvoke-rc.d exim4 restart
。 [ところで、初心者なら、新しい起動のためにシステムを再起動する方がより自信を持っているかもしれません。すべて。私も初心者のときにこれをしたので、私はせいにしませんが、単一のサービスを再起動するために再起動するのは本当にDebianではありません。あなたは良いロープと機器を備えたロッククライマーに似ています。最終的に機器を信頼する時がいつであるかがわかります。いつかは、常に再起動するのではなく、重要なコマンドであるInvoke-rc.d(8)を快適に使用する方法を学ぶ必要があります。 ]
シンボルの詳細については、hosts_require_auth
Exim4ソフトウェアに付属の詳細仕様書を参照してください。
(参考までに私はOPです。質問を投稿したときに答えが足りませんでした。