首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SMTP标头字段是否有可接受的最大行长?

SMTP标头字段是否有可接受的最大行长?
EN

Stack Overflow用户
提问于 2019-07-24 01:18:01
回答 2查看 1K关注 0票数 1

问题

如果没有标准,作为“最大页眉行长度”的好值是什么?

对于SMTP头行的最大长度是否有某种非正式的标准?

上下文

我使用Mime4J解析SMTP消息。

最近,我遇到了一个与非常长的标题行相关的解析失败,这是由微软前沿显然添加的标题引起的。违规的标题行如下所示:

代码语言:javascript
复制
x-forefront-antispam-report: 
    CIP:94.245.94.31;IPV:NLI;CTRY:IE;EFV:NLI;SFV:NSPM;SFS:(10019020)(4636009)(136003)(376002)(396003)(346002)(39850400004)(2980300002)(62414003)(199004)(189003)(11346002)(2501003)(6916009)(5640700003)(8936002)(126002)(76176011)(9326002)(486006)(2476003)(476003)(33656002)(3480700005)(2906002)(99286004)(568964002)(21480400003)(446003)(606006)(6506007)(15974865002)(14454004)(61614004)(229853002)(33964004)(53546011)(71200400001)(71190400001)(26005)(102836004)(66066001)(186003)(5660300002)(5070765005)(6246003)(246002)(235185007)(55016002)(316002)(966005)(7696005)(356004)(3846002)(8676002)(9686003)(86362001)(54896002)(6306002)(790700001)(236005)(6116002)(106002)(7066003)(7636002)(7736002)(70586007)(25786009)(70206006)(7116003)(52536014)(14444005)(74316002)(7596002)(16586007)(336012)(53386004)(5024004)(45080400002)(478600001)(71440200001);DIR:OUT;SFP:1102;SCL:1;SRVR:DB8PR03MB5548;H:eu22-emailsignatures-cloud.codetwo.com;FPR:;SPF:Pass;LANG:en;PTR:eu22-emailsignatures-cloud.codetwo.com;A:1;MX:1;

这导致来自Mime4j的以下解析错误:

代码语言:javascript
复制
org.apache.james.mime4j.MimeIOException: org.apache.james.mime4j.io.MaxLineLimitException: Maximum line length limit (1000) exceeded

通过配置Mime4J以接受较长的行,我能够解决这个问题:

代码语言:javascript
复制
    msgFactory.setAttribute(
      "MimeEntityConfig",
      new MimeConfig.Builder().setMaxLineLen(2000).build() );

我把它翻了一番,到2000年,因为我有足够的空间堆空间,所以这不是一个问题。

但实际上,我可以通过把最大线长提高到1001来解决这个问题。这个标题行的长度正好是999个字符,默认的Mime4J值是1000,这似乎不仅仅是巧合。

整个问题可能是由于接收到的邮件使用windows行结束(即两个字节而不是一个字节)而导致的错误。

看起来MS ForefrontMime4j是一致的,因为最大长度是1000,只是有人在线头上交叉了一下。

谷歌给了我这个答案,这意味着没有标准的最大长度:https://stackoverflow.com/a/2721849/924597

有“正确”的价值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-24 10:51:51

SMTP定义包含新行序列的最大线长1000八进制。

似乎最前沿的软件是一个有缺陷的软件。

也就是说,软件不能正确地处理任意长的行是很愚蠢的。您根本不需要定义最大长度。

在.NET空间中,我的MIME解析器库没有为解析器定义最大行长,它只有为格式输出定义的最大行长度以符合规范。

票数 1
EN

Stack Overflow用户

发布于 2022-08-17 23:04:32

jstedfast指出的标准才是真正的答案。但请注意,Microsoft (其他人) Outlook可能会在References头中生成行的时间比此稍长(最高可达1012 ish)。

请参阅电子邮件/e547vaf/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57174013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档