标签 邮件服务器 下的文章

 title=

本教程的第 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:

$ sudo apt-get install dovecot-imapd dovecot-pop3d

它会安装可用的配置,并在完成后自动启动,你可以用 ps ax | grep dovecot 确认:

$ ps ax | grep dovecot
15988 ?  Ss 0:00 /usr/sbin/dovecot
15990 ?  S  0:00 dovecot/anvil
15991 ?  S  0:00 dovecot/log

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

mail_spool_directory = /var/mail
home_mailbox = .Mail/

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

$ sudo mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot-oldconf

现在创建一个新的 /etc/dovecot/dovecot.conf

disable_plaintext_auth = no
mail_location = maildir:~/.Mail
namespace inbox {
  inbox = yes
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
}
passdb {
  driver = pam
}
protocols = " imap pop3"
ssl = no
userdb {
  driver = passwd
}

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

$ sudo postfix reload
$ sudo dovecot reload

快速导出配置

使用下面的命令来快速查看你的 Postfix 和 Dovecot 配置:

$ postconf -n
$ doveconf -n

测试 Dovecot

现在再次启动 telnet,并且给自己发送一条测试消息。粗体显示的是你输入的命令。studio 是我服务器的主机名,因此你必须用自己的:

$ telnet studio 25
Trying 127.0.1.1...
Connected to studio.
Escape character is '^]'.
220 studio.router ESMTP Postfix (Ubuntu)
EHLO studio
250-studio.router
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
mail from: [email protected]
250 2.1.0 Ok
rcpt to: carla@studio
250 2.1.5 Ok
data
354 End data with .Date: November 25, 2016
From: tester
Message-ID: first-test
Subject: mail server test
Hi carla,
Are you reading this? Let me know if you didn't get this.
.
250 2.0.0 Ok: queued as 0C261A1F0F
quit
221 2.0.0 Bye                                                                   
Connection closed by foreign host.

现在请求 Dovecot 来取回你的新消息,使用你的 Linux 用户名和密码登录:

$ telnet studio 110                                            
Trying 127.0.0.1...                                                             
Connected to studio.                                                         
Escape character is '^]'.                                                       
+OK Dovecot ready.                                                              
user carla
+OK
pass password
+OK Logged in.
stat
+OK 2 809
list
+OK 2 messages:
1 383
2 426
.
retr 2
+OK 426 octets
Return-Path: <[email protected]>
X-Original-To: carla@studio
Delivered-To: carla@studio
Received: from studio (localhost [127.0.0.1])
        by studio.router (Postfix) with ESMTP id 0C261A1F0F
        for <carla@studio>; Wed, 30 Nov 2016 17:18:57 -0800 (PST)
Date: November 25, 2016
From: [email protected]
Message-ID: first-test
Subject: mail server test

Hi carla,
Are you reading this? Let me know if you didn't get this.
.
quit
+OK Logging out.
Connection closed by foreign host.

花一点时间比较第一个例子中输入的消息和第二个例子中接收的消息。 返回地址和日期是很容易伪造的,但 Postfix 不会被愚弄。大多数邮件客户端默认显示一个最小的标头集,但是你需要读取完整的标头才能查看真实的回溯。

你也可以在你的 ~/Mail/cur 目录中查看你的邮件,它们是普通文本,我已经有两封测试邮件:

$ ls .Mail/cur/
1480540325.V806I28e0229M351743.studio:2,S
1480555224.V806I28e000eM41463.studio:2,S

测试 IMAP

我们 Dovecot 同时启用了 POP3 和 IMAP 服务,因此让我们使用 telnet 测试 IMAP。

$ telnet studio imap2   
Trying 127.0.1.1...
Connected to studio.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS 
ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
A1 LOGIN carla password
A1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS 
ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS 
THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT 
CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE 
QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS 
BINARY MOVE SPECIAL-USE] Logged in
A2 LIST "" "*"
* LIST (\HasNoChildren) "." INBOX
A2 OK List completed (0.000 + 0.000 secs).
A3 EXAMINE INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 2 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1480539462] UIDs valid
* OK [UIDNEXT 3] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
A3 OK [READ-ONLY] Examine completed (0.000 + 0.000 secs).
A4 logout
* BYE Logging out
A4 OK Logout completed.
Connection closed by foreign host

