2012-11-22 147 views
1

我想知道。郵件收發器如何不向已收到的收件人發送郵件?

假設我有一個交換服務器,(域可以[email protected]), 也,我有一箇中繼服務器,接受互聯網域名(gmail /雅虎/等)的請求。

假設我發送郵件到:([email protected]; [email protected]) - 在

郵件被髮送到交換服務器的域([email protected])從用戶,那麼交換機將域(company.com和gmail.com)分組= =>它將郵件放入[email protected]郵箱

然後,交換機看到它需要發送到[email protected],所以它會發送到中繼服務器

中繼服務器將得到SMTP請求:

來自:[email protected]

到:[email protected]; [email protected]


的問題是 - 如何做SMTP中繼服務器知道不發給[email protected] - 由此導致接收到的重複郵件?

另外,gmail服務器如何知道不會再嘗試發送它再次收到的郵件? (因爲他們只能得到smtp請求,類​​似於發送郵件的客戶端)

感謝高級!

回答

0

您看到的標題不用於傳遞消息。相反,SMTP定義了一個名爲的包絡,它具有完全不同的標頭集合。作爲一個常見的例子,這就是密件抄送:如何運作;收件人地址將被複制到信封中,然後從信封內的郵件​​中刪除。

郵件發送時,信封發件人通常會複製到Return-Path:標題中,並且有時可以將信封收件人信息複製到Received:標題中。

在郵件服務器決定郵件應該到達哪個目的地的時候,每個不同的目的地通常會有一個郵件副本(假脫機文件,隊列條目,你有什麼)。因此,如果您從您@公司發送給我@公司,您@私人和朋友@ gmail,則第一臺服務器可能會確定外部地址應同時發送到同一個出站中繼,而內部副本則在本地發送。然後中繼同樣決定它需要聯繫兩個不同的目的地,所以單個傳入消息被複制到兩個出站消息,一個給你@ private,另一個給friend @ gmail。

+0

所以我明白「To」字段僅用於視覺表示。 確實發送應該發生在消息的某處的實際收件人? (例如,如果我正在處理EML文件 - 就像iis虛擬服務器一樣) – ArielB

+0

我不確定我是否確切地理解了您所得到的內容,但「To:」標題與實際收件人之間確實沒有關係(儘管發件人通常在收件人和抄送:郵件頭中指定收件人,郵件提交代理將這些郵件複製到信封;但如果發件人直接控制信封,則不需要這樣),並且沒有保證郵件收件人在郵件本身中可見,儘管許多郵件傳輸代理經常將這些信息包含在他們添加的「Received:」頭部中。 – tripleee

+0

事情是,我們正在嘗試自己完成郵件中繼,並且我們正在使用SMTP偵聽器將請求保存到磁盤,然後,我們正在創建新郵件併發送它。 我們只想將郵件發送給RCPT TO中列出的人員,現在在「to」標題中(正如您所說的那樣,它不相關)。 我想知道是否通常在郵件中添加RCPT TO,但是您說它不是我所知的 – ArielB

1

郵件的內容未被交換機或中繼器分析以確定郵件應發送到哪裏。在這種情況下,每個人都彼此交談SMTP,並使用RCPT協議消息指定收件人。所以你的郵件客戶端告訴交換機兩個RCPT,交換機決定其中一個是遠程的,然後向中繼器說一個RCPT,等等。 This document指定您可以閱讀有關RCPT動詞的SMTP協議。

+0

這是否意味着中繼獲得[email protected],但「到」字段將包含郵件? – ArielB

+0

是的,郵件中繼或傳輸代理不能混淆「收件人」郵件標題。它只允許添加它自己的某些標題,出於會計目的,正如此問題中的其他評論所指出的。 –

相關問題