SMTPとおしゃべりするメモ

SMTPサーバとおしゃべりするときにいつも忘れてしまうお作法メモ*1

以下はSendmailでの例だけどPostfixだろうがqmailだろうが基本的に一緒
# のあとはコメントなので無視してください

SMTPサーバ(基本は25番ポート)に接続

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).

めーらーだえもんさん(Mailer-Daemon)が現れたらサーバ名付きで挨拶 [ HELO ]

qmailはサーバ名いらないっぽい
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Wed, 8 Oct 2008 00:13:55 +0900
HELO <サーバ名>  # ここでお返事
250 localhost.localdomain Hello サーバ名 [127.0.0.1], pleased to meet you

メール送信元を宣言 [ MAIL FROM: ]

MAIL FROM:<送信元メールアドレス> # メールアドレスは<>で括る
250 2.1.0 <送信元メールアドレス>... Sender ok

メール送信先を宣言 [ RCPT TO: ]

RCPT TO:<送信先メールアドレス> # メールアドレスは<>で括る
250 2.1.5 <送信先メールアドレス>... Recipient ok

コンテンツ宣言[ DATA ] を行ってメールヘッダーを記述

ここでは簡略化のためSubjectのみ
DATA
354 Enter mail, end with "." on a line by itself
Subject: test mail  # ヘッダー部はここから

ヘッダー部分から空白行を1行入れてメール本文を記述

メール本文の最終行には"."のみを記入して改行
                                              # 1行空白
Test Mail From Sendmail

.

めーらーだえもんさんがお仕事を始めてくれるので終了宣言[ QUIT ]をして接続終了

250 2.0.0 m97FDtPY021669 Message accepted for delivery
QUIT
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.

以上ー


基本的に上の流れでサーバとおしゃべりすることでメールが送られるわけで、OutlookやらThunderBirdやらのメールクライアントも上記のようなおしゃべりを高速で行ってるって考えると「プロトコル」って言葉の意味がとってもしっくりくるのです


。。。とか言ってたらSMTPRFCが新しくなってるし。。。読み直さなきゃ。。。

*1:メール送信だけとかならmailコマンドでも十分なんだけどね