Thunderbird 邮件客户端

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

 title=

图 1: Thunderbird mail

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

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


via: https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-part-2

作者:CARLA SCHRODER 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

问题1:什么是 Postfix,它的默认端口是多少?

答:Postfix 是一个开源的 MTA(邮件传送代理,英文名:Mail Transfer Agent),用于转发 email。相信很多人知道 Sendmail,而 Postfix 是它的替代品。默认端口是25。

问题2:Postfix 和 Sendmail 有什么区别?

答:Postfix 使用模块化设计,由多个独立的可执行程序组成;而 Sendmail 被设计成有一个强大的后台进程提供所有服务。

问题3:什么是 MTA,它在邮件系统中扮演什么角色?

答:MTA 是 Mail Transfer Agent (邮件传输代理)的缩写。MTA 负责接收和发送邮件、确定发送路径和地址重写(LCTT译注:address rewriting,就是完善发送地址,比如将“username”这个地址重写为“[email protected]”)。本地转发就是将邮件发送给 MDA。Qmail、Postix、Sendmail 都是 MTA。

问题4:什么是 MDA?

答:MDA 是 Mail Delivery Agent (邮件投递代理)的缩写。MDA 这个程序用于从 MTA 获取邮件并投递至本地收件人的邮箱。MDA 通常可以过滤邮件或为邮件分类。一个 MDA 也能决定一封邮件是否需要转发到另一个邮箱地址。Procmail 就是一个 MDA。

问题5:什么是 MUA?

答:MUA 是 Mail User Agent (邮件用户代理)的缩写。MUA 是一个邮件客户端软件,可以用来写邮件、发送邮件、接收邮件。发送邮件时使用的是 MTA;接收邮件时可以从邮件存储区直接收取,也可以通过 POP/IMAP 服务器间接收取。Outlook、Thunkerbird、Evolution 都是 MUA。

问题6:邮件服务器里 postmaster 的作用是什么?

答:邮件管理者一般就是 postmaster。一个 postmaster 的责任就是保证邮件系统正常工作、更新系统配置、添加/删除邮箱帐号,以及其他工作。每个域中必须存在一个 postmaster 的别名(LCTT译注:postmaster 别名用于接受一些其它服务器/用户对该邮件系统的沟通邮件,如关于垃圾邮件拒收的投诉等,通常都会直接被邮件服务器的管理员所接受。一些系统错误和提示的邮件,也往往以postmaster 作为发件人),用于将邮件发往正确的用户。

问题7:Postfix 都有些什么重要的进程?

答:以下是 Postfix 邮件系统里最重要的后台进程列表:

  • master:这条进程是 Postfix 邮件系统的大脑,它产生所有其他进程。
  • smtpd:作为服务器端程序处理所有外部连进来的请求。
  • smtp:作为客户端程序处理所有对外发起连接的请求。
  • qmgr:它是 Postfix 邮件系统的心脏,处理和控制邮件队列里面的所有消息。
  • local:这是 Postfix 自有的本地投递代理MDA,就是它负责把邮件保存到邮箱里。

问题8:Postfix 服务器的配置文件是什么?

答:有两个主要配置文件:

  • /etc/postfix/main.cf:这个文件保存全局配置信息,所有进程都会用到,除非这些配置在 master.cf 文件中被重新设置了。
  • /etc/postfix/master.cf:这个文件保存了额外的进程运行时环境参数,在 main.cf 文件中定义的配置可能会被本文件的配置覆盖掉。

问题9:如何将 Postfix 重启以及设为开机启动?

答:使用这个命令重启:service postfix restart;使用这个命令设为开机启动:chkconfig postfix on

问题10:怎么查看 Postfix 的邮件队列?

