1. 程式人生 > >SMTP&POP命令詳解(z)

SMTP&POP命令詳解(z)

          SMTP&POP命令詳解~
 
作者:我餓了

以前看到有朋友問到流光掃描到POP3伺服器的使用者名稱和密碼應該怎麼辦??可以用OUTLOOK之類的軟體來幫別人收Email.但!!!
1.用他們消耗的系統資源太大.
2.使用前要進行各項設定!麻煩.
3.我們要學更多的知識.
所以,請大家往下看.看看如何用telnet來收發Email~
先說明幾點.
為了便於你觀看.我把一些字型的顏色做了改變.
紅色字是我們需要輸入的命令
棕色字是我加的註釋
其他的就是伺服器返回的內容了.
(我好苦呀~~~這個論壇中改變字型顏色要用YBB程式碼.不是很方便的~)
另外要說明的是.指令不分大小寫.(使用者口令除外)
是不是因該先解釋一下什麼是SMTP什麼是POP呀???算了.不說了.網上有很多介紹他們的文章.都比我說的要好.
好了不多廢話了,讓我們開始.
沒有發怎麼收呀???我們用smtp伺服器發一封Email先.

telnet smtp.21cn.com 25//連線smtp伺服器.埠是25
220 21cn.com SMTP Server of AIMC 2.9.5.1; Mon, 25 Jun 2001 12:41:51 +0800//伺服器返回的資訊
HELO
250 21cn.com, unknown.host<61.138.26.124> okay.
MAIL FROM:[email protected]//告訴伺服器發件人的Email地址
250 <[email protected]>, sender ok.
RCPR RO:[email protected]//告訴伺服器收件人的地址.
250 User not local, will forward to <

[email protected]>.//OK!下面開始寫信了~~
DATA//告訴伺服器我們要開始寫信了~~
SUBJECT:HELLO//subject後面填寫的是郵件的主題.如果不需要主題可以直接輸入內容.
Hi:
How are you?
.//換行後輸入.後按回車,表示信件內容書寫完畢.
250 Requested mail action okay, completed.
QUIT//傳送信件,結束對話,退出SMTP伺服器.如果想取消傳送可以用RSET命令.
221 21cn.com closing connection.//好了,發完了.

下面我們來用POP伺服器收我們剛才傳送的Email.

telnet pop.yeah.net 110//還是要先連線.埠110
+OK incore system mail POP3 Server ready
user stonegong//告訴伺服器我的使用者名稱
+OK core mail
pass *********//這裡的****代表你的密碼.你輸入的時候會明文顯示.如果有人在旁邊還是先關掉回顯吧~
+OK 1 message(s) [457 byte(s)]//看到了嗎?有一封信呀~
list//讓我們仔細看看.
+OK 1 457
1 457
.//第一個475是所有郵件的總位元組數,1後面的那個是第一封郵件的位元組數.因為只有一封,所以相等了.
retr 1//返回第一封信的全部內容.
+OK 457 octets
Received: from 21cn.com (unknown [61.140.60.248])
by mx1.yeah.net (Postfix) with SMTP id E578D1CED4CAC
for <[email protected]>; Mon, 25 Jun 2001 12:49:17 +0800 (CST)
Received: from unknown.host([61.138.26.124]) by 21cn.com(AIMC 2.9.5.1)
with SMTP id jma3b36f1fc; Mon, 25 Jun 2001 12:43:27 +0800
subject:HELLO
hi:
How are you?
Message-Id: <[email protected]>
Date: Mon, 25 Jun 2001 12:49:17 +0800 (CST)
From: [email protected]
.//看懂了嗎??就是剛才發的那封~
dele 1//沒用了,刪了吧.
+OK core mail
list
+OK 0 0
.//看看沒了吧~~但這時郵件並沒有完全刪除,要等到退出後在完全刪除,如果現在想恢復可以用REST n命令,n表示Email的編號.
quit//沒什麼乾的了.走吧~.
+OK core mail

以上是我telnet的LOG檔案的全部內容.我加了註釋,肯定都能看懂吧~~
寫的比較匆忙.肯定有錯別字了.自己慢慢理解吧~還有一些命令沒有提到.不說了這些應該夠用了.如果想知道就

看看下面,然後自己試試.

如果上面有哪些命令你沒有理解也可以看看下面這份命令詳解.
先說說SMTP伺服器的.
HELO:<地址>
   利用HELO命令可以告訴SMTP伺服器你的地址,<地址>一般為你的E-mail地址@後面的部分。若你的電

