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) を使用する方が良いでしょう。ローカル キューを使用すると、や などのプログラムは、メールを送信して忘れることができます。ローカル キューがないと、スマートホストが利用できない場合に、何らかの方法でエラー状態に対処しなければなりません。postfix
exim
heirloom-mailx
mail
crond