伝統的に、Unix の mail
とその派生品 (そして他の多くの Unix ツール) は、ほとんどすべてのメール転送エージェント (MTA - postfix, exim, courier, そしてもちろん sendmail) が提供する /usr/bin/sendmail
インターフェイスを使用しています。
つまり、mail
プログラムはネットワークプロトコルを話しません。(これは、ある種のメールがSMTPを使用し、ある種のメールがUUCPを使用し、ある種のメールがBITNETを使用していた時代にさかのぼります…)
いったんメッセージが sendmail
を通してキューに入れられると、MTA は SMTP または他の何かを介しているかどうかに関わらず、実際のメッセージ送信を処理します。設定によっては、宛先のMTAに直接接続するか、他のホスト(スマートホストとも呼ばれる)を経由してメールを中継するかのどちらかになります。
サーバーでは直接接続が一般的ですが、家庭内接続のパソコンではスマートホスト経由での中継が一般的です。
(sendmail
や esmtp
のような MTA の中には、ホームユーザのために特別に作られたものがあり、中継ホストを常に使用しています。これらはメールの受信をサポートしておらず、リソースがかなり軽いです)
mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → recipient MTA → recipient inbox
mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox
その他のプログラム、主にThunderbirdやOutlookのようなユーザーフレンドリーなグラフィカルクライアントは、_常にリレー/スマートホストのSMTPサーバ(ここでも通常はGmailやISP/仕事用のSMTPサーバ)に直接接続し、メッセージを送信します。
ネイティブSMTPサポートはnullmailer
にありますが、従来のheirloom-mailx
にはありません。
app → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox
3番目の方法である受信者のサーバーに直接接続する方法は、ほとんど**使用されておらず、どのMUAもこれをサポートしていません。個人のコンピュータでは、これを使用するとメッセージが拒否されます(多くのスパムは感染したホームユーザのIPアドレスから送信されています)。
app → [SMTP] → recipient MTA → caught by the spam filter