8

SMTP/IMAP クライアントのことではなく、電子メールの送受信の両方が可能な動作中のSMTPサーバーを意味します。

SMTP接続のみをリッスンする部分的なPHPおよびGo SMTPサーバーの例はたくさんあります-メールの送信方法を示すものはありませんか?

Simple Mail Transfer Protocol のこの後半を学ぶことに本当に興味があります。標準とは異なる多くの悪いサーバーがあることは理解していますが、プロトコル全体が最初から最後までどのように実装されているかを知りたいです。

4

5 に答える 5

16

SMTP の仕組みを誤解していると思います。ここに簡略化されたバージョンがあります:

  1. メール ユーザー エージェント (MUA) は、メッセージをメール送信エージェント (MSA) に送信することにより、配信のためにメッセージをキューに入れます。

  2. MSA は、SMTP 経由でメール転送エージェント (「smtp サーバー」) に接続します。

  3. 次に、MTA は DNS を使用して、受信者のドメインの MX レコードを検索します。次に、受信者の MX サーバーにSMTP クライアントとして接続します。

  4. MX サーバーはエンベロープを受け入れます。次に、それをメール配信エージェント (MDA) に転送します。

  5. 次に、MDA はエンベロープをメッセージ ストアに置き、そこで IMAP または POP3 サーバーがメッセージを読み取ります。その後、MUA はこれらのサーバーに接続してメッセージを取得します。

プロセス全体で 3 つの主要なコマンドを使用します。MAILRCPTおよびDATA

  • MAIL= 封筒情報、バウンスアドレスなど
  • RCTP= 受信者。
  • DATA= ペイロード。

SMTP サーバーが応答します。実際には HTTP と同じように、エラー コードとそれに基づいて、MTA はエンベロープの処理方法を認識します (バウンス バックなので、適切な応答を送信するなど)。

このプロセスでは、「メールを取得する」(ETRN少し無視する) などはありません。SMTP は純粋に電子メールの送信用であり、取得用ではないためです。

于 2012-09-28T18:36:53.180 に答える
3

PHPで書かれた完全なSMTPサーバーを見つけました-厄介なオープンリレーさえ含まれています。

$ sudo php php-smtp.php [ip-address] [port]
于 2012-09-28T22:28:49.223 に答える
1

メールを処理するだけの PHP smtpd サーバーがあります - https://github.com/flashmob/Guerrilla-SMTPdとhttps://github.com/flashmob/go-guerrilla へのポート

于 2013-08-29T23:32:50.670 に答える
1

SMTP の「後半」はなく、プロトコルだけです。MUA が (ほとんどの Unix で見られる/usr/bin/sendmailバイナリのようなヘルパー プログラムを使用するのではなく) メール サーバーと TCP を介して直接対話する場合、SMTP プロトコルを使用します。MTA は、同じプロトコルを使用して、メールを配信するときに他の MTA と通信します。状況によっては、使用可能な動詞のより大きなセットを使用する場合があります。

MTA の PHP または Go 実装のコードを見ると、ある個人/チームがSMTP プロトコルをどのように実装したかがわかります。

于 2012-09-30T12:50:57.187 に答える