配置Dovecot以实现安全的POP3和IMAP访问
检查电子邮件时,电子邮件程序将连接到您的邮件服务器,以查看邮件目录中是否有新邮件。 如果将其配置为使用邮局协议(POP3),则会在本地下载邮件并从服务器中删除它们。 如果将其配置为使用Internet邮件访问协议(IMAP),则邮件将保留在服务器上,您可以远程管理它.
Dovecot开箱即用处理这两种协议。 由于我们已经为其SASL功能安装了Dovecot,我们可以在系统的防火墙中打开POP3和IMAP流量的标准端口并完成。 但是,连接将是未加密的,并且信息将以纯文本形式通过网络传输。 此配方教您如何使用SSL保护这些连接.
准备
此配方需要一个CentOS系统,Postfix和Dovecot配置如前面的配方中所述。 通过使用root帐户登录或使用sudo,还需要管理权限。
怎么做
请按照以下步骤配置对Dovecot的访问权限:
- 使用文本编辑器打开/etc/dovecot/dovecot.conf:
vi /etc/dovecot/dovecot.conf
- 找到协议参数。 删除前导#字符并将其值设置为imaps pop3s:
protocols = imaps pop3s
- 保存更改并关闭文件。
- 使用文本编辑器打开/etc/dovecot/conf.d/10-ssl.conf:
vi /etc/dovecot/conf.d/10-ssl.conf
- 找到ssl参数并将其值设置为yes:
ssl = yes
- 找到ssl_cert和ssl_key参数。 使用证书和密钥文件的路径更新其值(请注意,两个路径都以<开头):
ssl_cert = </etc/pki/tls/certs/mail.example.pem
ssl_key = </etc/pki/tls/private/mail.example.key
- 保存更改并关闭文件。
- 重新启动Dovecot以使更改生效:
systemctl restart dovecot.service
- 在防火墙中打开用于IMAP over SSL的端口993和用于POP3 over SSL的端口995:
firewall-cmd --permanent --add-service=imaps \
--add-service=pop3s
firewall-cmd --reload
工作原理
Dovecot可以轻松保护POP3和IMAP连接的流量; 事实上,配置它只需要几秒钟。 我们首先编辑了协议参数/etc/dovecot/dovecot.conf,让Dovecot知道我们希望这些协议得到保护:
protocols = imaps pop3s
然后我们更新了/etc/dovecot/conf.d/10-ssl.conf以启用SSL以使用sslparameter并使用ssl_cert和ssl_key识别证书和加密密码。由于Postfix和Dovecot在同一系统上运行,并且我们已经为 Postfix生成了密钥和证书,因此我们可以在Dovecot的配置中引用相同的文件.Dovecot使用前面的<在路径前面指定它应该使用文件的内容作为参数的值而不是文字字符串本身:
ssl = yes
ssl_cert = </etc/pki/tls/certs/mail.example.pem
ssl_key = </etc/pki/tls/private/mail.example.key
Dovecot仍然允许来自localhost的连接对POP和IMAP(分别在端口110和143上)进行非SSL访问,但是一旦我们重新启动它以使配置更改生效,所有其他用户将需要使用SSL来 访问他们的消息.
我们可以使用mailx来测试配置。 首先,我们将检查POP3:
mailx -f pop3s://tboronczyk@mail.example.com
-f参数指定mailx将读取的目录以检索我们的消息。 作为URI,该值指示mailx使用POP3 over SSL(pop3s)在mail.example.com系统上读取我们用户的默认目录。
除了更改URI的协议之外,该命令与检查IMAP相同:
mailx -f imaps://tboronczyk@mail.example.com
因为我们使用的是自签名证书,所以mailx会抱怨证书尚未被用户标记为信任,并提示我们是否要继续。 回答y,然后系统会提示您输入用户密码。 mailx然后显示用户的收件箱。 在提示符处输入quit退出程序:
mailx可用于测试我们通过SSL测试POP3和IMAP的配置
注意
如果mailx抱怨它缺少nss-config-dir变量,则可以使用-S在命令行上定义它。 该值应该是mailx可用于验证证书信任的证书数据库的路径:
mailx -S nss-config-dir=/etc/pki/nssdb \
-f pop3s://tboronczyk@mail.example.com
当我们第一次配置Postfix时,我们调整了它的home_mailbox参数以将消息存储在不同的目录中。 我承认当时这是可选的,但是当我们设置检索访问时它会使事情变得更容易和更清晰。 如果您当时未设置home_mailbox,则传入的消息将附加到/ var / spool / mail下的用户邮件假脱机文件中,并且Dovecot需要一些其他配置才能访问它们。 这些更改可以在/etc/dovecot/conf.d/10-mail.conf中进行.
或者,您可以将假脱机文件转换为Maildir目录中的单独消息。 首先,安装mb2md软件包:
yum install ftp://ftp.pbone.net/mirror/atrpms.net/el7-
x86_64/atrpms/stable/mb2md-3.20-2.at.noarch.rpm
打开/etc/postfix/main.cf文件并找到home_mailbox参数。 从值为Maildir /的条目中删除前导#字符:
home_mailbox = Maildir/
保存更改,然后重新启动Postfix以使更新生效。 然后,对于每个帐户,调用mb2md来转换假脱机文件。 该实用程序需要作为目标用户运行,因此请使用su临时切换到该用户的上下文:
su -l -c "mb2md -m" tboronczyk
See also
Refer to the following resources for more information on the different topics discussed in this recipe, including Dovecot, POP3, and IMAP.
- The mailx manual page (man 1 mailx)
- The Dovecot Homepage (http://www.dovecot.org/)
- RFC 3501: Internet Message Access Protocol (https://tools.ietf.org/html/rfc3501)
- RFC 1939: Post Office Protocol (https://tools.ietf.org/html/rfc1939)
- Converting Mbox Mailboxes to Maildir format (http://batleth.sapienti-sat.org/projects/mb2md/)