DebianボックスでExim4のprimary_hostnameを変更するにはどうすればよいですか?


24

サーバーからのHELOの受け入れを拒否するメールを配信しようとしているリモートSMTPサーバー:

504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname

どうやら、私のExim4サーバーlocalhostはFQDNとして送信します。ネットと多数の構成ファイルを検索すると、HELO中にFQDNとして送信された値がprimary_hostname構成変数から取得されることがわかりました。

私の質問は、Debianシステムでこの変数を変更する正しい方法は何ですか?Exim4の設定ファイルに値を単純にハードコーディングできると思いますが、値が自動的に対応する/etc/mailnameか、他の中央集権化された名前の設定に対応していると、より意味がありそうです。

私の質問に対する答えは、Debian wikiのこのテキストにあると感じています

EHLO / HELOでEximが使用する名前は、構成オプションから取得されますprimary_hostname。Debianのexim4デフォルト設定は設定されませんprimary_hostname。Eximは、デフォルトでuname()に設定してホスト名を見つけます。その呼び出しが1つのコンポーネントのみを返す場合、gethostbyname()またはgetipnodebyname()を使用して完全修飾ホスト名を取得します。

Eximがlocalhost.localdomainとしてHELOを使用している場合、Debianインストーラーのいくつかのバージョンで作成された/ etc / hostsの設定が間違っている可能性があります。この場合、/ etc / hostsを修正してください。

残念ながら、Linuxサーバーの管理に十分な知識がなく、このすべての意味を正確に知ることはできません。

回答:


21

/ etc / hostsファイルには、少なくとも2つのレコードが必要です。最初のレコードの形式は次のとおりです。

<IP_ADDRESS> <HOST_FQDN> <HOSTNAME>

2番目の形式は次の形式である必要があります。

127.0.0.1 localhost

また、/ etc / hostnameファイルにサーバーのFQDNが含まれており、実行hostname -fするとサーバーのFQDNが返されることを確認する必要があります。これらすべてが正しいことを確認し、Eximを再起動すると、HELOが正しく表示されるようになります。


/ etc / hostnameをローカルマシン名からFQDNに変更しました。hostname -fまだ「localhost」を報告します。あなたの答えの/ etc / hostsに関する部分はバグがあるようです-最初のレコードはどのように見えるはずですか?
ヨルンシューローデ

1
一方でhostname -f、まだ「ローカルホスト」を報告し、への/ etc /ホスト名の変更は、トリックをしたようだ-私は今、私のメールを配信することができています。私はまだあなたの投稿の欠けている部分を見たいです:)
ヨルンシューローデ

おっとっと!フラッブのフォーマット。修正:-)
ポールラスロップ

1
/etc/hostname通常、DebianシステムではFQDNは含まれず、短いホスト名のみが含まれます。
ロダン

さて、最初の行/etc/hostsであるかもしれない127.0.0.2 mydomain.com myhostname127.0.0.2作品だけでなく、127.0.0.1ループバックがクラスAのネットワークであるため、)。あなたは、おそらく一つに2行を組み合わせることができ127.0.0.1 mydomain.com myhostname localhostますが、localhostための標準的なホスト名で127.0.0.1、そうではありませんか?ホスト名としてFQDNではなくホスト名があることを考えると、すべてです。また、変更/etc/hostnameはすぐには有効になりませんhostname myhostname。またはサーバーを再起動します。
x-yuri

8

単一の構成ファイルを使用する場合、PRIMARY_HOST_NAME変数を目的の名前に設定します。

/etc/exim4/exim4.confの例:

PRIMARY_HOST_NAME = mybox.mydomain.com

またはMAIN_HARDCODE_PRIMARY_HOSTNAME、分割ファイル構成を使用している場合は、update-exim4.conf.confで設定します。

安全のために、eximを再起動します。


リストされたホストは引用符で囲むことができないことに注意してくださいHELO 'mybox.mydomain.com'
mkomarinski

1
ドキュメントにこの「PRIMARY_HOST_NAME」変数名に関する言及が見つかりません。これはどこで見つけましたか?
ジョシップロダン

Debianでは、update-exim4.conf設定を変更した後に実行する必要があります。通常、その後の再起動は不要です。
x-yuri

...まあ、exim一般的にリロードせずに設定の変更に気づくようです。しかし、デーモン自体はリロードするまで設定を再読み込みしないので、リロードする方が間違いなく安全です。次に、上の行/etc/exim4/exim4.confだけを含めることができるように聞こえますが、ファイルを作成した瞬間は無視されます.../var/lib/exim4/config.autogenerated
x-yuri

...「SMTP受信またはキュー実行のためにEximが開始した分岐プロセスは、新しい構成ファイルを使用しますが、元のメインのexim-daemonは引き続き古い構成ファイルを使用します。」したがって、単一の構成ファイルの場合/etc/exim4/exim4.conf.localmacros、分割にはを使用するのが最適/etc/exim4/conf.d/main/000_localmacrosです(maindir 内のファイルが最初に処理されます)。そして、変更を行ってからupdate-exim4.conf+ systemctl reload exim4を実行します。
x-yuri

4

exim4のインストール中に、プライマリホスト名が求められます。コマンドを実行できます

sudo dpkg-reconfigure exim4-config

もう一度プロンプトを確認します。

