05
2018
06

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

本教程的第 2 部分将介绍如何使用 Dovecot 将邮件从 Postfix 服务器移动到用户的收件箱。

在第一部分中,我们安装并测试了 Postfix SMTP 服务器。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 Dovecot ready.

  6. user carla

  7. +OK

  8. pass password

  9. +OK Logged in.

  10. stat

  11. +OK 2 809

  12. list

  13. +OK 2 messages:

  14. 1 383

  15. 2 426

  16. .

  17. retr 2

  18. +OK 426 octets

  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

  26. From: tester@studio.router

  27. Message-ID: first-test

  28. Subject: mail server test


  29. Hi carla,

  30. Are you reading this? Let me know if you didn't get this.

  31. .

  32. quit

  33. +OK Logging out.

  34. 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-IR LOGIN-REFERRALS

  6. ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.

  7. A1 LOGIN carla password

  8. A1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS

  9. ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS

  10. THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT

  11. CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE

  12. QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS

  13. BINARY MOVE SPECIAL-USE] Logged in

  14. A2 LIST "" "*"

  15. * LIST (\HasNoChildren) "." INBOX

  16. A2 OK List completed (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] Examine completed (0.000 + 0.000 secs).

  26. A4 logout

  27. * BYE Logging out

  28. A4 OK Logout completed.

  29. Connection closed by foreign host

 

Thunderbird 邮件客户端

此时,你已有一个可以工作的 IMAP 和 POP3 邮件服务器,并且你也知道该如何测试你的服务器。你的用户可以在他们设置邮件客户端时选择要使用的协议。如果您只想支持一个邮件协议,那么只需要在您的 Dovecot 配置中留下你要的协议名字。

然而,这还远远没有完成。这是一个非常简单、没有加密的、大门敞开的安装。它也只适用于与邮件服务器在同一系统上的用户。这是不可扩展的,并具有一些安全风险,例如没有密码保护。 我们会在下篇了解如何创建与系统用户分开的邮件用户,以及如何添加加密。

原文链接:https://www.qiquanji.com/post/4828.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。