子郵件地址為:
  [email protected],則<地址>就為21cn.com(我就什麼也沒輸入.也可以的)
  MAIL FROM:<發件人Email地址>
   利用MAIL FROM命令輸入收信者回復你時可用的電子郵件地址,一般為你的電子信箱地址,但也可以是符合郵件地址格式的任意字元。
  RCPT TO:<收信人的E-mail地址>
   RCPT TO命令要求你輸入收信人的電子郵件地址,可以用多個RCPT TO命令將郵件同時傳送給多個收信

人。
  VRFY:<某個Email地址>
   VRFY命令將驗證其後的電子郵件地址的正確性。一般可先利用VRFY命令對電子郵件地址進行校驗,再利用RCPT TO命令將郵件傳送到該地址。這個命令我沒試成功.可能是我的命令用錯了.
  DATA
   鍵入DATA後回車,即可開始輸入郵件內容。如果在首行輸入Subject:<主題內容><回車>,則收信者可在主題或Subject欄將看到<主題內容>。否則,輸入部分將作為郵件主體(Body)部分的內容。結束信件內容輸入,可順序按<回車><.(句號)><回車>.
  RSET
   RSET命令將中止發信操作,刪除輸入內容。
  QUIT
   QUIT傳送信件,結束對話,退出SMTP伺服器。

在說說POP的.
USER <使用者名稱>
   用USER命令輸入使用者信箱名,<使用者名稱>一般為使用者電子郵件地址@前面的部分,如地址為[email protected],則<使用者名稱>為Someone,命令執行後將顯示一些資訊,並提示使用者輸入密碼。
  PASS <密碼>
   用PASS命令輸入使用者信箱密碼。
  STAT
   輸入STAT命令,伺服器將告訴使用者共有多少封信件在信箱中。
  LIST
   顯示信件個數、序號和每個信件的大小。
  TOP n m
   顯示第n個信件前m行的內容。
  RETR n
   RETR命令可以顯示第n個信件的全部內容。
  DELE n
   DELE命令用來刪除指定的第n個信件。
  REST n
   REST命令可以恢復被刪除的n個信件。
  LAST
   LAST命令可以顯示下一個信件的編號。
  NOOP
   NOOP命令不執行任何操作,僅用來測試伺服器的響應是否正常。
  QUIT
   QUIT退出POP3伺服器,結束信件查閱過程。
******************************************************************************
終於寫完了.好高興.不知對你有沒有用.希望有吧~~如果有就請我吃飯吧~~哈哈~~
寫代顏色的文章真的很不容易!!

上文中有寫筆誤。
下面是例項:
telnet xxxx.xxxx.xxx 25
mail from:[email protected](誰的郵箱?我也不只到;)
rcpt to:[email protected]
data
xxx
.
quit

如果想看伺服器所支援的命令,可以telnet xxxx 25後用help命令察看
如:
telnet xxx.xxx.xxx 25
help
214-This is Sendmail version 8.9.3
214-Topics:
214- HELO EHLO MAIL RCPT DATA
214- RSET NOOP QUIT HELP VRFY
214- EXPN VERB ETRN DSN
214-For more info use "HELP <topic>".
214-To report bugs in the implementation send email to
214- [email protected].
214-For local information send email to Postmaster at your site.
214 End of HELP info
呵呵,
that'a all
enjoy it:)


pop3的命令集在rfc1939中說明
我摘抄如下:
9. POP3 Command Summary

Minimal POP3 Commands:

USER name valid in the AUTHORIZATION state
PASS string
QUIT

STAT valid in the TRANSACTION state
LIST [msg]
RETR msg
DELE msg
NOOP
RSET
QUIT

Optional POP3 Commands:

APOP name digest valid in the AUTHORIZATION state

TOP msg n valid in the TRANSACTION state
UIDL [msg]

POP3 Replies:

+OK
-ERR

Note that with the exception of the STAT, LIST, and UIDL commands,
the reply given by the POP3 server to any command is significant
only to "+OK" and "-ERR". Any text occurring after this reply
may be ignored by the client.
一個完整例項:
S: <wait for connection on TCP port 110>
C: <open connection>
S: +OK POP3 server ready <[email protected]>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK mrose's maildrop has 2 messages (320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends message 1>
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S: <the POP3 server sends message 2>
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: <close connection>
S: <wait for next connection>