Linux mail
コマンドを使用する前に、メールサーバーをセットアップする必要がありますか?
いいえ、メールを送信するのにメールサーバーは必要ありません。私はSendmailに最も精通しており、Eメールをサービスとして実行する機能には3つの分類があります。 MDA(メール配信エージェント)は1、MTA(メール転送エージェント)は2、3はMUA(メールユーザーエージェント)です。
用語はわかりにくくなりますが、MTAが常に実行されている必要はありません。 MTA(mail
)がメールを「送信」するたびにMTAが呼び出されます。
mail
を実行し、メールの送信先アドレス[email protected]
を指定すると、メールクライアントはMTA(/usr/bin/sendmail
)を呼び出し、DNSにそのホスト/ドメイン(example.com)を照会し、MXレコードに指定されている値を確認します。 MXはMail Exchangerの略です。
Dig
コマンドを使用してこれを確認できます。
$ Dig gnu.org mx
; <<>> Dig 9.7.4-P1-RedHat-9.7.4-2.P1.fc14 <<>> gnu.org mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21053
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;gnu.org. IN MX
;; ANSWER SECTION:
gnu.org. 299 IN MX 10 eggs.gnu.org.
;; ADDITIONAL SECTION:
eggs.gnu.org. 299 IN A 208.118.235.92
eggs.gnu.org. 299 IN AAAA 2001:4830:134:3::10
;; Query time: 218 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct 3 17:27:22 2013
;; MSG SIZE rcvd: 90
したがって、クライアントはこのメールを配信するためにポート25でeggs.gnu.orgに接続しようとします。
@pukは次のフォローアップの質問をしました:
このDNSはローカルマシンにありますか?
私が答えた:
@puk-メールサーバーと同じようにできますが、通常はそうではありません。 /etc/resolv.conf
ファイルを確認してください。また、Dig
コマンドを実行すると、下部にあるSERVER: ...
行に気づくはずです。これは、リクエストを処理するDNSサーバーです。
私の/etc/resolv.conf
ファイルには以下が含まれています。
nameserver 192.168.1.8
そして、Dig
を使用したこのようなクエリ:
$ Dig gnu.org mx
下部にある結果:
;; Query time: 259 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct 3 17:46:13 2013
;; MSG SIZE rcvd: 90
そして賢い読者のために、私の質問の1つは、これはどのように構成されていますか?答えは/etc/nsswitch.conf
ファイルです。具体的には、この行:
hosts: files mdns4_minimal [NOTFOUND=return] dns
つまり、最初にファイル(/etc/hosts
)を使用し、次にmdns4_minimal
を使用します。これはマルチキャストDNSです。これは基本的に、以前のルックアップのキャッシュです。最後に、/etc/resolv.conf
ファイルで指定されたdns
のIPアドレスであるnameserver
を使用します。
実際に使用しているmail
のバージョンによって異なります。
すべてのバージョンで実際にメールを配信するにはMTAが必要ですが、一部のバージョンではSMTPを使用してリモートMTA(「スマートホスト」、たとえばISPのメールサーバー)と通信でき、一部のバージョンではメッセージを/usr/sbin/sendmail
にのみパイプできますローカルMTA経由でメールを送信します。
後者の場合、ローカルMTAは sendmail または exim または postfix のような本格的なMTAになります。または nullmailer または ssmtp のような単純な送信専用MTAでもかまいません。または、後で配信するためにメールのキューイングもサポートする msmtp のような、もう少し洗練されたミニMTA。
フリーソフトウェアとオープンソースの世界では、mailx
パッケージ(mail
コマンドを提供する)の2つの主要なバリアント、bsd-mailx
とheirloom-mailx
があります。
bsd-mailx はSMTPを話さず、/usr/sbin/sendmail
にパイプすることによってのみメールを送信できます
hierloom-mailx は、従来の「パイプから送信メールへの」メソッドと同様に、スマートホストにSMTPを話すことができます。
それで、あなたの質問に答えるために「あなたはメールサーバを必要としますか?」。はい、そうです。必要ですが、インストールしたメールのバージョンによっては、ご使用のシステムにインストールして構成する必要がない場合があります。
IMO、heirloom-mailx
を使用してスマートホストのみに依存するよりも、msmtp
のような最小限のMTAを使用するほうがよいです。インターネット接続がダウンしているか、スマートホストに到達できない場合、後で配信するためにメールをキューに入れる必要があるためです。ローカルキューを使用すると、mail
とcrond
および他のプログラムは、メールを送受信するだけで済みます。ローカルキューがない場合、スマートホストが利用できない場合、エラー状態をなんとかして対処する必要があります。