【求助】請問SMTP是如何與POP3通訊 ?



贊助商連結


legende
2004-10-04, 03:10 AM
一般我們送信...是直接把郵件透過smtp server寄到收件的pop3 server上

那....有沒有辦法直接把信塞到pop3中呢

我想知道smtp主機是如何把信塞給pop3主機的(telnet之類?或者其他方式?語法格式又是如何?)

是否哪邊有這方面的文章

或者哪套軟體能夠看到他的交談訊息呢?


因為作業需要寫一個發信軟體

謝謝

贊助商連結


basuya
2004-10-04, 09:43 AM
這裡應該可以給您很大的參考價值。。。
http://www.fanqiang.com/a6/b9/20011123/0708001586_b.html

shiny
2004-10-04, 12:36 PM
基本上我是覺得這個問題問的很怪,smtp及pop3都只是通訊協定的一種
這是為了不同使用用途所訂定的,smtp是郵件傳輸協議的通訊協定,
pop3是收信的通訊協定,一般而言,主機都是同一台只是開不同的port
對應通信,所以建立通訊要求後的信件處理,應由主機郵件的郵件軟體
進行處理才對。

raytracy
2004-10-04, 01:27 PM
信件在 Server 之間傳遞轉送時, 一定都是用 SMTP 協定. 當信件送到最後一關: 也就是用戶的電子郵箱那台主機時, 外界還是用 SMTP 送進去的. 問題是, 送進去以後呢? 怎麼會變成 POP 可以收的信件?

事實上, 當目的主機收到信件後, 他會先判斷一下, 該信件的收件人郵箱, 是否就位於自己這台主機上? 如果是的話, 就會進行一個「內部轉信」的程序, 這個程序在 Unix 主機上, 通常是由一個叫 procmail 的程式來完成. 他負責將 STMP 收下來的東西, 轉變成主機上的電子郵箱格式, 暫時存放在主機內.

當用戶使用 POP 協定連上來時, POP 程式其實只是去讀這個由 procmail 轉好的郵件檔, 把它取出來傳給用戶.

所以, SMTP 與 POP 兩者之間, 並沒有直接連接的通訊, 中間是經由 procmail 來轉換的. 至於其他非 Unix 平台(例如: MS-Exchange), 也會有類似 procmail 的動作, 通常是稱為 local mail delivery.

可愛滴小玉
2004-10-04, 01:31 PM
請問一下 若使用mail.abc.net可以寄出 使用abc.net寄不出去 是那邊的問題?mx嗎?

rushoun
2004-10-04, 03:14 PM
我想您可以到鳥哥的私房菜,去找一篇有關郵件的傳送流程,什麼是MUA、MTA、MDA ,
應該就會知道個大概了。

raytracy
2004-10-04, 04:39 PM
最初由 可愛滴小玉 發表
請問一下 若使用mail.abc.net可以寄出 使用abc.net寄不出去 是那邊的問題?mx嗎?
應該與 MX 無關.....可否描述一下, 不能寄出時的狀況? 用戶端的設定值如何? 從哪邊可以得知錯誤訊息? 可否直接取得 Mail Server 上的 log 出來看?....

legende
2004-10-04, 10:18 PM
我大概懂了
再請問一下
SMTP大部分不是會擋IP嗎(如果使用PORT 25)
那麼不同ISP的SMTP如何互傳信件?

像我現在使用HINET就無法TELNET進SEEDNET....那我電腦架SMTP不是也寄不過去?

raytracy
2004-10-05, 09:48 AM
最初由 legende 發表
SMTP大部分不是會擋IP嗎(如果使用PORT 25)
那麼不同ISP的SMTP如何互傳信件?

像我現在使用HINET就無法TELNET進SEEDNET....那我電腦架SMTP不是也寄不過去?
那不是用「擋IP」來做的. 那是 Mail Server 裡面的一個 Anti-relay 機制 (防跳板).

由於當初設計 SMTP 協定時, 並沒有考慮到跳板發信的問題, 所以使得全世界的 End user, 都可以隨便挑一台 Email Server 來發信, 並沒有限定非用 ISP 的不可. 但是後來這樣出了問題, 因為許多垃圾信件, 為了躲避追蹤與反制, 就用這個方法, 挑一個與自己上網無關, 對自己也無管轄權的 Server 去發信.

此時, 當別人收到垃圾信, 追蹤到源頭, 要求轉信的 Server 制止該行為時, 由於這個用戶不屬於該 Server 管理者的管轄範圍, 所以管理者對這個用戶完全沒有技術上或法律上的約束力, 也就無法制止這樣的行為. 但是網路上的受害者, 卻會將矛頭指向這台被當成跳板的 Server, 甚至對該Server 發起抵制行動, 使得管理者兩面為難.

因此, 後來就出現這種 Anti-relay 的作法, 也就是說: 所有的 Email Server 都訂下這樣的規則:

1. 只接受來自可被自己管轄的IP範圍所發的信
2. 只接受外界發進屬於自己管轄的信箱的信
3. 只有通過身分認證者可以打破以上兩種規則

所以, 當您從 ISP A 上網, 想要用 ISP B 的 server 發信時, 因為違反了規則 1. 所以會被 ISP B 拒絕. 但是當 ISP A/B 之間互相在轉信時, 只有符合規則 2. 的信, 可以進得來, 這樣就擋掉許多垃圾信. 至於規則 3. 通常是用在比較特殊的場合, 小弟自己的 Email server 會啟動這個功能, 以便自己在外面上網時 (與 Server 不同 ISP), 還可以讓自己寄信出去.(但別人不行, 因為別人無法通過我的認證程序)