うー、忙しかった。目がまわるー。
さて、ところでメールですけど、送るに自分のプロバイダーのSMTPサーバーに渡すよな。
でも実は直接送れるんですよ。
必要なのは、最低メモ帳とコマンドプロンプトでtelnetを動かすこと。
日本語の文章打つにはめんどくさいが。
こんな文章を書いた
From: =?UTF-8?B?SGlkZW1hcm8g4peGM3JSWTNMSjh0Yw==?= <foobar@libserver.ddo.jp>
To: <宛先@gmail.com>
Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv?=
Date: Fri, 18 May 2007 20:45:00 +0900
Mime-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset=UTF-8
44GT44KT44Gr44Gh44Gv44CBSGlkZW1hcm8g4peGM3JSWTNMSjh0Y+OBp+OBmeOAgg0KU01UUOOB
q+ebtOaOpemAgeOCjOOCi+OBi+ODhuOCueODiOOBruODoeODvOODq+OCkumAgeOCieOBm+OBpuOB
hOOBn+OBoOOBjeOBvuOBmeOAgg0K44GK5omL5pWw44GK44GL44GR44GX44G+44GZ44GM44CB5Y+X
44GR5Y+W44Gj44Gf44KJ6L+U5LqL44KS44GK44Gt44GM44GE44GX44G+44GZ44CC
宛先のGmailのアドレスは伏せさせていただいたけどこんなの。
UTF-8でエンコードしてあるに深き故はない。
手書きで文章を書くのはめんどくさいわ。まぁでもこれだけあれば十分。
ポイントはヘッダーと本文の間に空の行を入れておくこと。
これでMXレコードを調べて、先方のメールサーバーを探す。
> nslookup -type=mx gmail.com
gmail.com MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com
(以下略)
一番MX preferenceの若いサーバーに送るのがいい。
> telnet gmail-smtp-in.l.google.com 25
220 mx.google.com ESMTP (ID)
HELO libserver.ddo.jp
250 mx.google.com at your service
MAIL FROM:<foobar@libserver.ddo.jp>
250 2.1.0 OK
RCPT TO:<宛先@gmail.com>
250 2.1.5 OK
DATA
354 Go ahead
(本文)
.
250 2.0.0 OK 1179490055 (ID)
QUIT
221 2.0.0 mx.google.com closing connection (ID)
このように、接続しては、HELOで名乗って、MAIL FROMで送り主を示して、RCPT TOで宛先を示すと。
ほんでもって、DATAと言って、ヘッダー・本文を流し込んでは最後に1行.とだけ書いて終わり。
無事届いてますよ。なかなかなもんです。
日本語の絡まないメールなら簡単に打てちゃいますよ。
ちなみにプロバイダーのメールサーバーも先方にこんな風に送ってるだけですよ。
でも、不思議ですよね。メール送るにもクライアントから直接先方に送ればいいのに。
まぁバケツリレー式に送れる仕組み自体は、戦争に強い仕組みというので理屈はわかるのだがね。
しかしメールは複雑なつくりやわな。
日本語送るのがめんどくさいわ。
ISO-2022-JPで直接書くか、EUC-JPかShift_JISかUTF-8で書いてBase64でエンコードするか、
ヘッダ−内ではASCII以外は全部Base64にしなきゃいけないし。
めんどくさいわ。SMTP古すぎ。
でも変えられない。古いものって強いよね。まぁ簡単な作りだし捨てるに捨てられないんでしょう。
ちなみに最近は結構8bit拡張されているもので、実は8bitでも送れたり。
まぁヘッダーは無理だけど。
でも安全のため7bitに収めるべきだよ。これがまぁ古いものの宿命やね。