22.3 MRA 服务器: dovecot 设定

除非你想要架设 webmail 在你的 MTA 上头,否则,你的 MTA 收下了信件,你总得连上 MTA 去收信吧?那么收信要用的是哪个通讯协议? 就是 22.1.4 里面谈到的 pop3 以及 imap 啰!这就是所谓的 MRA 服务器!我们的 CentOS 6.x 使用的是 dovecot 这个软件来达成 MRA 的相关通讯协议的!但由于 pop3/imap 还有数据加密的版本,底下我们就依据是否加密 (SSL) 来设定 dovecot 吧!


22.3.1 基础的 POP3/IMAP 设定

启动单纯的 pop3/imap 是很简单的啦,你得要先确定已经安装了 dovecot 这个软件。而这个软件的配置文件只有一个,就是 /etc/dovecot/dovecot.conf 。我们仅要启动 pop3/imap 而已,所以可以这样设定即可:

  1. [root@www ~]# yum install dovecot
  2. [root@www ~]# vim /etc/dovecot/dovecot.conf
  3. # 找到底下这一行,大约是在第 25 行左右的地方,复制新增一行内容如下:
  4. #protocols = imap pop3 lmtp
  5. protocols = imap pop3
  6. [root@www ~]# vim /etc/dovecot/conf.d/10-ssl.conf
  7. ssl = no <==将第 6 行改成这样!

改完之后你就可以启动 dovecot 啰!并且检查看看 port 110/143 (pop3/imap) 有没有启动啊?

  1. [root@www ~]# /etc/init.d/dovecot start
  2. [root@www ~]# chkconfig dovecot on
  3. [root@www ~]# netstat -tlnp | grep dovecot
  4. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  5. tcp 0 0 :::110 :::* LISTEN 14343/dovecot
  6. tcp 0 0 :::143 :::* LISTEN 14343/dovecot

耶!搞定!这样就可以提供使用者来收信件啦!真是不错啊!不过记得喔,这里只提供基本的明码 pop3/imap 传输而已, 如果想要启动其他如 pop3s (传输加密机制) 协议时,就得要额外的设定啰!


22.3.2 加密的 POP3s/IMAPs 设定

如果担心数据在传输过程会被窃取,或者是你的登入信息 (账号与密码) 在使用 pop3/imap 时会被窃听, 那么这个 pop3s/imaps 就显的重要啦!与之前的 Apache 相似的,其实我们都是透过 openssl 这个软件提供的 SSL 加密机制来进行数据的加密传输。方式很简单呢!预设的情况下,CentOS 已经提供了 SSL 凭证范例文件给我们使用了。 如果你一点都不想要使用预设的凭证,那么我们就来自己建一个吧!

  1. # 1\. 建立凭证:到系统提供的 /etc/pki/tls/certs/ 目录下建立所需要的 pem 凭证档:
  2. [root@www ~]# cd /etc/pki/tls/certs/
  3. [root@www certs]# make vbirddovecot.pem
  4. ....(前面省略)....
  5. Country Name (2 letter code) [XX]:TW
  6. State or Province Name (full name) []:Taiwan
  7. Locality Name (eg, city) [Default City]:Tainan
  8. Organization Name (eg, company) [Default Company Ltd]:KSU
  9. Organizational Unit Name (eg, section) []:DIC
  10. Common Name (eg, your name or your server's hostname) []:www.centos.vbird
  11. Email Address []:dmtsai@www.centos.vbird
  12. # 2\. 因为担心 SELinux 的问题,所以建议将 pem 档案放置到系统默认的目录去较佳!
  13. [root@www certs]# mv vbirddovecot.pem ../../dovecot/
  14. [root@www certs]# restorecon -Rv ../../dovecot
  15. # 3\. 开始处理 dovecot.conf,只要 pop3s, imaps 不要明码传输的咯!
  16. [root@www certs]# vim /etc/dovecot/conf.d/10-auth.conf
  17. disable_plaintext_auth = yes <==第 9 行改成这样!取消批注!
  18. [root@www certs]# vim /etc/dovecot/conf.d/10-ssl.conf
  19. ssl = required <==第 6 行改成这样
  20. ssl_cert = </etc/pki/dovecot/vbirddovecot.pem <==12, 13 行变这样
  21. ssl_key = </etc/pki/dovecot/vbirddovecot.pem
  22. [root@www certs]# vim /etc/dovecot/conf.d/10-master.conf
  23. inet_listener imap {
  24. port = 0 <== 15 行改成这样
  25. }
  26. inet_listener pop3 {
  27. port = 0 <== 36 行改成这样
  28. }
  29. # 4\. 处理额外的 mail_location 设定值!很重要!否则网络收信会失败:
  30. [root@www certs]# vim /etc/dovecot/conf.d/10-mail.conf
  31. mail_location = mbox:~/mail:INBOX=/var/mail/%u <==第 30 行改这样
  32. # 5\. 重新启动 dovecot 并且观察 port 的变化:
  33. [root@www certs]# /etc/init.d/dovecot restart
  34. [root@www certs]# netstat -tlnp | grep dovecot
  35. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  36. tcp 0 0 :::993 :::* LISTEN 14527/dovecot
  37. tcp 0 0 :::995 :::* LISTEN 14527/dovecot

最终你看到的 993 是 imaps 而 995 则是 pop3s 啰!这样一来,你收信的时候,输入的账号密码就不怕被窃听了! 反正是加密后的资料啰!很简单吧!


22.3.3 防火墙设置

因为上面的练习中,我们将 pop3/imap 关闭,转而打开 pop3s/imaps 了,因此防火墙启动的埠口会不一样! 请依据您实际的案例来设定你所需要的防火墙才好。我们这里主要是开放 993, 995 两个埠口呦! 处理的方法与 22.2.9 相当类似:

  1. [root@www ~]# vim /usr/local/virus/iptables/iptables.rule
  2. # 大约在 180 行左右,新增底下两行去!
  3. iptables -A INPUT -p TCP -i $EXTIF --dport 993 --sport 1024:65534 -j ACCEPT
  4. iptables -A INPUT -p TCP -i $EXTIF --dport 995 --sport 1024:65534 -j ACCEPT
  5. [root@www ~]# /usr/local/virus/iptables/iptables.rule

如果你的 pop3/imap 还是决定不加密的话,请将上面的 993/995 改成 143/110 即可!


原文: https://wizardforcel.gitbooks.io/vbird-linux-server-3e/content/167.html