web-dev-qa-db-ja.com

電子メールヘッダーのlocalhost [127.0.0.1]

Sendmailを使用して、テキストファイルから非常に簡単なメールを送信しています。これがテキストファイルです。

to:[email protected]
from:[email protected]
subject:Testing

test test test

私が送るもの:

sendmail -t < mail.txt

私がsendmailを実行しているサーバーは、hostname.tldです。/etc/hostsは次のとおりです。

12.34.56.78     hostname hostname.tld
127.0.0.1       localhost

ここで、hostname.tldはサーバーのfqdnで、12.34.56.78はサーバーのパブリックIPです。/etc/hostnameは単にhostname.tldを含みます

メールを受信すると、次のヘッダーが表示されます。

Received: from hostname.tld (hostname.tld [127.0.0.1])

127.0.0.1は必要ありません。パブリックIPをそこに置きたいのですが、sendmailで何をしようともそれを使用できません。 /etc/mail/sendmail.mcも編集して、次の行を追加しました。

define(`confDOMAIN_NAME', `hostname.tld')dnl

しかし、それは何もしません。

私は、人々が同様の問題を抱えている多くのスレッドを読みましたが、それを解決するものは何もないようです。私に何ができる?

5
Cameron Ball

デーモンモードとMSP

上記のIPアドレスの注釈は、実際にはsendmailサーバー自体の構成ではありません。 sendmailの最新の展開を見ると、通常2つのコンポーネントに分割されています。従来のサーバー(デーモンモード)メール送信プログラムモード(MSP)で実行されている別のサーバー。これは単純なpsコマンドで確認できます。

$ ps -eaf | grep send
root     24488     1  0 21:10 ?        00:00:00 sendmail: accepting connections
smmsp    24504     1  0 21:10 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue

1行目はデーモンモードのsendmail、2行目はMSPモードのsendmailです。 sendmailを出荷するほとんどのディストリビューションはMSPバリアントをより権限の少ない特別なユーザーとして実行するため、いつでもそれらを区別できます。これは、CentOS 5.xサーバーでユーザーsmmspとして実行されているものです。

注:これは、メール送信(MSP)とメール配信(デーモンモード)の処理の役割を分離するために行われます。ユーザーは、ボックスでローカルにmailmailxなどのコマンドを使用してメールを送信しているときにMSPインスタンスに接続します。

CentOSなどのRed Hatベースのディストリビューションでsendmailを処理する場合、構成ファイルは/etc/mailにあります。この変更に関心のある2つのファイルがあります。

  • /etc/mail/sendmail.mc
  • /etc/mail/submit.mc

最初のファイルはデーモンモードサーバーを制御し、2番目のファイルはMSPサーバー用です。

ちなみに、これらの*.mcファイルは、2つのサーバーが直接使用する実際の構成ファイルではありません。一般に、sendmail構成は複雑になる可能性があります。古く、その多様性を考えると、さまざまな方法で構成できるため、これらの*.mcファイルは、実際のsendmail構成ファイルに「コンパイル」される事前構成ファイルです。これらのファイルのコンパイル済みバージョンも同じディレクトリにあります。

  • /etc/mail/sendmail.cf
  • /etc/mail/submit.cf

通常、これらの2つのファイルを直接変更するのではなく、対応する.mcファイルを使用して変更するのが賢明です。通常、.mcファイルを編集してから、/etc/mailディレクトリ内でmakeコマンドを実行します。繰り返しますが、これは私の知る限りではRed Hat主義であるため、別のディストリビューションでは状況が異なる場合があります。

注:* .mcファイルは M4 と呼ばれるマクロ言語であるため、それらをコンパイルするツールはもちろんm4と呼ばれます。次のようなコマンドを使用して、これらのファイルを手動でコンパイルできます。

$ m4 /etc/mail/submit.mc > /etc/mail/submit.cf

これは、Red Hatが/etc/mailディレクトリに提供する、豪華なmakeおよびMakefileファイルで行われていることです。

Submit.cfの変更

それでは、どのような変更を行う必要がありますか?次の行をsubmit.mcファイルに追加する必要があります。

CLIENT_OPTIONS(`Family=inet, Address=<your ip here>, Name=MTA')dnl

<your ip here>と書かれている場所にIPを必ず追加してください。この変更を行ったら、submit.mcファイルを再生成する必要があります。

$ cd /etc/mail && make

.cfファイルを再生成したら、sendmailを再起動する必要があります。

$ /etc/init.d/sendmail restart
-or-
$ /etc/init.d/sendmail reload

最終製品

上記の変更を行った後、次のヘッダーが残ります。この例では、たとえば、外部IPアドレスは50.122.22.45でした。

Return-Path: <[email protected]>
Received: from mail.sdom.com (mail.sdom.com [50.122.22.45])
    by sdom.com (8.14.3/8.14.3) with ESMTP id r5J188Gx018193
    for <[email protected]>; Tue, 18 Jun 2013 21:08:08 -0400
Received: (from root@localhost)
    by mail.sdom.com (8.14.3/8.14.3/Submit) id r5J15ua4018000;
    Tue, 18 Jun 2013 21:05:56 -0400
Date: Tue, 18 Jun 2013 21:05:56 -0400
Message-Id: <[email protected]>
to:[email protected]
from:[email protected]
subject:Testing
X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,BAYES_00
    autolearn=ham version=3.2.5
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on mail.sdom.com
X-Greylist: Sender is SPF-compliant, not delayed by milter-greylist-4.0 (sdom.com [127.0.0.1]); Tue, 18 Jun 2013 21:08:09 -0400 (EDT)

test test test

参考文献

3
slm

これは私の解決策でした:

/ etc/hosts:

12.34.56.78     hostname.tld
127.0.0.1       localhost

/etc/mail/submit.mc:

FEATURE(`msp', `[12.34.56.78]', `25')dnl

(当初は、パブリックIPではなく127.0.0.1でした)

/etc/mail/sendmail.mc:

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=12.34.56.78')dnl
DAEMON_OPTIONS(`Family=inet,  Name=MSP-v4, Port=submission, M=Ea, Addr=12.34.56.78')dnl

(これらの行は両方とも127.0.0.1でしたが、これを変更すると、sendmailはlocalhostではなくパブリックIPでリッスンします)。

次のコマンドを実行します。

make -C /etc/mail

Sendmailをリロードします。

service sendmail reload

テストメールを送信した後:

sendmail -t < mail.txt

私が今嫌いだったヘッダーは言う:

Received: from hostname.tld (hostname.tld [12.34.56.78])

そして、ヘッダーのどこにもlocalhostまたは127.0.0.1についての言及はありません

2
Cameron Ball