PROOF:20161201 How to Build an Email Server on Ubuntu Linux

@WangYiHang 首先恭喜你完成了第一篇译稿。等下就会发布到网站、微博、微信。不过这篇稿件中有一些小问题,希可以提请注意:
1、咱们仓库有篇中文排版指北,你可以参考一下,最典型的就是英文和中文间要加个空格。
2、维持原文的 MD 标签,大部分都没问题,就是丢了链接了

看的出来是认真翻译了,也做了不少功课,辛苦了。我做的校对你可以参考下。加油!
This commit is contained in:
wxy 2016-12-28 17:13:20 +08:00
parent 9803e631cf
commit 5b12f9c9fd

View File

@ -1,50 +1,45 @@
如何在Ubuntu环境下搭建邮件服务器 如何在 Ubuntu 环境下搭建邮件服务器(一)
============================================================ ============================================================
![mail server](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/mail-stack.jpg?itok=SVMfa8WZ "mail server") ![mail server](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/mail-stack.jpg?itok=SVMfa8WZ "mail server")
在这个系列的文章中我们将通过使用Postfix,Dovecot,和openssl这三款工具来为你展示如何在ubuntu系统上搭建一个既可靠又很容易配置的邮件服务器。[Creative Commons Zero][2]Pixabay
在这个容器和宏服务技术日新月异的时代值得庆幸的是有些事情并没有改变例如搭建一个Linux下的邮件服务器 It's still a dance of many steps and knitting together several different servers, 一旦你将这些步骤组合在一起,一切都是那么和谐稳定, instead of winking in and out of existence like microservices. 在这一系列的教程中我们将在ubuntu系统上构建一个既可靠又容易配置的邮件服务器通过使用Postfix, Dovecot, 和OpenSSL这三款工具。 在这个系列的文章中,我们将通过使用 Postfix、Dovecot 和 openssl 这三款工具来为你展示如何在 ubuntu 系统上搭建一个既可靠又易于配置的邮件服务器。
Postfix是一个古老又可靠的软件它比sendmail更加容易配置和使用原始的Unix系统的MTA软件(还有人仍然在用sendmail吗?). Exim是一个在Debain系统上的默认的MTA软件它比postfix更加轻量而且超级容易配置因此我们在将来的教程中会推出Exim的教程。 在这个容器和微服务技术日新月异的时代,值得庆幸的是有些事情并没有改变,例如搭建一个 Linux 下的邮件服务器,仍然需要许多步骤才能间隔各种服务器耦合在一起,而当你将这些配置好,放在一起,却又非常可靠稳定,不会像微服务那样一睁眼有了,一闭眼又没了。 在这个系列教程中我们将通过使用 Postfix、Dovecot 和 openssl 这三款工具在 ubuntu 系统上搭建一个既可靠又易于配置的邮件服务器。
(翻译者注 : MTA : 将来自MUA的信件转发给指定的用户的程序一般被称之为因特网邮件传送代理MTAMail Transfer Agent , 详情请阅读[维基百科](https://en.wikipedia.org/wiki/Message_transfer_agent)。在linux/Unix系统上最著名的MTA有sendamil、qmail等程序。)。
Postfix 是一个古老又可靠的软件,它比原始的 Unix 系统的 MTA 软件 sendmail 更加容易配置和使用还有人仍然在用sendmail 吗?)。 Exim 是 Debain 系统上的默认 MTA 软件,它比 Postfix 更加轻量而且超级容易配置,因此我们在将来的教程中会推出 Exim 的教程。
Dovecot(译者注 : 详情请阅读[维基百科](https://en.wikipedia.org/wiki/Dovecot_(software)))和Courier是两个非常受欢迎的优秀的IMAP/POP3协议的服务器软件Dovecot更加的轻量并且更加容易配置。 DovecotLCTT 译注:详情请阅读[维基百科](https://en.wikipedia.org/wiki/Dovecot_(software))和 Courier 是两个非常受欢迎的优秀的 IMAP/POP3 协议的服务器软件Dovecot 更加的轻量并且易于配置。
你必须要保证你的邮件是安全的因此我们就需要使用到OpenSSL这个软件OPENSSL也支持一些很好用的工具来测试你的邮件服务器。 你必须要保证你的邮件通讯是安全的,因此我们就需要使用到 OpenSSL 这个软件OpenSSL 也提供了一些很好用的工具来测试你的邮件服务器。
为了简单起见,在这一系列的教程中,我们将指导大家安装一个在公网上的邮件服务器,你应该拥有一个公网的网络而且需要确保它是开启的而且正在正常工作,[查看如何获取一个公网服务器的教程请点击这里]然后你就可以注册你的域名将你的域名解析到你的公网服务器的IP并为你的服务器配置相应的防火墙这个过程网上已经有很多很详细的教程了这里不再赘述请大家认真完成这个作业。 为了简单起见,在这一系列的教程中,我们将指导大家安装一个在局域网上的邮件服务器,你应该拥有一个局域网内的域名服务,并确保它是启用且正常工作的,查看这篇“[使用 dnsmasq 为局域网轻松提供 DNS 服务][5]”会有些帮助,然后,你就可以通过注册域名并相应地配置防火墙,来将这台局域网服务器变成互联网可访问邮件服务器。这个过程网上已经有很多很详细的教程了,这里不再赘述,请大家继续跟着教程进行即可。
### 一些术语 ### 一些术语
让我们先来快速了解一些术语,因为当我们了解了这些术语的时候就能知道这些见鬼的东西到底是什么。 :D 让我们先来快速了解一些术语,因为当我们了解了这些术语的时候就能知道这些见鬼的东西到底是什么。 :D
> * **MTA**: Mail transfer agent(邮件转发代理) 基于SMTP协议(简单邮件传输协议)的服务端, 就像PostfixEximSendmail ,SMTP服务端在这些工具之间进行相互通信。 * **MTA**邮件传输代理Mail Transfer Agent基于 SMTP 协议(简单邮件传输协议)的服务端,比如 Postfix、Exim、Sendmail 等。SMTP 服务端彼此之间进行相互通信LCTT 译注 : 详情请阅读[维基百科](https://en.wikipedia.org/wiki/Message_transfer_agent))。
* **MUA**: Mail user agent(邮件用户代理)你本地的邮件客户端,例如 : Evolution, KMail, Claws Mail, 或者 Thunderbird(译者注 : 例如国内的foxmail)。 * **MUA** 邮件用户代理Mail User Agent你本地的邮件客户端例如 : Evolution、KMail、Claws Mail 或者 ThunderbirdLCTT 译注 : 例如国内的 Foxmail
* **POP3**: Post-office protocol, the simplest(邮局协议版本3) POP3协议这个简单的协议是为了从SMTP服务器中获取邮件并提供给你本地的邮件客户端一个POP服务端是非常简单而且很小巧的你可以为数以千计的用户提供服务(From a single box?)。 * **POP3**邮局协议Post-Office Protocol版本 3将邮件从 SMTP 服务器传输到你的邮件客户端的的最简单的协议。POP 服务端是非常简单小巧的,单一的一台机器可以为数以千计的用户提供服务。
* **IMAP**: Interactive message access protocol IMAP协议(邮件访问协议)许多企业使用这个协议因为邮件可以被保存在服务器上所以用户不必担心会丢失消息IMAP服务器需要大量的内存和存储空间。 * **IMAP** 交互式消息访问协议Interactive Message Access Protocol许多企业使用这个协议因为邮件可以被保存在服务器上而用户不必担心会丢失消息。IMAP 服务器需要大量的内存和存储空间。
* **TLS**: Transport socket layer(安全传输层协议),一个SSL(Secure Sockets Layer 安全套接层)的改良版,为身份认证提供了加密的传输服务。 * **TLS**传输套接层Transport socket layer是 SSLSecure Sockets Layer安全套接层的改良版为 SASL 身份认证提供了加密的传输服务层。
* **SASL**: Simple authentication(简单验证安全层) and security layer 简单身份认证与安全层 为需要加密身份认证的用户服务SASL进行身份认证而上面说的TLS保证数据进行加密传输。 * **SASL**简单身份认证与安全层Simple Authentication and Security Layer用于认证用户。SASL进行身份认证而上面说的 TLS 提供认证数据的加密传输。
* **StartTLS**: 一个像TLS一样众所周知的协议 它提供一种方式将纯文本连接升级为加密连接TLS或SSL * **StartTLS**: 也被称为伺机 TLS 。如果服务器双方都支持 SSL/TLSStartTLS 就会将纯文本连接升级为加密连接TLS 或 SSL。如果有一方不支持加密则使用明文传输。StartTLS 会使用标准的未加密端口 25 SMTP、 110POP3和 143 IMAP而不是对应的加密端口 465SMTP、995POP3 和 993 IMAP
只有通信的双方都支持SSL/TLS的时候才会进行加密如果一方不支持加密则使用明文传输).StartTLS会使用标准的端口 25 (SMTP), 110 (POP3), and 143 (IMAP) 来进行明文通信以代替对应端口的加密通信465 (SMTP), 995 (POP3), and 993 (IMAP)
### 是的 我们仍然在使用snedmail这个工具 ### 啊,我们仍然有 sendmail
绝大多数的Linux版本仍然还保留着 `/usr/sbin/sendmail` . 在大多数的Linux发行版中`/usr/sbin/sendmail` 会创建一个符号链接到你已经安装的MTA软件然而很多版本的Linux依然还保留着`/usr/sbin/sendmail`,这也是故意这样做的。 绝大多数的 Linux 版本仍然还保留着 `/usr/sbin/sendmail` 。 这是在那个 MTA 只有一个 sendmail 的古代遗留下来的痕迹。在大多数 Linux 发行版中,`/usr/sbin/sendmail` 会符号链接到你安装的 MTA 软件上。如果你的 Linux 中有它,不用管它,你的发行版会自己处理好的。
### 如何安装postfix
`apt-get install postfix`
你可以直接使用apt-get来安装在你安装postfix你要特别小心安装程序会打开一个向导这个向导会询问你想到搭建的服务器类型你要选择"Internet Server",为你的公网服务器,假设你的域名服务已经正确配置,(我这么多次提到这个是因为经常有人在这里出现错误)你可以使用你的hostname 。
### 安装 Postfix
使用 `apt-get install postfix` 来做基本安装时要注意(图 1安装程序会打开一个向导询问你想要搭建的服务器类型你要选择“Internet Server”虽然这里是局域网服务器。它会让你输入完全限定的服务器域名例如 myserver.mydomain.net。对于局域网服务器假设你的域名服务已经正确配置(我多次提到这个是因为经常有人在这里出现错误),你也可以只使用主机名。
![Postfix](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/postfix-1.png?itok=NJLdtICb "Postfix") ![Postfix](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/postfix-1.png?itok=NJLdtICb "Postfix")
图 1: `Postfix` 的配置。[Creative Commons Zero][1]Carla Schroder *图 1Postfix 的配置。*
ubuntu系统会为postfix创建一个配置文件启动三个守护进程 : `master, qmgr`, and `pickup`There is no Postfix command or daemon. Ubuntu 系统会为 Postfix 创建一个配置文件,并启动三个守护进程 : `master`、`qmgr` 和 `pickup`,这里没用一个叫 Postfix 的命令或守护进程。LCTT 译注:名为 `postfix` 的命令是管理命令。)
``` ```
$ ps ax $ ps ax
@ -53,14 +48,14 @@ $ ps ax
6498 ? S 0:00 qmgr -l -t unix -u 6498 ? S 0:00 qmgr -l -t unix -u
``` ```
你可以使用postfix对你的配置文件的语法进行检查如果你的配置文件是没有语法错误的那么就不会有相应的输出。 你可以使用 Postfix 内置的配置语法检查来测试你的配置文件,如果没用发现语法错误,不会输出任何内容。
``` ```
$ sudo postfix check $ sudo postfix check
[sudo] password for carla: [sudo] password for carla:
``` ```
可以使用 `netstat` 来验证 `postfix` 是否正在监听25端口。 使用 `netstat` 来验证 `postfix` 是否正在监听 25 端口。
``` ```
$ netstat -ant $ netstat -ant
@ -68,7 +63,7 @@ tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp6 0 0 :::25 :::* LISTEN tcp6 0 0 :::25 :::* LISTEN
``` ```
现在让我们再来让古老的 `telnet` 躁起来进行测试 : 现在让我们再操起古老的 `telnet` 来进行测试 :
``` ```
$ telnet myserver 25 $ telnet myserver 25
@ -76,7 +71,7 @@ Trying 127.0.1.1...
Connected to myserver. Connected to myserver.
Escape character is '^]'. Escape character is '^]'.
220 myserver ESMTP Postfix (Ubuntu) 220 myserver ESMTP Postfix (Ubuntu)
**EHLO myserver** EHLO myserver
250-myserver 250-myserver
250-PIPELINING 250-PIPELINING
250-SIZE 10240000 250-SIZE 10240000
@ -86,29 +81,28 @@ Escape character is '^]'.
250-ENHANCEDSTATUSCODES 250-ENHANCEDSTATUSCODES
250-8BITMIME 250-8BITMIME
250 DSN 250 DSN
**^]** ^]
telnet> telnet>
``` ```
嘿,我们已经验证了我们的服务器名,而且postfix正在监听25端口而且正常响应了我们键入的命令。 嘿,我们已经验证了我们的服务器名,而且 Postfix 正在监听 SMTP 的 25 端口而且响应了我们键入的命令。
按下 `^]` 终止连接,返回 telnet。输入 `quit` 来退出 telnet。输出的 ESMTP扩展的 SMTP 250 状态码如下。
LCTT 译注: ESMTP (Extended SMTP),即扩展 SMTP就是对标准 SMTP 协议进行的扩展。详情请阅读[维基百科](https://en.wikipedia.org/wiki/Extended_SMTP)
输入quit来退出telnet例如 : 你刚才键入你服务器的交互环境的那些命令是粗体显示的输出的信息是ESMTP协议的状态码。 * **PIPELINING** 允许多个命令流式发出,而不必对每个命令作出响应。
(译者注 : ESMTP (Extended SMTP),是扩展 SMTP 就是对标准 SMTP 协议进行的扩展. 详情请阅读[维基百科](https://en.wikipedia.org/wiki/Extended_SMTP)) * **SIZE** 表示服务器可接收的最大消息大小。
* **VRFY** 可以告诉客户端某一个特定的邮箱地址是否存在,这通常应该被取消,因为这是一个安全漏洞。
* **ETRN** 适用于非持久互联网连接的服务器。这样的站点可以使用 ETRN 从上游服务器请求邮件投递Postfix 可以配置成延迟投递邮件到 ETRN 客户端。
* **STARTTLS** (详情见上述说明)。
* **ENHANCEDSTATUSCODES**,服务器支撑增强型的状态码和错误码。
* **8BITMIME**,支持 8 位 MIME这意味着完整的 ASCII 字符集。最初,原始的 ASCII 是 7 位。
* **DSN**,投递状态通知,用于通知你投递时的错误。
> * PIPELINING 允许多个命令同时执行,而不必对每个命令作出响应。 Postfix 的主配置文件是: `/etc/postfix/main.cf`,这个文件是安装程序创建的,可以参考[这个资料][6]来查看完整的 `main.cf` 参数列表, `/etc/postfix/postfix-files` 这个文件描述了 Postfix 完整的安装文件。
* SIZE tells 表示服务器可接收的最大消息大小。
* VRFY 可以告诉客户端某一个特定的邮箱地址是否存在,这通常被忽略 ,因为有可能会是一个安全漏洞。
* ETRN 适用于具有不规则不规则的互联网连接连接连通性的站点。这样的站点可以使用ETRN从上游服务器请求邮件传递交付并且Postfix可以配置为将推送推送邮件传递到ETRN客户端。
* STARTTLS (详情见上述说明)。
* ENHANCEDSTATUSCODES, 增强型的状态码和错误码。
* 8BITMIME, 支持8位MIME这意味着完整的ASCII字符集。一次一次原始的ASCII是7位。
* DSN, 传输状态通知,通知你传输时的错误。
postfix的主配置文件是 : `/etc/postfix/main.cf`,这个文件是安装程序创建的,可以查看这个资料 : 来查看这个配置文件的列表, `/etc/postfix/postfix-files`这个文件描述了postfix完整的安装过程 下一篇教程我们会讲解 Dovecot 的安装和测试,然后会给我们自己发送一些邮件。
下周的教程我们会讲解Dovecot的安装和测试然后会给我们自己发送一些邮件。
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -116,7 +110,7 @@ via: https://www.linux.com/learn/how-build-email-server-ubuntu-linux
作者:[CARLA SCHRODER][a] 作者:[CARLA SCHRODER][a]
译者:[WangYihang](https://github.com/WangYihang) 译者:[WangYihang](https://github.com/WangYihang)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织编译,[Linux中国](https://linux.cn/) 荣誉推出