![mail命令需要邮件服务器吗?](https://linux22.com/image/50832/mail%E5%91%BD%E4%BB%A4%E9%9C%80%E8%A6%81%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%97%EF%BC%9F.png)
在使用linuxmail
命令之前是否需要设置邮件服务器?
答案1
不,您不需要邮件服务器来发送邮件。我最熟悉的是 Sendmail,它有 3 类功能可以实现电子邮件即服务。 MDA(邮件传送代理)为1,MTA(邮件传输代理)为2,3为MUA(邮件用户代理)。
术语令人困惑,但您并不需要 MTA 始终运行。每次 MUA ( mail
) 想要“发送”邮件时都会调用 MTA 。
当您运行mail
并指定要将邮件发送到的地址时,[email protected]
.邮件客户端将调用 MTA ( /usr/bin/sendmail
),然后 MTA 将查询该主机/域 (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
因此,客户端将尝试在端口 25 上连接到 Eggs.gnu.org 来发送此电子邮件。
DNS 服务器?
@puk 提出了以下后续问题:
这是我本地计算机上的 DNS 吗?
我对此的回答是:
@puk - 它可以采用与邮件服务器相同的方式,但通常情况并非如此。查看您的/etc/resolv.conf
文件,当您运行命令时,dig
您会注意到SERVER: ...
底部的行。这是为您的请求提供服务的 DNS 服务器。
例子
我的/etc/resolv.conf
文件包含以下内容:
nameserver 192.168.1.8
诸如此类的查询,使用dig
:
$ dig gnu.org mx
结果在底部:
;; 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
对于精明的读者,我想问一下,这是如何配置的?答案就是/etc/nsswitch.conf
文件。具体来说这一行:
hosts: files mdns4_minimal [NOTFOUND=return] dns
也就是说,首先使用文件 ( /etc/hosts
),然后使用mdns4_minimal
.这就是多播 DNS。它基本上是以前查找的缓存。最后它使用文件中指定dns
的 IP 地址。nameserver
/etc/resolv.conf
答案2
这实际上取决于mail
您使用的版本。
所有版本都需要 MTA 来实际传送邮件,但有些版本能够使用 SMTP 与远程 MTA(“智能主机”,例如您的 ISP 的邮件服务器)对话,有些版本只能通过管道将消息/usr/sbin/sendmail
发送到当地 MTA。
在后一种情况下,本地 MTA 可以是成熟的 MTA,例如发送邮件或者进出口银行或者后缀。或者它可能是一个简单的仅发送 MTA,例如空邮件程序或者ssmtp。或者稍微复杂一点的迷你 MTA,例如邮件传输协议它还支持对邮件进行排队以供稍后投递。
在自由软件和开源世界中,该mailx
软件包有两个主要变体(提供mail
命令):bsd-mailx
、 和heirloom-mailx
。该mail
命令在 GNU 中也可用mailutils
。
bsd-mailx不支持 SMTP,只能通过管道发送邮件/usr/sbin/sendmail
传家宝邮件x可以与智能主机进行 SMTP 通信以及传统的“管道到发送邮件”方法。顺便提一句,蜗牛可能是 heirloom-mailx 的最佳衍生品 - 它仍在积极开发和更新中。
GNU 邮件工具包含一些供最终用户和系统管理员使用的与邮件相关的工具,包括一个版本mail
等等。
因此,回答您的问题“您需要邮件服务器吗?”。是的,有点像。您需要一个,但是根据mail
您安装的版本,您可能不必在自己的系统上安装和配置它。
IMO,您最好至少拥有一个最小的 MTA msmtp
(或一个成熟的 MTA,如postfix
或exim
),而不是仅仅依靠智能主机,heirloom-mailx
因为当您的互联网连接中断或您的智能主机处于关闭状态时,您仍然需要对邮件进行排队以供稍后投递无法到达。通过本地队列,mail
其他crond
程序可以只发送并忘记任何邮件。如果没有本地队列,如果智能主机不可用,他们就必须以某种方式处理错误情况。