AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 774934
Accepted
mgw
mgw
Asked: 2024-04-21 18:06:59 +0800 CST2024-04-21 18:06:59 +0800 CST 2024-04-21 18:06:59 +0800 CST

由于使用通讯组列表时感知到的标头语法错误,来自各种基于 Linux 的系统拒绝的电子邮件

  • 772

我错过了什么...

给出:基于 Linux 堆栈的电子邮件服务器系统(托管),带有 Webmail 组件。各种电子邮件客户端和其他网络邮件系统都涉及并对此进行了测试。

我们使用网络邮件客户端通过分发列表分发电子邮件。邮件系统发送类似于以下示例的电子邮件(从源电子邮件标头复制)。organisation通讯组列表的名称在哪里:

Date: Sat, 20 Apr 2024 18:35:45 +0200
Message-ID: <[email protected]>
From: [email protected]
To: organisation: [email protected], [email protected];
Subject: here goes the subject

到目前为止,一切顺利,电子邮件发送正常(甚至发送到 GMX 邮箱),并且没有收到“无法发送的电子邮件”消息。

问题

接下来,从某些电子邮件客户端或网络邮件系统(例如 GMX 网络邮件)回复“所有人”会导致明显错误的标头(而使用例如 Thunderbird 会产生正确的格式)。这些回复会被某些系统拒绝;示例消息:

您的电子邮件已被我们的邮件系统拒绝,因为电子邮件标头中提供的信息不符合 RFC 5322 和 RFC 2047 中的规范。标头字段“收件人”在语法上不正确。

有问题的电子邮件标题如下所示(请特别注意“To:”行):

Received: from ...
Reply-To: ...
From: <[email protected]>
To: <[email protected]>, <organisation: [email protected]>;
References: <[email protected]>
In-Reply-To: <[email protected]>
Subject: AW: here goes the subject

显然,某些邮件客户端将提供的通讯组列表名称解释为第一个收件人的电子邮件地址的一部分。

目前的问题是:(1)谁是罪魁祸首?(2)正确的格式是什么?(3) 分发原始消息的服务器是否未遵循某些 RFC,或者这是邮件客户端或邮件系统中的故障?

=====最后修改=====

这显然是部落的一个错误。票提出了。

email
  • 2 2 个回答
  • 98 Views

2 个回答

  • Voted
  1. Best Answer
    symcbean
    2024-04-22T17:17:42+08:002024-04-22T17:17:42+08:00

    (这可能是错误的,但保持原样,因为下面有一些有用的讨论)

    其中,组织是通讯组列表的名称:

    无论生成原始电子邮件的是什么,这里都有问题。邮箱名称(@domain 之前的位)可以包含空格、@ 字符和各种其他奇怪的东西。因此,转发正确地将 To: 标头中的第一个条目解释为“organization: [email protected] ”。

    我需要进行大量阅读才能确定显式空格是否需要引用或转义(邮箱名称中的“@”字符需要)。因此,我无法告诉您声称这不符合 RFC 的错误是否准确 - 但是这一点没有实际意义,因为即使不需要,这也不是您想要的行为。

    • 1
  2. Chris Davies
    2024-04-27T23:10:27+08:002024-04-27T23:10:27+08:00

    RFC 5322是组地址的当前规范。它们在附录 A.1.3 中进行了解释,其中写道:

    From: Pete <[email protected]>
    To: A Group:Ed Jones <[email protected]>,[email protected],John <[email protected]>;
    […]
    

    在此消息中,该字段有一个名为“ A GroupTo: ”的单个组收件人,其中包含 3 个地址 [...]

    地址规范在第 3.4 节中正式定义,从这里我将只挑选相关部分:

    3.4. 地址规范

    地址可以是单个邮箱,也可以是一组邮箱。

    group           =   display-name ":" [group-list] ";" [CFWS]
    group-list      =   mailbox-list / CFWS
    mailbox-list    =   (mailbox *("," mailbox))
    mailbox         =   name-addr / addr-spec
    name-addr       =   [display-name] angle-addr
    angle-addr      =   [CFWS] "<" addr-spec ">" [CFWS]
    

    和

    3.4.1. 地址规格规范

    addr-spec 是一个特定的 Internet 标识符,包含本地解释的字符串,后跟 at 符号(“@”,ASCII 值 64),最后是 Internet 域。[...] 注释和折叠空格不应该在 addr-spec 中的“@”周围使用。

    addr-spec       =   local-part "@" domain
    local-part      =   dot-atom / quoted-string
    domain          =   dot-atom / domain-literal
    

    和

    3.2.3. 原子

    dot-atom        =   [CFWS] dot-atom-text [CFWS]
    

    我在这里省略了obs-*RFC 5322 正式规范中存在的条目,因为它们引用了过时的模式。CFWS表示允许注释和/或折叠空白。

    因此,这两种格式都应被以下定义所接受group-list:

    A Group:Ed Jones <[email protected]>,[email protected],John <[email protected]>;
    A Bare Group:[email protected],[email protected],[email protected];
    

    将这种解释应用到您自己的组列表中,我想说您所拥有的内容是有效的:

    To: organisation: [email protected], [email protected];
    

    因此,有问题的是接收系统。(或者是具有积极标头重写的中间系统。如果您通过防火墙设备发送电子邮件,或者您的客户通过防火墙设备接收电子邮件,我会检查这一点。)

    • 0

相关问题

  • Mutt abook 空查询

  • 使用 sendmail -t 处理非标准 SMTP 端口

  • 如何使用 Sendmail 添加附件(选项有限)?

  • 是否可以在 Maildir 模式下为 IMAP 服务器实现“安全删除”?

  • 接收有关全新 Debian 的电子邮件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve