mail 命令是否需要邮件服务器?

puk*_*puk 17 mail-command

在使用 linuxmail命令之前是否需要设置邮件服务器?

slm*_*slm 14

不,您不需要邮件服务器来发送邮件。我最熟悉 Sendmail,有 3 类功能可以将电子邮件作为服务来实现。MDA(邮件传递代理)为 1,MTA(邮件传输代理)为 2,3 为 MUA(邮件用户代理)。

术语令人困惑,但您不需要一直运行 MTA。每次 MUA ( mail) 想要“发送”邮件时都会调用 MTA 。

当您运行mail并指定要发送邮件的地址时,sam@example.com. 邮件客户端将调用 MTA ( /usr/bin/sendmail),然后它将查询该主机/域 (example.com) 的 DNS,并找出为其 MX 记录指定的值。MX 代表邮件交换器。

例子

您可以使用以下dig命令查看:

$ dig gnu.org mx

; <<>> DiG 9.7.4-P1-RedHat-9.7.4-2.P1.fc14 <<>> gnu.org mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21053
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2

;; QUESTION SECTION:
;gnu.org.           IN  MX

;; ANSWER SECTION:
gnu.org.        299 IN  MX  10 eggs.gnu.org.

;; ADDITIONAL SECTION:
eggs.gnu.org.       299 IN  A   208.118.235.92
eggs.gnu.org.       299 IN  AAAA    2001:4830:134:3::10

;; Query time: 218 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct  3 17:27:22 2013
;; MSG SIZE  rcvd: 90
Run Code Online (Sandbox Code Playgroud)

因此,客户端将尝试通过端口 25 连接到 egg.gnu.org 以发送此电子邮件。

DNS服务器?

@puk 问了以下后续问题:

这是我本地机器上的 DNS 吗?

我回答说:

@puk - 它可以采用与邮件服务器相同的方式,但通常不是。查看您的/etc/resolv.conf文件,当您运行该dig命令时,您会注意到SERVER: ...底部的一行。那是为您的请求提供服务的 DNS 服务器。

例子

我的/etc/resolv.conf文件包含以下内容:

nameserver 192.168.1.8
Run Code Online (Sandbox Code Playgroud)

和这样的查询,使用dig

$ dig gnu.org mx
Run Code Online (Sandbox Code Playgroud)

结果在底部:

;; Query time: 259 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct  3 17:46:13 2013
;; MSG SIZE  rcvd: 90
Run Code Online (Sandbox Code Playgroud)

对于精明的读者,我要问一个问题,这是如何配置的?答案是/etc/nsswitch.conf文件。特别是这一行:

hosts:      files mdns4_minimal [NOTFOUND=return] dns
Run Code Online (Sandbox Code Playgroud)

也就是说,首先使用文件 ( /etc/hosts),然后使用mdns4_minimal. 那是一个多播DNS。它基本上是以前查找的缓存。最后,它使用文件中指定dns的 IP 地址。nameserver/etc/resolv.conf


cas*_*cas 7

这实际上取决于mail您使用的是哪个版本。

所有版本都需要一个 MTA 来实际发送邮件,但有些版本能够使用 SMTP 与远程 MTA(“智能主机”,例如您的 ISP 的邮件服务器)通信,而有些版本只能通过管道将邮件/usr/sbin/sendmail发送到本地 MTA。

在后一种情况下,本地 MTA 可以是成熟的 MTA,如sendmaileximpostfix。或者它可以是一个简单的只发送 MTA,如nullmailerssmtp。或者稍微复杂一点的迷你 MTA,比如msmtp,它也支持排队邮件以供以后交付。

在自由软件和开源世界中,mailx包(提供mail命令)有两个主要变体:bsd-mailxheirloom-mailx.

bsd-mailx不会说 SMTP,只能通过管道发送邮件/usr/sbin/sendmail

hierloom-mailx可以将 SMTP 与智能主机以及传统的“管道到发送邮件”方法进行通信。

所以,回答你的问题“你需要邮件服务器吗?”。是的,有点。您需要一个,但是,根据您安装的邮件版本,您可能不必在自己的系统上安装和配置它。

IMO,您最好使用最小的 MTA,而msmtp不是仅仅依靠智能主机,heirloom-mailx因为当您的互联网连接中断或您的智能主机无法访问时,您仍然需要排队邮件以供稍后交付。随着本地队列,mailcrond和其他程序只需发送和忘记任何邮件。如果没有本地队列,如果智能主机不可用,他们必须以某种方式处理错误情况。