如何在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. passdb { 
  15.   driver = pam 
  16. protocols = " imap pop3" 
  17. ssl = no 
  18. userdb { 
  19.   driver = passwd 

注意 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. 250 2.0.0 Ok: queued as 0C261A1F0F 
  29. quit 
  30. 221 2.0.0 Bye                                                                    
  31. 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. retr 2 
  17. +OK 426 octets 
  18. Return-Path: <tester@test.net> 
  19. X-Original-To: carla@studio 
  20. Delivered-To: carla@studio 
  21. Received: from studio (localhost [127.0.0.1]) 
  22.         by studio.router (Postfix) with ESMTP id 0C261A1F0F 
  23.         for <carla@studio>; Wed, 30 Nov 2016 17:18:57 -0800 (PST) 
  24. Date: November 25, 2016 
  25. From: tester@studio.router 
  26. Message-ID: first-test 
  27. Subject: mail server test 
  28. Hi carla, 
  29. Are you reading this? Let me know if you didn't get this. 
  30. quit 
  31. +OK Logging out
  32. 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 邮件客户端

图 1 中的屏幕截图显示了我局域网上另一台主机上的图形邮件客户端中的邮件。

图 1: Thunderbird mail

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

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





作者:CARLA SCHRODER
来源:51CTO
相关文章
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
93 28
Ubuntu环境下的Samba源码编译
以上就是在Ubuntu环境下编译Samba源码的步骤。希望这个指南能帮助你成功地从源码编译Samba。如果你在编译过程中遇到任何问题,你可以查阅Samba的官方文档,或者在网上搜索相关的教程和解决方案。
54 23
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
66 13
不同服务器环境301重定向具体实施步骤
本文详细介绍301重定向配置方法,涵盖Apache、Nginx、IIS服务器环境及WordPress、Cloudflare等平台工具的实现方式。提供具体规则示例与操作步骤,包括单页、整站和批量路径重定向。同时,强调验证与监控的重要性,列出测试清单及搜索引擎通知方法,并针对常见问题如重定向循环、参数丢失等提供解决方案。最后总结最佳实践原则,确保SEO权重传递与用户体验优化。
90 17
在Ubuntu 18.04服务器上配置双网口以接入互联网
总结一下,配置双网口在Ubuntu 18.04服务器就像一场冒险游戏,你小心翼翼地从查看网络布局开始,铺设新线路,最后得到了通往互联网的双重通道。祝你在网络世界的冒险旅程中更上一层楼!
59 11
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
虚拟化数据恢复—VMware虚拟化环境下重装系统导致服务器崩溃的数据恢复
VMware虚拟化平台 vmfs文件系统 工作人员误操作重装操作系统,服务器崩溃。 重装系统会导致文件系统元文件被覆盖。要恢复数据,必须找到&提取重装系统前的文件系统残留信息,通过提取出来的元文件信息恢复虚拟磁盘。通过拼接虚拟磁盘来恢复服务器数据。
71 13
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
76 1
Linux云服务器如何搭建LNMP环境
在 Ubuntu 20.04 上搭建NMP环境
本文介绍了如何在Linux系统上安装和配置Nginx、MariaDB和PHP。首先更新系统包并安装Nginx,确保其正常运行并配置防火墙允许流量。接着安装MariaDB数据库,运行安全脚本增强安全性,并验证安装成功。最后,安装PHP及其常用扩展,通过创建一个简单的PHP文件测试其是否正常工作。整个过程详细说明了每一步骤的命令及操作,帮助用户顺利完成LAMP(Linux, Nginx, MariaDB, PHP)环境的搭建。
63 1
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等