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

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

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

答え1

いいえ、メールを送信するのにメール サーバーは必要ありません。私が最もよく知っているのは Sendmail ですが、電子メールをサービスとして提供する機能には 3 つの分類があります。MDA (メール配信エージェント) が 1、MTA (メール転送エージェント) が 2、そして 3 が MUA (メール ユーザー エージェント) です。

用語がわかりにくいですが、MTA を常に実行する必要はありません。MTA は、MUA ( mail) がメールを「送信」しようとするたびに呼び出されます。

を実行しmail、メールを送信するアドレスを指定すると、[email protected]メール クライアントは MTA ( /usr/bin/sendmail) を呼び出し、MTA はそのホスト/ドメイン (example.com) の DNS を照会し、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

賢明な読者の皆さん、これはどのように設定されているのかお尋ねします。答えはファイルです/etc/nsswitch.conf。具体的には次の行です。

hosts:      files mdns4_minimal [NOTFOUND=return] dns

これは、最初にファイル ( /etc/hosts) を使用し、その後に を使用することを示していますmdns4_minimal。これはマルチキャスト DNS です。基本的には、以前の検索のキャッシュです。最後に、ファイルで指定されたdnsの IP アドレスである を使用します。nameserver/etc/resolv.conf

答え2

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

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

後者の場合、ローカルMTAは次のような本格的なMTAになる可能性がある。送信メールまたは輸出または接尾辞または、次のような単純な送信専用MTAでもよい。ヌルメーラーまたはSMTPまたは、もう少し洗練されたミニMTAのようなmsmtp後で配信するためにメールをキューに入れる機能もサポートしています。

mailxフリーソフトウェアとオープンソースの世界では、パッケージ ( コマンドを提供するmail)には、bsd-mailxとの 2 つの主なバリエーションがあります。heirloom-mailxコマンドmailは、GNU でも利用できますmailutils

bsd-mailxSMTPを話さず、パイプでメールを送ることしかできない。/usr/sbin/sendmail

家宝メールx従来の「pipe-to-sendmail」方式と同様に、スマートホストにSMTPで通信できます。ちなみに、Sネイルおそらく heirloom-mailx の最も優れた派生版であり、現在も積極的に開発および更新されています。

GNU メールユーティリティには、のバージョンなど、エンドユーザーとシステム管理者の両方を対象としたメール関連のツールがいくつか含まれていますmail

それで、「メール サーバーは必要ですか?」という質問にお答えします。はい、ある程度は必要です。メール サーバーは必要ですが、mailインストールされている のバージョンによっては、独自のシステムにインストールして構成する必要がない場合があります。

私の意見としては、インターネット接続がダウンしたり、スマートホストにアクセスできない場合に後で配信するためにメールをキューに入れる必要があるため、スマートホストだけに頼るよりも、少なくとも のような最小限の MTA (または やのmsmtpような本格的な MTA) を使用する方が良いでしょう。ローカル キューを使用すると、や などのプログラムは、メールを送信して忘れることができます。ローカル キューがないと、スマートホストが利用できない場合に、何らかの方法でエラー状態に対処しなければなりません。postfixeximheirloom-mailxmailcrond

関連情報