引用する

引用する

私は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

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

人々は同様の問題を抱えていますが、解決策がないような投稿をたくさん読んでいます。どうですか?

答え1

デーモンモードと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)とメッセージ転送(デーモンモード)処理の責任を分離するために行われます。ユーザーは、mail同じコマンドを使用してメールを送信すると、MSPインスタンスにローカルに接続します。mailx

CentOSなどのRed Hatベースのディストリビューションでsendmailを処理すると、設定ファイルは次の場所にあります/etc/mail。変更したいファイルが2つあります。

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

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

ただし、これらの*.mcファイルは両方のサーバーで直接使用される実際の構成ファイルではなく、通常構成が複雑になる可能性がsendmailあります。古くて汎用性があることを考えると、さまざまな方法で設定できるため、これらのファイルは実際の設定ファイルに「*.mcコンパイル」できる事前設定ファイルです。sendmailこれらのファイルのコンパイル済みバージョンも同じディレクトリにあります。

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

.mc通常、これら2つのファイルを直接変更せずにそれらを変更することをお勧めします。通常、.mcファイルを編集してからディレクトリ内でコマンドを実行しますmake/etc/mail私が知っている限り、これは再びredhat注意なので、別のディストリビューションを使用すると状況が変わる可能性があります。

メモ:* この.mcファイルは次のマクロ言語で構成されています。M4そのため、当然これをコンパイルするツールをいいますm4。次のコマンドを使用して、これらのファイルを手動でコンパイルできます。

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

これはRed Hatがカタログで提供するすべてのアドオンですmakeMakefile/etc/mail

Submit.cfへの変更

では、どのような変化を与えるべきでしょうか?submit.mcファイルに次の行を追加する必要があります。

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

表示される場所にあなたのIPを追加してください<your ip here>。このように変更したら、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

引用する

答え2

これが私の解決策です。

/etc/ホスト:

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

送信したメールを再読み込みしてください。

service sendmail reload

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

sendmail -t < mail.txt

今私が好きではないタイトルは次のとおりです。

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

ヘッダーのどこにもlocalhostまたは127.0.0.1への言及はありません。

関連情報