私は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がカタログで提供するすべてのアドオンですmake
。Makefile
/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への言及はありません。