James ダウンロード ドキュメント プロジェクト 関連プロジェクト 有益な情報 日本語訳 (Translations) オリジナル | | 課題 |
この文書では、/usr/sbin/sendmailで生成される全てのメールあるいは同一ホストのJamesを通じたローカルメール(@hostの無いローカルアドレスへのメールを含む)のルーティングの為のsendmailの設定方法を記述しております。
ここでは、全てのsendmail設定ファイルの場所はRedhat Linux 7.2のものを仮定しており、他のインストール版では異なった場所となるでしょう。
この文書の情報につき、質的な責任を負うものでは一切ありません。 変更*前*に、設定ファイルのバックアップを必ず行って下さい。
|
| 解決策 |
| Step 2: リレーを使うようsendmailをセットアップ |
はい、ここまではこれで結構です。次に、(ルールを無視して)Jamesを通じて全てをリレーするようsendmailに知らせます。Jamesは、"local relay"(不適切な全てのローカルアドレスの宛先)の役割や、"mail hub"(適切な全てのローカルアドレスの宛先)の役割、"smart relay"(その他全てのアドレスの宛先)の役割をsendmailの代わりに引き受けます。それによって、全てのものをキャッシュします。
/etc/sendmail.cfファイルを開き、
- DS で始まる行を探し、DSesmtp:localhostに変更
- DR で始まる行を探し、DResmtp:localhostに変更
- DH で始まる行を探し、DHesmtp:localhostに変更
それほど難しくはないですよね? sendmailに対し、esmtpと呼ばれる"mailer"を使い、ESMTPを利用してメールをlocalhostから各々の役割にリレーさせる、というのが、今行った事です。
勿論、健全な考えを持った人なら誰もがlocalhostへのメールのリレーをしようとは思わないでしょう。何故なら永遠にループするから・・そうですよね?
|
| Step 3: ループバックに関してsendmailが警告を出さないようにする |
sendmailの開発者は、(賢明にも)sendmailによって送られたメールが自分自身に戻ってこないような機能をデフォルトで入れてビルドしており、外部に行くメールの宛先が自分のマシンであるかどうかを判断する為の素早いチェック機能を付与する事でそれを達成しています。もしそのような形でメールを送ろうとすれば、config error: mail loops back to meというメッセージが流れる事でしょう。
しかし、我々はlocalhostにメールをリレー*したい*のであり、sendmailは我々のメールを受け取らずJamesが受け取るため、loopを発生させるような事はありません (Step1にしたがっていることを再度確認ください)。
ですから、/etc/sendmail.cfを再び開き、ファイルの末尾まで移動し、esmtp mailerの宣言がある箇所すなわち以下のような箇所にあたるまで上にスクロールさせて下さい:
 |  |  |  |
Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h
|  |  |  |  |
まあ、こんな感じの変更を加える事になります:
 |  |  |  |
Mesmtp, P=[IPC], F=kmDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
T=DNS/RFC822/SMTP,
A=TCP $h
|  |  |  |  |
しかし、厳密に言うと、"F="行にkを加えた事になります:F=mDFMuXaがF=kmDFMuXaになります。 繰り返しになりますが、sendmailはループバックのテストをスキップし、esmtp mailer を通した状態にしたままスキップします(
And again, thats it, sendmail will now skip the loopback test on mail leaving through the esmtp mailer)。
いくつかのテストを実行しなければなりません。 以下の各コマンドを試してみて下さい。ただし、[] 内は其々記述どおりに置き換えてください。
 |  |  |  | /[root@apache root]# mail -v [real-localusername]
[root@apache root]# mail -v [nonexistant-localusername]
[root@apache root]# mail -v [real-localusername]@localhost
[root@apache root]# mail -v [real-localusername]@[myhostname.mydomainname]
[root@apache root]# mail -v [real-username]@[real-remote-account]
|  |  |  |  |
Sendmail は STDOUT(標準出力)とやり取りを行いますので、各々のメールに対して何が行われているかがわかるでしょう。
|
はい、これで終わりです。幸運を祈ります :-) Danny Angus
|
|