=====SMTP===== SMTPプロトコルは、メール・クライアントがメール・サーバーに メール送信を依頼するしくみのひとつで RFC821(August 1982)で仕様が定義されています。 SMTPサーバーは、通常TCP/IP ポート25番でリスニングしています。 クライアントはメール送信を依頼されるとSMTPサーバーの IPアドレスのポート25番に向けて winsock でコネクトします。 コネクトが成功すると SMTPプロトコルに従ってメールデータを送信します。 ここでサーバ名を間違えるとコネクトが失敗します。 サーバー名の確認は、コマンドプロンプトで 次のようにtelnetコマンドを使います。 telnet サーバ名 25 telnetコマンドでコネクトが成功しかつSMTPサーバからメッセージが表示されたら サーバ名が正しいことになります。 次にSMTPサーバとのやりとりを簡単に順番に示します。 * 1. SMTPサーバ名からIPアドレスをDNSで引く - IPアドレスを指定すれば省略可能 * 2. IPアドレスのポート25でTCPコネクト * 3. HELO/EHLOコマンド用のドメイン名をクライアントのIPアドレスから引く ドメイン名を指定すれば省略可能 * 4. メール・サーバの呼出し(HELO/EHLOコマンド) * 5. 認証(SMTP AUTH) - オプション * 6. 送信の準備(MAIL FROMコマンド) * 7. 宛先の通知(RCPT TOコマンド) * 8. 本文の送信(DATAコマンド) * 9. 終了通知(QUITコマンド) * 10. TCP切断 SMTPサーバーは、クライアントからのSMTPコマンドに対して返答コード(3桁の数字)と 共にメッセージを返します。 SMTPコマンドおよび応答コードは、ログレコード に記録されますのでトラブル時に確認できます。 応答コードの先頭の数字で処理が正常かどうか判断できるようになっています。 コード 説明 2xx 正常応答。 3xx 正常応答。次のデータが必要。 4xx メモリ不足など一時的なエラー。 5xx メールアドレス形式エラー、認証エラーなど永久的エラー。 メッセージは、通常英文のテキストでSMTPサーバー・ソフトウエアによって異なります。 サンプル HELO MAIL FROM: RCPT TO: