回答:
いいえ、メールを送信するのにメールサーバーは必要ありません。私はSendmailに最も精通しており、サービスとしての電子メールを実現する機能には3つの分類があります。MDA(メール配信エージェント)は1、MTA(メール転送エージェント)は2、3はMUA(メールユーザーエージェント)です。
用語はわかりにくいですが、MTAを常に実行する必要はありません。MTA(mail
)がメールを「送信」するたびに、MTAが呼び出されます。
実行mail
して、メールを送信するアドレスを指定すると、sam@example.com
。メールクライアントは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
そして、賢明な読者にとって、これはどのように構成されているのでしょうか?答えは/etc/nsswitch.conf
ファイルです。具体的には次の行:
hosts: files mdns4_minimal [NOTFOUND=return] dns
つまり、最初にファイルを使用し(/etc/hosts
)、次にmdns4_minimal
。それはマルチキャストDNSです。基本的に、以前のルックアップのキャッシュです。最後に、ファイルで指定されたdns
IPアドレスを使用nameserver
し/etc/resolv.conf
ます。
mail
使用しているバージョンによって異なります。
すべてのバージョンは、実際にメールを配信するMTAが必要ですが、いくつかのバージョンでは、リモートMTA(「スマートホスト」、例えばISPのメールサーバー)に話をSMTPを使用することができ、いくつかは、パイプのみメッセージがすることができます/usr/sbin/sendmail
経由でメールを送信しますローカルMTA。
後者の場合、ローカルMTAはsendmailまたはeximまたはpostfixのような本格的なMTAである可能性があります。または、nullmailerやssmtpのような単純な送信専用MTA でもかまいません。または、msmtpのような少し洗練されたミニMTAで、後で配信するためのメールのキューイングもサポートしています。
フリーソフトウェア&オープンソースの世界では、そこには主に2つの変異体であるmailx
(提供パッケージmail
コマンド):bsd-mailx
とheirloom-mailx
。
bsd-mailxはSMTPを話さないので、パイプすることによってのみメールを送信できます。/usr/sbin/sendmail
hierloom-mailxは、SMTPをスマートホストに送信できるほか、従来の「pipe-to-sendmail」方式も使用できます。
したがって、「メールサーバーが必要ですか?」という質問に答えるために。はい、そうですね。必要ですが、インストールしたメールのバージョンによっては、自分のシステムにインストールして構成する必要はありません。
IMO、インターネット接続がダウンした場合やスマートホストに到達できない場合、後で配信するためにメールをキューに入れるmsmtp
必要があるheirloom-mailx
ため、スマートホストのみに依存するよりも、最小限のMTAを使用した方が良いでしょう。ローカルキューを使用するmail
とcrond
、他のプログラムでもメールを送信して忘れることができます。ローカルキューがない場合、スマートホストが利用できない場合、何らかの方法でエラー状態に対処する必要があります。