发 帖  
原厂入驻New
[讨论]

如何在 Ubuntu 环境下搭建邮件服务器(二)

2016-12-31 10:56:23  8688
分享
本教程的第 2 部分将介绍如何使用 Dovecot 将邮件从 Postfix 服务器移动到用户的收件箱。
在第一部分中,我们安装并测试了 PostfixSMTP 服务器。Postfix 或任何 SMTP 服务器都不是一个完整的邮件服务器,因为它所做的只是在 SMTP 服务器之间移动邮件。我们需要 Dovecot 将邮件从 Postfix 服务器移动到用户的收件箱中。
Dovecot 支持两种标准邮件协议:IMAP(Internet 邮件访问协议)和 POP3(邮局协议)。 IMAP 服务器会在服务器上保留所有邮件。您的用户可以选择将邮件下载到计算机或仅在服务器上访问它们。 IMAP 对于有多台机器的用户是方便的。但对你而言需要更多的工作,因为你必须确保你的服务器始终可用,而且 IMAP 服务器需要大量的存储和内存。
POP3 是较旧的协议。POP3 服务器可以比 IMAP 服务器服务更多的用户,因为邮件会下载到用户的计算机。大多数邮件客户端可以选择在服务器上保留一定天数的邮件,因此 POP3 的行为有点像 IMAP。但它又不是 IMAP,当你像 IMAP 那样(在多台计算机上使用它时)那么常常会下载多次或意外删除。
安装Dovecot

启动你的Ubuntu 系统并安装 Dovecot:
1.   $ sudo apt-get install dovecot-imapd dovecot-pop3d

它会安装可用的配置,并在完成后自动启动,你可以用 ps ax | grep dovecot 确认:
1.   $ ps ax | grep dovecot
2.   15988 ?  Ss 0:00 /usr/sbin/dovecot
3.   15990 ?  S  0:00 dovecot/anvil
4.   15991 ?  S  0:00 dovecot/log

打开你的Postfix 配置文件 /etc/postfix/main.cf,确保配置了maildir 而不是 mbox 的邮件存储方式,mbox 是给每个用户一个单一大文件,而 maildir 是每条消息都存储为一个文件。大量的小文件比一个庞大的文件更稳定且易于管理。添加如下两行,第二行告诉 Postfix 你需要 maildir 格式,并且在每个用户的家目录下创建一个 .Mail 目录。你可以取任何名字,不一定要是 .Mail:
1.   mail_spool_directory = /var/mail
2.   home_mailbox = .Mail/

现在调整你的 Dovecot 配置。首先把原始的 dovecot.conf 文件重命名放到一边,因为它会调用存放在conf.d 中的文件,在你刚刚开始学习时把配置放一起更简单些:
1.   $ sudo mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot-oldconf

现在创建一个新的 /etc/dovecot/dovecot.conf:
1.   disable_plaintext_auth = no
2.   mail_location = maildir:~/.Mail
3.   namespace inbox {
4.     inbox = yes
5.     mailbox Drafts {
6.       special_use = \Drafts
7.     }
8.     mailbox Sent {
9.       special_use = \Sent
10.    }
11.    mailbox Trash {
12.      special_use = \Trash
13.    }
14.  }
15.  passdb {
16.    driver = pam
17.  }
18.  protocols = " imap pop3"
19.  ssl = no
20.  userdb {
21.    driver = passwd
22.  }

注意 mail_location = maildir 必须和 main.cf 中的 home_mailbox 参数匹配。保存你的更改并重新加载 Postfix 和Dovecot 配置:
1.   $ sudo postfix reload
2.   $ sudo dovecot reload

快速导出配置

使用下面的命令来快速查看你的 Postfix 和 Dovecot 配置:
1.   $ postconf -n
2.   $ doveconf -n

测试Dovecot

现在再次启动 telnet,并且给自己发送一条测试消息。粗体显示的是你输入的命令。studio 是我服务器的主机名,因此你必须用自己的:
1.   $ telnet studio 25
2.   Trying 127.0.1.1...
3.   Connected to studio.
4.   Escape character is '^]'.
5.   220 studio.router ESMTP Postfix (Ubuntu)
6.   EHLO studio
7.   250-studio.router
8.   250-PIPELINING
9.   250-SIZE 10240000
10.  250-VRFY
11.  250-ETRN
12.  250-STARTTLS
13.  250-ENHANCEDSTATUSCODES
14.  250-8BitMIME
15.  250-DSN
16.  250 SMTPUTF8
17.  mail from:tester@test.net
18.  250 2.1.0 Ok
19.  rcpt to: carla@studio
20.  250 2.1.5 Ok
21.  data
22.  354 End data with .Date: November 25, 2016
23.  From: tester
24.  Message-ID: first-test
25.  Subject: mail server test
26.  Hi carla,
27.  Are you reading this? Let me know IF you didn't get this.
28.  .
29.  250 2.0.0 Ok: queued as 0C261A1F0F
30.  quit
31.  221 2.0.0 Bye                                                                  
32.  Connection closed by foreign host.

