为了澄清我的问题的意图,让我做一个比喻问题“将数据放入文件的最简单方法是什么?”
GUI 用户将数据放入(新)文件的常用方法是双击程序图标,单击菜单栏,单击“新建”,单击“保存”,单击选择文件的位置,然后键入文件名,然后单击“保存”按钮。
这最简单的将数据放入文件的方法(从命令行)是:echo whatever > file
据我了解,电子邮件地址最初是指机器上的实际用户名和实际机器名称。因此,如果您登录的计算机(例如,在大学)的 IP 为 7.7.7.7,并且如果您使用用户名 登录pete
,则可以通过发送至 的电子邮件与您联系[email protected]
。 (是对的吗?)
重点是这封电子邮件是直接相关与您的用户名和计算机。因此,为什么我从工作服务器的命令行收到的电子邮件显示为从“发送”[电子邮件受保护]”。
所以,是什么最小的发送时需要设置并收到两台计算机之间的电子邮件(直接发送到命令行用户帐户),无需第三台计算机或 Google 服务器或 MS Exchange 或其他任何东西?
(显然,对于 UNIX 和 Linux 系统。主要对 Linux 感兴趣,不过如果包括 Mac 那就太好了。)
注意:如果有大量不同的方法可以做到这一点,那么这“太宽泛”,请帮助我编辑问题。我不是在要求软件推荐,而是在询问这些部件如何在最简单的级别上组合在一起,而无需代理、中继和其他复杂性。
编辑:到目前为止的答案很有帮助,但省略了有关如何进行的任何详细信息收到电子邮件。看来我错过的谷歌搜索短语是“最小的 MTA Linux”,但如果有人想更完整地回答,我会喜欢它。 (如果没有,我将不得不解决这个问题并最终自我回答。):)
答案1
我假设两个用户和他们的两台计算机是独立的,例如用户 A 不能简单地访问用户 B 的计算机并将文件写入文件系统。
这意味着最小的config 是 A 可以连接到 B 机器上的 MTA 的配置,并且 MTA 认为自己负责向 B 机器/域发送电子邮件。
这意味着当 A 说它有一条消息要发给 B 时,MTA承担责任用于保护消息到达 B 的邮箱。
往下看,这意味着:
- A 连接到 B 的 MTA 的侦听器端口(传统上端口 TCP/25)
- A 识别发件人和收件人,B 的 MTA 表示 ok
- A 传递消息,B 的 MTA 发送响应以表明其承担责任
- B 的 MTA 然后将邮件写入磁盘(B 的邮箱)
还有一些奇怪的方法可以解决这个问题,我顺便提到了这一点。如果 A 是 B 计算机上的 root 用户,则 A 只需创建/编辑合适的文件即可将消息直接附加到 B 的邮箱中。例如,通过编辑 mbox 文件。但这是一个有点病态的案例。
答案2
最简单的通常在两台计算机之间发送邮件的方法是在发送和接收计算机上运行“邮件传输代理”(MTA,接受 SMTP 格式电子邮件的程序)。然后,您可以在发送计算机上运行任何格式化邮件的命令行程序来联系发送 MTA,并将其传送到接收 MTA。例如
echo "This is a text" | mail -s "This is the subject"
足够。还有各种其他程序可以发送/格式化/阅读邮件。
在紧要关头,您可以直接联系接收 MTAtelnet
等,如其他答案中所述。这是更简单的,但我不会称其为“更简单”。
答案3
如果您只想向发送方和接收方添加软件,那么您还需要 DNS 服务器。 MTA 需要它来发送邮件。
设置是在两台服务器上一个封闭的网没有互联网接入。这里列出了主机名(需要)和 IP 号码。您可以使用任何 IP 号码。
7.7.7.7 foo.org
7.7.7.8 bar.org
您foo.org
必须安装 DNS 服务器(即绑定),并且bar.org
应该使用它。两台服务器都应该有 MTA (postfix/exim4)。
配置完成后,您可以从以下位置运行它bar.org
:
john@bar:~$ date | mail -s Test [email protected]