1. 程式人生 > >郵件發送失敗,Sendmail Headers too large

郵件發送失敗,Sendmail Headers too large

send reference 日誌 添加 headers -c 服務器 word 主題

今天遇到一個奇怪問題,用戶反饋郵件發送失敗。遠程查查吧,大小、收件人等等啥的都未超限制。怪了 . ??
於是與用戶了解發送時間,去郵件系統服務器sendmail日誌查,發現關鍵信息
“stat=Headers too large (32768 max)”。哈哈,原來是郵件頭超了,再查查用戶foxmail那封郵件,查查郵件源碼,發現源碼中 References:字段的內容太多,從14年到18年的信息都有。原來是用戶習慣在郵件的基礎上點擊全部回復,於是一封14年寫的郵件,就重復重復再重復,一直回復到啦18年,驚!

解決方案:
可以編輯 /etc/mail/submit.cf,修改sendmail支持最大頭部 :

Maximum length of the sum of all headers
#O MaxHeadersLength=32768
O MaxHeadersLength=256000

或者,讓用戶重新寫一封。。。。。

下面是郵件頭部格式記錄
--------------------------------------------?------------------------------------------
Subject: 郵件主題
Return-Path: 提供了郵件操作的電子軌跡,應提供給發送人一個回復路徑.

Received: 提供了郵件操作的電子軌跡,每一臺接收到郵件的機器都會自動添加以“Received:”開始的那一行。如果你收的郵件有多個以它開頭的行,表明這封郵件可能是被轉發或被退回的錯誤郵件。縮進的那一行是本行的繼續。
From: 它記錄了這封郵件來自哪個或哪些人的地址,但並不一定是郵件的發送人,
Sender: 如果存在的話應該總是包含實際郵件發送人的有效郵件地址.
X-organization: 以X-開始的字段是用於增加更多信息的”用戶自定義”字段.
X-Phone: 同上
Reply-to: 指出了這封信和回復地址.
Errors-to: 告訴Sendmail 應該將出錯信息送到哪裏
To: 收件人
Cc: 副本抄送
Bcc: 匿名發送, Bcc行包含某些人地址,這些人接收這封郵件,但是收件人列表的其他人並不知道這一點.
Message-ID: 郵件唯一標識符.
Subject: 主旨
Comment: 註釋,很少用.
Date: 日期
Resent-From: 重發或轉發郵件添加"resent"信頭
Resent-To:
Resent-Cc:
Resent-Bcc
Resent-Date:
Resent-Message-Id:
Return-Receipt-To: 如果它是一個消息的信頭中的一行,當這封郵件被投遞給最終目的地時,一個返回收據被發送到這個信頭行規定的地址,
Apparently-To: 當惟一的收信人信息在信封上時,它被添加到郵件中
Precedence: 它如果存在,會用後面給定的值來標明該項郵件的優先權值.
References: 通過In-Reply-To域和References域中關聯找到所有與需檢 郵件內容相關的郵件,進行內容比較驗證。 (個人理解,此字段就是記錄郵件回復記錄的信息關聯)
In-Reply-To:
Keyword:
Full-Name: 用於填定發件人的全名

郵件發送失敗,Sendmail Headers too large