共 117 個代碼,顯示 117 個
基本回應碼
系統狀態或系統說明回應。實務上很少使用。
針對 HELP 指令傳回的說明訊息,介紹伺服器或特定指令的用法。
建立連線時伺服器的初始問候,表示服務已就緒。也用來回應 STARTTLS,表示可以開始 TLS 交涉。
伺服器關閉連線,通常是回應 QUIT 指令。
AUTH 驗證成功。通常附帶增強碼 2.7.0。
要求的動作已完成。這是對 EHLO、MAIL FROM、RCPT TO 的一般回應,也會在 DATA 結束、伺服器接受郵件時傳回。
收件者不是本機使用者,但伺服器接受這封郵件,並會轉寄到指定的位址。
伺服器不確認使用者是否存在(為防止帳號列舉而停用 VRFY),但會接受郵件並嘗試遞送。
對 ETRN 的回應:伺服器已開始遞送佇列中寄往所要求網域或節點的郵件。
AUTH 過程中伺服器送出的 Base64 編碼挑戰。用戶端必須以驗證機制的下一筆資料回應(例如 AUTH LOGIN 的使用者名稱或密碼)。
對 DATA 的回應:伺服器等待接收郵件內容,內容以只有一個句點的一行結束。
服務無法使用,伺服器關閉連線:可能是正在關機、負載過高、連線數過多或觸發暫時性的寄送限制。寄件端應稍後重試。
使用者必須先變更密碼或改用其他驗證機制,才能完成驗證。附帶增強碼 4.7.12。
信箱暫時無法使用:忙碌、遭鎖定,或因政策暫時拒收。灰名單(greylisting)通常會傳回這個代碼或 451。
因伺服器本機錯誤(例如 DNS 查詢失敗或過濾器沒有回應)而中止動作。寄件端應稍後重試。
伺服器目前沒有足夠空間接收這封郵件。也可能表示超過單封郵件的收件者數量上限,此時用戶端應在另一個交易中寄出其餘收件者。
暫時性的驗證失敗(例如憑證伺服器沒有回應),或要求 STARTTLS 時 TLS 暫時無法使用。
伺服器目前無法處理 MAIL FROM 或 RCPT TO 中送出的參數,但稍後可能會接受。
對 ETRN 的回應:伺服器目前無法處理所要求節點的郵件佇列。
對 ETRN 的回應:所要求的節點或網域無權要求遞送其佇列。
伺服器無法辨識該指令,或該行過長。AUTH 交換過程中某一行超過允許的最大長度時也會使用。
指令有效,但參數無效:例如 MAIL FROM 中的位址格式錯誤,或 EHLO 中的名稱無效。
伺服器能辨識該指令,但未實作或已停用,許多伺服器上的 VRFY 和 EXPN 就是如此。
指令順序錯誤,例如在 MAIL FROM 之前送出 RCPT TO,或在沒有有效收件者時送出 DATA。有些伺服器在未驗證就嘗試寄信時也會傳回此代碼。
伺服器不支援指定的參數,例如要求了不支援的 AUTH 機制。
這台主機不接收任何郵件。它取代 220 作為問候訊息送出,用戶端不應重試。
伺服器要求先驗證身分,或先以 STARTTLS 啟動 TLS,才會接受該指令。未提供憑證就使用 587 提交連接埠時很常見。
依伺服器的政策,所選的驗證機制強度太弱。要求使用應用程式密碼或 OAuth 的郵件服務供應商有時會傳回此代碼。
使用者名稱或密碼錯誤,或憑證遭拒。附帶增強碼 5.7.8。
所選的驗證機制只允許在加密連線上使用:必須先執行 STARTTLS。
信箱不存在或無法使用,或郵件因政策遭拒(垃圾郵件、黑名單、SPF、DKIM 或 DMARC)。具體原因要看隨附的增強碼。
收件者不是本機使用者,伺服器不會轉寄這封郵件;可能會告知應改寄到哪個位址。
超過配置的儲存空間:收件者信箱已滿,或郵件超過 SIZE 擴充功能宣告的大小上限。
電子郵件位址無效或不被允許,例如語法錯誤,或寄件者無權使用該位址。
交易失敗。若作為初始問候出現,表示不為該用戶端提供 SMTP 服務;若出現在 DATA 之後,表示郵件遭拒收,通常是因為內容或寄件者信譽。
伺服器無法辨識或未實作 MAIL FROM 或 RCPT TO 中送出的擴充參數。
收件者網域發布了 null MX(指向「.」的 MX 記錄),宣告不接收郵件,因此重試沒有意義。
增強狀態碼(RFC 3463)
沒有更多細節的狀態:只知道結果類別(成功、暫時失敗或永久失敗)時使用。
郵件中的某個位址有問題,且不屬於更具體的代碼。
目的伺服器上不存在該收件者信箱。這是位址打錯或帳號已停用所造成的典型退信。
目的網域或系統不存在或無法接收郵件,例如網域無法解析。
收件者位址的語法無效。
收件者位址在目的系統上符合多個信箱。
收件者位址有效。會以 2.1.5 的形式出現在 RCPT TO 的肯定回應中。
這個信箱曾經存在,但已搬移,且沒有已知的轉寄位址。
寄件者位址的語法無效。
寄件者網域不存在或不接收回覆,例如既沒有 MX 記錄也沒有 A 記錄。
郵件已交給不支援狀態通知的系統,因此無法確認最終是否送達。
收件者網域發布了 null MX,宣告不接收郵件。
信箱存在,但與它相關的某個問題導致無法遞送,且沒有更具體的代碼。
信箱存在但已停用,不接收郵件,例如遭停權的帳號。
收件者信箱已超過儲存空間配額。
郵件超過收件者可接收的大小上限。
收件者是郵寄清單,但無法展開為其成員。
目的系統發生問題,且不屬於更具體的代碼。
目的郵件系統的儲存空間已滿。
目的主機因即將關機、負載過高或維護中而暫不接收郵件。
目的系統不支援郵件所需的某項功能。
郵件超過伺服器對任何收件者都接受的大小上限。
目的系統設定錯誤,無法接收這封郵件。
郵件已被接受,但使用的優先順序與要求的不同(MT-PRIORITY 擴充功能)。
發生網路或路由問題,且不屬於更具體的代碼。
嘗試連線時,目的伺服器沒有回應。
連線已建立,但在完成遞送前中斷或變得不穩定。
遞送所需的目錄服務失敗,通常是 DNS 解析失敗。
找不到通往目的地的路由,例如網域沒有可用的 MX 或 A 記錄。
郵件系統壅塞,目前無法處理這封郵件。
偵測到路由迴圈:郵件在相同的伺服器之間經過太多次。
已超過最長重試時間,郵件未能送達並遭捨棄。
傳遞協定發生問題,且不屬於更具體的代碼。
指令無效、目前不允許使用,或無法辨識。
指令有語法錯誤,伺服器無法解譯。
郵件的收件者數量超過伺服器在單一交易中接受的上限。
指令有效,但其引數無效或不受支援。
用戶端與伺服器之間的協定版本不相容。
AUTH 交換過程中的某一行超過伺服器允許的最大長度。
郵件內容有問題,且不屬於更具體的代碼。
目的地不支援郵件或其某個附件的內容類型。
遞送郵件需要轉換其內容,但寄件者禁止轉換。
遞送郵件需要轉換其內容,但伺服器無法進行這種轉換。
郵件已送達,但內容轉換過程中遺失了部分資訊。
郵件內容轉換失敗。
無法取得以 URL 參照的郵件內容(BURL 擴充功能)。
寄件者或收件者不支援含有非 ASCII 字元的位址(國際化電子郵件,SMTPUTF8)。
伺服器需要以 UTF-8 文字回應,但用戶端沒有宣告支援 SMTPUTF8。
郵件含有 UTF-8 標頭,無法傳送給一個或多個不支援它的收件者,因此遭拒收。
沒有更多細節的安全性狀態。出現在驗證成功(2.7.0)、AUTH 暫時失敗(4.7.0)以及因政策遭拒收的情況。
寄件者無權寄信給該收件者:因黑名單、信譽、反垃圾郵件機制或未經允許的轉送(relay)嘗試而遭封鎖。以 4.7.1 形式出現時通常表示灰名單。
寄件者無權寄信到該郵寄清單。
需要將郵件從一種安全協定轉換為另一種,但無法完成。
郵件需要的安全功能,目的地不支援。
傳輸過程中的加密運算失敗,例如簽章驗證或解密失敗。
目的地不支援郵件所使用的加密演算法。
完整性驗證失敗:郵件在傳輸途中遭到修改,或檢查碼不符。
驗證憑證無效:使用者名稱或密碼錯誤。
所選的驗證機制強度低於伺服器政策的要求。
使用所要求的驗證機制需要外部加密層(例如 TLS)。主要針對以明文傳送密碼的機制。
所要求的驗證機制只允許在加密連線上使用。
使用者必須變更密碼或改用其他驗證機制。
嘗試驗證的使用者帳號已停用。
伺服器只接收來自已建立信任關係之系統的郵件。
郵件優先順序太低,目前無法接收(MT-PRIORITY 擴充功能)。
以指定的優先順序而言,郵件太大(MT-PRIORITY 擴充功能)。
自寄件者指定的日期以來,這個信箱已更換擁有者,因此郵件不予遞送(RRVS 擴充功能)。
自寄件者指定的日期以來,收件者網域已更換擁有者(RRVS 擴充功能)。
伺服器無法依寄件者的要求確認信箱是否已更換擁有者(RRVS 擴充功能)。
郵件沒有任何有效的 DKIM 簽章,而收件端政策要求必須有。
郵件有有效的 DKIM 簽章,但沒有一個符合收件端政策(例如簽署網域或演算法不符)。
郵件沒有來自 From 標頭所示同一網域的有效 DKIM 簽章。
寄件 IP 未在寄件者網域的 SPF 記錄中獲得授權。
SPF 評估發生錯誤,例如記錄格式錯誤或 DNS 查詢次數過多。
寄件 IP 沒有反向 DNS(PTR),或傳回的主機名稱無法正向解析回該 IP。
郵件的多項驗證檢查同時失敗,例如 SPF 與 DKIM。
寄件者網域發布了 null MX,無法接收回覆與退信,因此郵件遭拒收。
這封郵件疑似屬於大量類似濫發郵件的一部分。
ARC 鏈驗證失敗。ARC 用來在郵件經過轉寄服務或郵寄清單時保留驗證結果。
郵件要求 REQUIRETLS,但路徑上的下一台伺服器不支援此擴充功能,因此無法在確保加密的情況下遞送。
貼上伺服器的完整回應,例如 550 5.7.1 Message rejected,即可同時查看基本碼與增強碼。搜尋基本碼時,也會列出通常與它一起出現的增強碼。
運作方式
在 SMTP 工作階段中,用戶端的每個指令(EHLO、MAIL FROM、RCPT TO、DATA 等)都會收到伺服器以三位數代碼開頭的回應。第一位數表示結果:2 代表成功,3 代表伺服器在等待更多資料,4 代表暫時性錯誤,5 代表永久性錯誤。第二位數表示類別:x0z 為語法,x1z 為資訊,x2z 為連線,x5z 為郵件系統。代碼後面的文字格式不拘,由各伺服器自行撰寫;程式只看數字。
三位數很難說明具體原因,因此 RFC 3463 定義了增強狀態碼,格式為「類別.主題.細節」:5.1.1 表示與位址(1)相關的永久失敗(5),原因是信箱不存在(1)。類別重複第一位數的意義(2、4 或 5),主題將原因歸類,細節則進一步明確化。使用增強碼的伺服器會在 EHLO 回應中以 ENHANCEDSTATUSCODES 擴充功能宣告,同樣的代碼也會出現在退信的 Status 欄位中。
此表彙整了 RFC 5321 的基本碼、常用擴充功能(AUTH、STARTTLS、ETRN 與 null MX)新增的代碼,以及 IANA 登錄表中的所有增強碼,並標出每個增強碼通常搭配的基本碼。大型郵件服務供應商會加上自己的說明文字與說明連結,但使用的始終是這些編號。
範例
550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox address帳號不存在時 Postfix 傳回的典型退信。重試沒有用,必須更正位址。如果以前能正常寄給這位收件者,最可能是該帳號已被停用。450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox status灰名單:伺服器暫時拒絕陌生的寄件者,等待它重試。正規的郵件伺服器會在幾分鐘後自動重試,郵件隨即被接收;而許多垃圾郵件程式從不重試。AUTH LOGIN334 VXNlcm5hbWU6334 帶有 Base64 編碼的挑戰:VXNlcm5hbWU6 是「Username:」,下一個 UGFzc3dvcmQ6 是「Password:」。如果憑證錯誤,伺服器會回應 535 5.7.8;如果要求先加密,則回應 538 或 530。使用情境
- 根據伺服器傳回的錯誤訊息,了解郵件被退回的原因。
- 判斷錯誤是暫時性的(佇列會自動重試),還是永久性的(需要處理)。
- 在應用程式、印表機或伺服器上設定寄信功能時,排查驗證失敗。
- 解讀郵件伺服器記錄檔中因 SPF、DKIM、DMARC、反向 DNS 或黑名單造成的拒收。
- 在大量寄信平台中將退信分類,移除不存在的位址。
- 閱讀以 telnet、openssl s_client 或 swaks 擷取的 SMTP 工作階段。
常見問題
4xx 錯誤和 5xx 錯誤有什麼不同?
4xx 是暫時性錯誤:寄件端伺服器會把郵件留在佇列中定期重試,一般持續四到五天,仍失敗才放棄並產生退信。5xx 是永久性錯誤:會立即退信,不做任何修改就重寄同一封郵件仍會失敗。
為什麼回應中有兩個代碼,例如 550 5.1.1?
第一個是 RFC 5321 規定必須有的三位數基本碼;第二個是 RFC 3463 的增強狀態碼,用來說明具體原因:同樣是 550,可能是信箱不存在(5.1.1)、遭政策封鎖(5.7.1)或 SPF 驗證失敗(5.7.23)。排查問題時,應以增強碼為主。
550-5.7.1 中的連字號是什麼意思?
表示這是多行回應。每一行都帶有相同的代碼,但中間的行以連字號分隔代碼與文字,最後一行則用空格,用戶端藉此判斷回應何時結束。EHLO 傳回的擴充功能清單也是同樣的格式。
位址明明存在,為什麼會被 550 5.7.1 拒收?
因為 5.7.1 針對的不是收件者,而是寄件者:伺服器不允許你把這封郵件遞送給它。常見原因包括:寄件 IP 在黑名單中、網域的 SPF、DKIM 或 DMARC 驗證失敗、IP 沒有反向 DNS,或未經驗證就試圖把伺服器當作轉送伺服器(relay)。代碼後面的文字通常會提供線索。
為什麼從應用程式寄信時會出現 530 或 535?
530 表示伺服器要求先驗證身分或啟動 TLS,才會接受郵件;535 表示使用者名稱或密碼錯誤。請確認應用程式使用 587 連接埠搭配 STARTTLS,或 465 連接埠搭配隱含式 TLS,且已啟用驗證;若是 Gmail 或 Microsoft 365 等服務供應商,還要使用應用程式密碼或 OAuth,而不是平常的登入密碼。