现在请求Dovecot 来取回你的新消息,使用你的 Linux 用户名和密码登录:
1.   $ telnet studio 110                                            
2.   Trying 127.0.0.1...                                                            
3.   Connected to studio.                                                        
4.   Escape character is '^]'.                                                      
5.   +OK Dovecotready.                                                            
6.   user carla
7.   +OK
8.   pass password
9.   +OK Logged in.
10.  stat
11.  +OK 2 809
12.  list
13.  +OK 2messages:
14.  1 383
15.  2 426
16.  .
17.  retr 2
18.  +OK 426octets
19.  Return-Path: <tester@test.net>
20.  X-Original-To: carla@studio
21.  Delivered-To: carla@studio
22.  Received: from studio (localhost [127.0.0.1])
23.          by studio.router (Postfix) with ESMTP id 0C261A1F0F
24.          for <carla@studio>;Wed, 30 Nov 2016 17:18:57 -0800 (PST)
25.  Date: November 25, 2016
27.  Message-ID: first-test
28.  Subject: mail server test
29.   
30.  Hi carla,
31.  Are you reading this? Let me know if you didn't get this.
32.  .
33.  quit
34.  +OK Logging out.
35.  Connection closed by foreign host.

花一点时间比较第一个例子中输入的消息和第二个例子中接收的消息。返回地址和日期是很容易伪造的,但 Postfix 不会被愚弄。大多数邮件客户端默认显示一个最小的标头集,但是你需要读取完整的标头才能查看真实的回溯。
你也可以在你的 ~/Mail/cur 目录中查看你的邮件,它们是普通文本,我已经有两封测试邮件:
1.   $ ls .Mail/cur/
2.   1480540325.V806I28e0229M351743.studio:2,S
3.   1480555224.V806I28e000eM41463.studio:2,S

测试IMAP

我们Dovecot 同时启用了 POP3 和 IMAP 服务,因此让我们使用 telnet 测试 IMAP。
1.   $ telnet studio imap2   
2.   Trying 127.0.1.1...
3.   Connected to studio.
4.   Escape character is '^]'.
5.   * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IRLOGIN-REFERRALS
6.   ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
7.   A1 LOGIN carla password
8.   A1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IRLOGIN-REFERRALS
9.   ID ENABLE IDLE SORT SORT=display THREAD=REFERENCESTHREAD=REFS
10.  THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIALCATENATE UNSELECT
11.  CHILDREN NAMESPACE UIDPLUS LIST-EXTENDEDI18NLEVEL=1 CONDSTORE
12.  QRESYNC ESEARCH ESORT SEARCHRES WITHINCONTEXT=SEARCH LIST-STATUS
13.  BINARY MOVE SPECIAL-USE] Logged in
14.  A2 LIST "" "*"
15.  * LIST (\HasNoChildren) "." INBOX
16.  A2 OK Listcompleted (0.000 + 0.000 secs).
17.  A3 EXAMINE INBOX
18.  * FLAGS (\Answered \Flagged \Deleted \Seen\Draft)
19.  * OK [PERMANENTFLAGS ()] Read-only mailbox.
20.  * 2 EXISTS
21.  * 0 RECENT
22.  * OK [UIDVALIDITY 1480539462] UIDs valid
23.  * OK [UIDNEXT 3] Predicted next UID
24.  * OK [HIGHESTMODSEQ 1] Highest
25.  A3 OK [READ-ONLY] Examinecompleted (0.000 + 0.000secs).
26.  A4 logout
27.  * BYE Logging out
28.  A4 OK Logoutcompleted.
29.  Connection closed by foreign host

Thunderbird 邮件客户端

图 1 中的屏幕截图显示了我局域网上另一台主机上的图形邮件客户端中的邮件。
1.jpg
图1: Thunderbird mail
此时,你已有一个可以工作的 IMAP 和 POP3 邮件服务器,并且你也知道该如何测试你的服务器。你的用户可以在他们设置邮件客户端时选择要使用的协议。如果您只想支持一个邮件协议,那么只需要在您的 Dovecot 配置中留下你要的协议名字。
然而,这还远远没有完成。这是一个非常简单、没有加密的、大门敞开的安装。它也只适用于与邮件服务器在同一系统上的用户。这是不可扩展的,并具有一些安全风险,例如没有密码保护。我们会在下篇了解如何创建与系统用户分开的邮件用户,以及如何添加加密。

1
2016-12-31 10:56:23   评论 分享淘帖

只有小组成员才能发言,加入小组>>

1058个成员聚集在这个小组

加入小组

创建小组步骤

快速回复 返回顶部 返回列表