私のサーバーからのHELOの受け入れを拒否するメールを配信しようとしている一部のリモートSMTPサーバー:
504 5.5.2 <localhost>: Helo command rejected: need fully-qualified hostname
どうやら、私のExim4サーバーはFQDNとしてlocalhost
を送信します。ネットと一連の構成ファイルを検索したところ、HELO中にFQDNとして送信された値がprimary_hostname
構成変数から取得されていることがわかりました。
私の質問は、Debianシステムでこの変数を変更する正しい方法は何ですか? Exim4構成ファイルの値を単純にハードコード化できると思いますが、値automagicallyが/etc/mailname
に対応していると、IMHOの方が意味をなさそうです。または他のいくつかの一元化された名前の構成。
私の質問に対する答えは Debian wiki のこのテキストにあると感じています。
EHLO/HELOでEximが使用する名前は、構成オプション
primary_hostname
から取得されます。 Debianのexim4デフォルト設定はprimary_hostname
を設定しません。次に、Eximはデフォルトでuname()を使用してホスト名を検索します。その呼び出しが1つのコンポーネントのみを返す場合、gethostbyname()またはgetipnodebyname()を使用して完全修飾ホスト名を取得します。Exim HELOがlocalhost.localdomainである場合は、Debianインストーラーの一部のバージョンで作成された/ etc/hostsの設定が間違っている可能性があります。この場合、/ etc/hostsを修正してください。
残念ながら、私はLinuxサーバーの管理に慣れていないので、これが何を意味するのかを正確に知ることはできません:(
/ etc/hostsファイルには、少なくとも2つのレコードが必要です。最初のレコードは次の形式である必要があります。
<IP_ADDRESS> <Host_FQDN> <HOSTNAME>
2番目の形式は次のとおりです。
127.0.0.1 localhost
また、/ etc/hostnameファイルにサーバーのFQDNが含まれていること、およびhostname -f
を実行するとサーバーのFQDNが返されることを確認する必要もあります。これがすべて正しいことを確認し、Eximを再起動すると、HELOが正しく表示されるようになります。
単一の構成ファイルを使用する場合は、PRIMARY_Host_NAME変数を目的の名前に設定します。
たとえば/etc/exim4/exim4.confで:
PRIMARY_Host_NAME = mybox.mydomain.com
またはセットMAIN_HARDCODE_PRIMARY_HOSTNAME
update-exim4.conf.confで、分割ファイル構成を使用している場合。
安全のため、eximを再起動してください。
プライマリホスト名は、exim4のインストール中に要求されます。コマンドを実行できます
Sudo dpkg-reconfigure exim4-config
もう一度プロンプトを確認します。
私の知る限り、すでに「分割構成」(/etc/exim4/conf.dの下にある多くの小さなファイル)を使用していて、プロンプトが表示されたときにそれを使用することを選択した場合、dpkg-reconfigureは要求された設定以外の既存の構成変更ですが、いつものように、安全のために最初にバックアップを作成する必要があります。
primary_hostname
変数は、システムの完全修飾ドメイン名(FQDN)に従って入力されます。 Debianおよび関連システムでは、これは通常、/etc/hostname
および/etc/hosts
ファイルの内容を使用して形成されます。ホスト名ファイルには短いホスト名(たとえばfoo
)が含まれている必要があり、ホストファイルにはfoo
をfoo.bar.baz
に解決するエントリ、つまりドメインサフィックス(通常はDNSエントリ)。
コマンドhostname
からの出力(パラメーターなし)は前者を返し、hostname -f
の出力は後者を返します。
ホスト名ファイルは通常、インストール時に入力され、ホストファイルを編集して、デフォルトの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レコードを繰り返す必要がなかったため、追加する内容を説明するだけです。 be;使用できるIPアドレスの説明、FQDNの説明、exim自体の確認方法の説明)
/ etc/hostsに同じ文字列を追加した後、hostname -fはFQDNを返します
私は同じ問題を抱えています。一部のメールが送信されたときに失敗するため、メールのホスト名を変更する必要があります。このエラーは:
Host receiver.server.com [200.200.200.200]: 550 <[email protected]>: 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
wHMでExim構成マネージャーに移動->詳細エディター
「追加の構成設定」(大きな青いボタン)が見つかるまで下にスクロールして、クリックします。
新しい行に、[primary_hostname] = [mydomain.com]を追加します
一番下までスクロールして、[保存]をクリックします。