Answers:
不,您不需要邮件服务器发送邮件。我对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,以发送此电子邮件。
@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
。
这实际上取决于mail
您使用的版本。
所有版本都需要MTA才能实际传递邮件,但是某些版本能够使用SMTP与远程MTA(“ smarthost”,例如ISP的邮件服务器)进行通信,而某些版本只能通过管道将邮件发送到/usr/sbin/sendmail
以通过当地的MTA。
在后一种情况下,本地MTA可以是成熟的MTA,例如sendmail或exim或postfix。也可以是简单的仅发送MTA,例如nullmailer或ssmtp。或者像msmtp这样稍微复杂一些的微型MTA ,它也支持排队邮件以便以后传送。
在自由软件和开源世界中,该mailx
软件包有两个主要变体(提供mail
命令):bsd-mailx
和heirloom-mailx
。
bsd-mailx不讲SMTP,只能通过管道将其发送到/usr/sbin/sendmail
hierloom-mailx可以与smarthost进行SMTP对话,也可以使用传统的“管道发送邮件”方法。
因此,回答您的问题“您需要邮件服务器吗?”。是的,有点。您需要一个,但是,根据安装的邮件版本,您可能不必在自己的系统上安装和配置它。
IMO,与msmtp
仅依靠smarthost相比,使用最小的MTA效果更好,heirloom-mailx
因为当Internet连接断开或无法访问smarthost时,仍需要将邮件排队等待以后传送。随着本地队列,mail
并crond
和其他程序只需发送和忘记任何邮件。如果没有本地队列,则在智能主机不可用时,他们必须以某种方式处理错误情况。