为什么 Postfix 接受来自它不负责的电子邮件的 MAIL FROM

sam*_*old 3 email email-server postfix

我正在测试 postfix 安装。我注意到,如果我尝试从另一个域 ( unknown@NotMyDomain.com)上的虚构帐户向我的本地用户之一 ( user@MyDomain.com) 发送邮件,电子邮件仍会发送给我的用户。

MAIL FROM:<unknown@notmydomain.com>

RCPT TO:<user@mydomain.com>
Run Code Online (Sandbox Code Playgroud)

我不确定这是正常行为还是会导致问题。例如,我担心用户可能会使用服务器发送并非真正来自他们声称来自的电子邮件帐户的欺骗性电子邮件。

PS 我还处于学习 postfix 的早期阶段,所以不确定我的问题是否有意义。


按@ DerfK的评论,我测试了一个开放的继电器(其中两个MAIL FROM,并RCPT TO没有在此服务器上托管),这是我所得到的。出于某种原因,它接受RCPT TO,然后在我输入主题说再见。那么这是好是坏?

HELO test.mydomain.com
250 mail
MAIL FROM:<user@notmydomain1.com>
250 2.1.0 Ok
RCPT TO:<user@notmydomain2.com>
250 2.1.5 Ok
Subject: testing for open relay
221 2.7.0 Error: I can break rules, too. Goodbye.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

小智 8

你忘记了数据!我正是有这个问题。你必须有命令数据,然后是主题。所以它解决了你的问题。看起来像这样:

HELO test.mydomain.com

250 mail

MAIL FROM:<user@notmydomain1.com>

250 2.1.0 Ok

RCPT TO:<user@notmydomain2.com>

250 2.1.5 Ok

Data

354 End data with <CR><LF>.<CR><LF>

subject: hello

i love you, oh my god! Why do i forget data

.

250 2.0.0 Ok: queued as E10601E09B1

quit
Run Code Online (Sandbox Code Playgroud)


Fal*_*mot 6

这是正常的行为。其他 SMTP 服务器作为 SMTP 客户端连接到您的服务器,以将邮件传送到您的域。

为了解决这个欺骗问题,有 SPF 和 DKIM。你应该检查出来。

  • 绝对正常。现在,您应该担心何时可以将邮件从非您的域发送到非您的域。在这种情况下,您有一个开放的继电器。 (4认同)
  • @sameold 你被踢了,因为你说 SMTP 错了。在`RCPT TO:`之后尝试`DATA`,然后如果它要接受电子邮件,它会告诉你一次写一行,然后以`.`开头的一行结束。这是您放置 Subject: 和其他标题/正文内容的地方。一旦你到达`.`,如果它说OK,那么你就有了真正的问题。请参阅 [wikipedia](http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol) 上的示例 (4认同)

Vad*_*dar 5

关于您的第一种情况:SMTP 服务器接受它负责的帐户的邮件是正常的,基本上这就是它的工作方式,只需设置垃圾邮件检查软件,如 SpamAssassin(使用最广泛的免费解决方案,支持 SPF/DKIM 检查)。

至于您的问题可能出现在邮件服务器设置的早期阶段,这里有一些与处理虚构邮件相关的技巧。

在大多数情况下,普通用户不会试图欺骗他们的电子邮件。更常见的是,这是垃圾邮件发送者的行为,因此您可以根据其内容过滤此类邮件。更复杂的设置可以包括:

  1. RBL/DNSBL/RHSBL检查(可能会给出许多错误拒绝,因为许多甚至有效的邮件发件人都会破坏某些 RFC)。
  2. 发件人地址验证(请参阅Postfix 的地址验证自述文件)。这也可能会拒绝一些有效的邮件(基本上又是因为配置错误,例如不允许使用空邮件MAIL FROM: <>)。
  3. 灰名单。就我个人的经验而言,由于垃圾邮件发送者的不耐烦,这可以抵御高达 90% 的垃圾邮件。但这会稍微减慢有效邮件的传递速度,但在大多数情况下这不是问题。
  4. SPF/DKIM 验证(虽然不是强制支持它)。
  5. 各种自定义内容检查(包括已经提到的垃圾邮件检查器)。

如果我们谈论 postfix,它提供了相当灵活的能力来限制哪些邮件是可接受的。

关于您的更新:错误消息后缀只是说明您违反了 SMTP 规范(没有Subject:SMTP 命令,请参阅SMTP RFC,Subject您可能表示的标头是邮件正文的一部分,必须在DATASMTP 命令之后提供)。从您提供的成绩单中,我无法可靠地判断您的 postfix 是否用作开放中继,因为没有有关具有该 SMTP 会话的客户端的信息。

使用基本设置 postfix,据我所知,允许从以下地址中继邮件(这意味着您可以指定任何电子邮件地址,而不仅仅是在 postfix 负责的域中):

  • 本地主机
  • 可信网络(通过 mynetworks 设置)

因此,如果您从服务器 telneted postfix,它可能会在其上运行。如果来自互联网的任何地方,那么事情就很糟糕。

此外,您可能还想仔细阅读SMTPD 中继和访问控制,以加深有关后缀中继访问主题的准确知识。

希望这可以帮助。