答:Postfix 维护两个队列:未决邮件队列(pending mails queue)和等待邮件队列(deferred mail queue)。等待队列包含了暂时发送失败、需要重新发送的邮件,Postfix 会定期重发(默认5分钟,可自定义设置)。(LCTT译注:其实 Postfix 维护5个队列:输入队列,邮件进入 Postfix 系统的第一站;活动队列,qmgr 将输入队列的邮件移到活动队列;等待队列,保存暂时不能发送出去的邮件;故障队列,保存受损或无法解读的邮件;保留队列,将邮件无限期留在 Postfix 队列系统中。)

列出邮件队列里面所有邮件:

# postqueue -p

保存邮件队列名单:

# postqueue -p > /mnt/queue-backup.txt

让 Postfix 马上处理队列:

# postqueue -f

问题11:如何删除邮件队列里面的邮件?

答:以下命令删除所有邮件:

# postsuper -d ALL

以下命令只删除等待队列中的邮件:

# postsuper -d ALL deferred

问题12:如何通过命令来检查 Postfix 配置信息?

答:使用postconf -n命令可以查看,它会过滤掉配置文件里面被注释掉的配置信息。

问题13:实时查看邮件日志要用什么命令?

答:

tail -f /var/log/maillog 或 tailf /var/log/maillog

问题14:如何通过命令行发送测试邮件?

答:参考下面的命令:

# echo "Test mail from postfix" | mail -s "Plz ignore" [email protected]

问题15:什么是“开放邮件转发(Open Relay)”?

答:开放邮件转发是 SMTP 服务器的一项设定,允许因特网上任意的其他用户能通过该服务器转发邮件,而不是直接发送到某个帐号的服务器或只允许授权用户通过它来发送邮件。过去,这项功能在许多邮件服务器中都是默认开启的,但是现在已经不再流行了,因为邮件转发会导致大量垃圾邮件和病毒邮件在网络上肆虐。

问题16:什么是 Postfix 上的邮件转发主机?

答:转发主机是 SMTP 的地址,如果在配置文件中有配置,那么所有输入邮件都将被 SMTP 服务器转发。

问题17:什么是灰名单?

答:灰名单(LCTT译注:介于白名单和黑名单之间)是一种用于拦截垃圾邮件的技术。一个 MTA 使用灰名单时就会“暂时拒绝”未被识别的发送者发来的所有邮件。如果邮件是正当合理的,发起者会在一段时间后重新发送,然后这份邮件就能被接收。(LCTT译注:灰名单基于这样一个事实,就是大多数的垃圾邮件服务器和僵尸网络的邮件只发送一次,而会忽略要求它们在一定的时间间隔后再次发送的请求。)

问题18:邮件系统中 SPF 记录有什么重要作用?

答:SPF 是 Sender Policy Framework 的缩写,用于帮助邮件域的拥有者确认发送方是否来自他们的域,目的是其他邮件系统能够保证发送方在发送邮件时来自经过授权的来源 —— 这种方法可以减小遇到邮件地址欺骗、网络钓鱼和垃圾邮件的风险。

问题19:邮件系统中 DKIM 有什么用处?

答:域名密匙是一套电子邮件身份认证系统,用于验证邮件发送方的 DNS 域和邮件的完整性。域名密匙规范采用互联网电子邮件认证技术,建立了一套加强版协议:域名密匙识别邮件(就是 DKIM)。

问题20:邮件系统中 ASSP 的规则是什么?

答:ASSP(Anti-Spam SMTP Proxy,反垃圾代理) 是一个网关服务器,安装在你的 MTA 前面,通过自建白名单、自动学习贝叶斯算法、灰名单、DNS 黑名单(DNSBL)、DNS 白名单(DNSWL)、URI黑名单(URIBL)、SPF、SRS、Backscatter、病毒扫描功能、附件阻拦功能、基于发送方等多种方法来反垃圾邮件。


via: http://www.linuxtechi.com/postfix-interview-questions-answers/

作者:Pradeep Kumar 译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出