现在,让我们设置一下dovecot(一个IMAP服务程序,用来在我们的设备上从服务器获取收到的邮件)。编辑文件/etc/dovecot/dovecot.conf设置以下参数:
- # Enable installed protocol
- # !include_try /usr/share/dovecot/protocols.d/*.protocol
- protocols = imap lmtp
这样将只打开imap(让我们可以获取邮件)和lmtp(postfix用来将收件箱里的邮件转给dovecot)。编辑/etc/dovecot/conf.d/10-mail.conf并设置以下参数:
- mail_location = maildir:/var/mail/%d/%n
- [...]
- mail_privileged_group = mail
- [...]
- first_valid_uid =0
这样邮件将被保存到目录 /var/mail/domainname/username 下。注意下这几个选项散布在配置文件的不同位置,有时已经在那里写好了:我们只需要取消注释即可。文件里的其他设定选项,可以维持原样。在本文后面还有很多文件需要用同样的方式更新设置。在文件/etc/dovecot/conf.d/10-auth.conf里,设置以下参数:
- disable_plaintext_auth = yes
- auth_mechanisms = plain
- #!include auth-system.conf.ext
- !include auth-sql.conf.ext
在文件/etc/dovecot/conf.d/auth-sql.conf.ext里,设置以下参数:
- passdb {
- driver = sql
- args =/etc/dovecot/dovecot-sql.conf.ext
- }
- userdb {
- driver =static
- args = uid=mail gid=mail home=/var/mail/%d/%n
- }
这是告诉dovecot用户的邮件保存在目录/var/mail/domainname/username下,以及如何从我们刚建立的数据库里查找密码。现在我们还需要告诉dovecot具体如何使用数据库。这样需要把下面的内容加入/etc/dovecot/dovecot-sql.conf.ext文件:
- driver = mysql
- connect = host=localhost dbname=mailserver user=mailuser password=mailuserpass
- default_pass_scheme = SHA512-CRYPT
- password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
我们现在修改一下配置文件的权限
- chown -R mail:dovecot /etc/dovecot
- chmod -R o-rwx /etc/dovecot
基本差不多了!只是还需要再多编辑几个文件。在文件/etc/dovecot/conf.d/10-master.conf里,设置以下参数:
- service imap-login {
- inet_listener imap {
- #port = 143
- port =0
- }
- inet_listener imaps {
- port =993
- ssl = yes
- }
- }
- service pop3-login {
- inet_listener pop3 {
- #port = 110
- port =0
- }
- inet_listener pop3s {
- #port = 995
- #ssl = yes
- port =0
- }
- }
- service lmtp {
- unix_listener /var/spool/postfix/private/dovecot-lmtp {
- mode =0666
- group= postfix
- user = postfix
- }
- user = mail
- }
- service auth {
- unix_listener auth-userdb {
- mode =0600
- user = mail
- #group =
- }
- # Postfix smtp-auth
- unix_listener /var/spool/postfix/private/auth {
- mode =0666
- user = postfix
- group= postfix
- }
- # Auth process is run as this user.
- #user = $default_internal_user
- user = dovecot
- }
- service auth-worker {
- user = mail
- }
注意下我们把除了imaps之外所有服务的端口都设置成了0,这样可以有效地禁止这些服务。然后,在文件/etc/dovecot/conf.d/15-lda.conf里,指定一个邮箱管理地址:
- postmaster_address = postmaster@linuxidc.net
最后但很重要的一点,我们为服务器需要生成一对公钥和私钥,可以同时用于dovecot和postfix:
- openssl req -new-newkey rsa:4096-x509 -days 365-nodes -out"/etc/ssl/certs/cloud.crt"-keyout "/etc/ssl/private/cloud.key"
请确保你指定了服务器的完全限定域名(FQDN),在本文的例子里:
- CommonName(e.g. server FQDN or YOUR name)[]:cloud.linuxidc.net
如果没有的话,我们的客户端会抱怨在SSL证书里的服务器名字和所连接的服务器名字不一致。我们将通过修改配置文件/etc/dovecot/conf.d/10-ssl.conf里的如下选项来告诉dovecot使用刚生成的密钥:
- ssl = required
- ssl_cert =</etc/ssl/certs/cloud.crt
- ssl_key =</etc/ssl/private/cloud.key