web-dev-qa-db-ja.com

mailコマンドにはメールサーバーが必要ですか?

Linux mailコマンドを使用する前に、メールサーバーをセットアップする必要がありますか?

16
puk

いいえ、メールを送信するのにメールサーバーは必要ありません。私は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に接続しようとします。

DNSサーバー?

@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を使用します。

14
slm

実際に使用しているmailのバージョンによって異なります。

すべてのバージョンで実際にメールを配信するにはMTAが必要ですが、一部のバージョンではSMTPを使用してリモートMTA(「スマートホスト」、たとえばISPのメールサーバー)と通信でき、一部のバージョンではメッセージを/usr/sbin/sendmailにのみパイプできますローカルMTA経由でメールを送信します。

後者の場合、ローカルMTAは sendmail または exim または postfix のような本格的なMTAになります。または nullmailer または ssmtp のような単純な送信専用MTAでもかまいません。または、後で配信するためにメールのキューイングもサポートする msmtp のような、もう少し洗練されたミニMTA。

フリーソフトウェアとオープンソースの世界では、mailxパッケージ(mailコマンドを提供する)の2つの主要なバリアント、bsd-mailxheirloom-mailxがあります。

bsd-mailx はSMTPを話さず、/usr/sbin/sendmailにパイプすることによってのみメールを送信できます

hierloom-mailx は、従来の「パイプから送信メールへの」メソッドと同様に、スマートホストにSMTPを話すことができます。

それで、あなたの質問に答えるために「あなたはメールサーバを必要としますか?」。はい、そうです。必要ですが、インストールしたメールのバージョンによっては、ご使用のシステムにインストールして構成する必要がない場合があります。

IMO、heirloom-mailxを使用してスマートホストのみに依存するよりも、msmtpのような最小限のMTAを使用するほうがよいです。インターネット接続がダウンしているか、スマートホストに到達できない場合、後で配信するためにメールをキューに入れる必要があるためです。ローカルキューを使用すると、mailcrondおよび他のプログラムは、メールを送受信するだけで済みます。ローカルキューがない場合、スマートホストが利用できない場合、エラー状態をなんとかして対処する必要があります。

7
cas