私の知る限り、「分割構成」(/etc/exim4/conf.dの下の小さなファイルがたくさんある)をすでに使用していて、プロンプトが表示されたときにそれを固守することを選択した場合、dpkg-reconfigureは既存の構成の変更は、プロンプトが表示される設定以外に行われますが、これまでどおり、安全のために最初にバックアップを作成する必要があります。


2
「メール名[これは、単一の完全修飾ドメイン名(FQDN)でなければなりません」]を要求しているようです。ただし、この設定はすでに正しいため、HELOには「localhost」と表示されているようです。
ヨーンシューローデ

あなたが話しているのは、驚き、驚き、…に行くメール名です/etc/mailnameデフォルトでは、非修飾アドレスを修飾するために使用されます。ユーザー名のみで構成されるもの。からドメイン名を追加します/etc/mailname。結果のアドレスはFromヘッダーで使用されます。
x-yuri

2

primary_hostname変数は、システムの完全修飾ドメイン名(FQDN)に応じて充填されています。Debianおよび関連システムでは、これは通常、/etc/hostnameおよび/etc/hostsファイルのコンテンツを使用して形成されます。hostnameファイルは、短いホスト名(例が含まれている必要がありfoo)、およびhostsファイルには、解決エントリ含まれている必要がありますfoofoo.bar.baz、すなわち、ホスト名、ドメインサフィックスは、(通常はDNSエントリに一致する)とを。

コマンドからの出力hostname(パラメーターなし)は前者hostname -fを返し、出力は後者を返します。

通常、ホスト名ファイルはインストール時に書き込まれます。hostsファイルを編集して、デフォルトのlocalhostレコードの横に他のレコードを1つ含めることができます。形式は次のとおりです。

<IP address> <hostname FQDN> <hostname>

3つの列はスペースまたはタブで区切る必要がありますが、重要ではありません。IPアドレスはlocalhostのように127.0.0.1にすることができますが、ホスト名の部分はシステムのホスト名と一致し、中央の部分はFQDN、つまりドメインサフィックスを持つホスト名である必要があります。

行が機能していることを確認するには、単に実行hostname -fして、サーバーのFQDNが返されることを確認します。

最後に、Eximを再起動します。例:

sudo service exim4 restart

その後、HELOを適切に表示し始める必要があります。その変数は次を実行することで確認できます:

/usr/sbin/exim4 -bP primary_hostname

(注:私はもともと2009年からの回答の編集としてこれを行いましたが、却下されました。元々修正していたことは、デフォルトのlocalhostレコードを繰り返す必要はなく、追加の内容を説明するだけです。 IPアドレスを使用できます; FQDNとは何かを説明します; exim自体を検証する方法を説明します。


/usr/sbin/exim4 -bP primary_hostname動作しません。HELOホスト名を確認するには、テスト用の電子メールをport25の認証チェッカーに送信するか、オリジナルを確認できる他のメールボックスに送信します。詳細はこちら。回答を更新することを検討してください。
x-yuri

私のDebian安定版マシン(stretch)で問題なく動作します。あなたにはうまくいかないことを正確に説明してもらえますか?exim.org/exim-html-current/doc/html/spec_html/…のドキュメントに、デフォルトhelo_dataがであることが明確に記載されていることに注意してください$primary_hostname。Debianシステムでは、REMOTE_SMTP_HELO_DATA変数を使用してそれをオーバーライドできますが、プライマリホスト名を適切に設定するだけの場合、それは必要ありません。
ジョシップロダン

私は試みたと信じており、議論をしないことについて不平を言った。しかし、今それを再現することはできません。「プライマリホスト名を適切に設定した場合」について、ホスト名が何にでも解決する必要があることは一般的に受け入れられていません。「eximが期待する方法でホスト名を設定したら...」と言って、そのままにしておきましょう:)
x-yuri

申し訳ありませんが、10年以上前に行われたdebian-develの長い議論の臨時の結論を額面通りに受け取ることは賢明ではないと思います。そのようなことに関するポリシー文書を指摘しておけば、もっと役立つでしょう。
ジョシップロダン

それは私が見つけることができる最高です。何かもっと良いことやあなたの言葉の証拠を見つけることができたら、私に言ってくれたら嬉しいです。今のところ私が言えることは、最近でもホスト名を入れない人がいるということだけです/etc/hosts。そして、私が尋ねるのは、一般的に受け入れられていないものを適切に呼び出さないことです。
x-yuri

1

/ etc / hostsに同じ文字列を追加した後、hostname -fはFQDNを返します


言い換えれば、myhostnameに行く/etc/hostname(続きますhostname myhostname)。に127.0.0.1 mydomain.com myhostname.com localhost行き/etc/hostsます。また、念のためリロードeximします。
x-yuri

0

私は同じ問題を抱えています。一部のメールは送信時に失敗するため、メールのホスト名を変更する必要があります。このエラー:

host receiver.server.com [200.200.200.200]: 550 <info@sender.server.com>: Sender address rejected: Domain not found

だから私/etc/exim.configはパラメータprimary_hostnameに変更します

このファイルのコード:

smtp_connect_backlog = 50
smtp_accept_max = 100

#primary_hostname = myhostname.com 
deliver_queue_load_max = 3

ああ、この投稿は "primary_hostname"で私を助けてくれて、今では私のeximはこれまで以上にうまく機能します:)

0

WHMでExim構成マネージャーに移動->詳細エディター

[追加の構成設定を追加](大きな青いボタン)が見つかるまで下にスクロールし、クリックします。

新しい行に、[primary_hostname] = [mydomain.com]を追加します

一番下までスクロールして[保存]をクリックします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.