UDP を使用してシンプルで基本的な電子メール クライアントと電子メール サーバーを作成し、SMTP の仕組みに慣れるために誰か助けてくれませんか?
コンピュータ ネットワーキングを始めたばかりで、関連する手順を知るだけで十分です。
ありがとうございました。
インターネット RFC ( Request For Comments ) は、この種の情報を得るのに最適な情報源です。SMTP はRFC 821で概説されています。幸いなことに、SMTP は、HTTP やその他のプロトコルと同様に、テキスト ベースのプロトコルです。
C
クライアントとサーバー間の対話の例を次に示しますS
(ウィキペディアから取得)。
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: "Alice Example" <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}
UDP パケットが破棄される可能性があるため、電子メールに UDP を使用することは最善の方法ではありません。TCP を使用することをお勧めします。でも課題だと言っていたので大丈夫だと思います。
したがって、最初に一般的な UDP クライアント/サーバー コードを記述します。次に、SMTP コマンドをサポートするように変更します。
最初に単純なecho
プロトコルを実装することから始めます。echo
または、プロトコルのソース コードをオンラインでお気に入りの言語で検索してください。たとえば、C++ をネットワーク用のboost.asioと共に使用したい場合、UDPクライアントとサーバーのデモ コードが含まれています。echo
Perl の場合、ここにいくつかの簡単な UDP コードがあります。
次に、必要な RFC 821 の部分に目を通し、そこから進みます。割り当てなので、プロトコルのすべてが必要なわけではないと思います。
プロトコルは単純なテキスト コマンドと応答であるため、解析は問題になりません。