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


16

在使用linux mail命令之前,是否需要设置一个邮件服务器?



@slm与该问题并不完全相同,暗示一个人需要一台SMTP服务器来运行邮件,但是我问这是否绝对必要
13年

1
是的,这可能是重复的,我已经回答过您,因为Q太具体了。仍然感觉像是一个傻瓜,但我还是回答了你8
slm

Answers:


14

不,您不需要邮件服务器发送邮件。我对Sendmail最为熟悉,可以将电子邮件即服务分为3种功能类别。MDA(邮件传递代理)为1,MTA(邮件传递代理)为2,3为MUA(邮件用户代理)。

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

当您运行mail并指定要发送邮件的地址时,sam@example.com。邮件客户端将召唤MTA(/usr/bin/sendmail),然后MTA()向DNS查询该主机/域(example.com),并找出为其MX记录指定了什么值。MX代表Mail Exchanger。

您可以使用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上连接到egg.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哪个是文件中nameserver指定的IP地址/etc/resolv.conf


这是我本地计算机上的DNS吗?
2013年

@puk-查看更新。
slm

@puk -我更增添了....
SLM

7

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

所有版本都需要MTA才能实际传递邮件,但是某些版本能够使用SMTP与远程MTA(“ smarthost”,例如ISP的邮件服务器)进行通信,而某些版本只能通过管道将邮件发送到/usr/sbin/sendmail以通过当地的MTA。

在后一种情况下,本地MTA可以是成熟的MTA,例如sendmaileximpostfix。也可以是简单的仅发送MTA,例如nullmailerssmtp。或者像msmtp这样稍微复杂一些的微型MTA ,它也支持排队邮件以便以后传送。

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

bsd-mailx不讲SMTP,只能通过管道将其发送到/usr/sbin/sendmail

hierloom-mailx可以与smarthost进行SMTP对话,也可以使用传统的“管道发送邮件”方法。

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

IMO,与msmtp仅依靠smarthost相比,使用最小的MTA效果更好,heirloom-mailx因为当Internet连接断开或无法访问smarthost时,仍需要将邮件排队等待以后传送。随着本地队列,mailcrond和其他程序只需发送和忘记任何邮件。如果没有本地队列,则在智能主机不可用时,他们必须以某种方式处理错误情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.