UFSの備忘録 % Home / Categories

FreeBSD下用Dovecot搭建IMAP服務器筆記

Created 2018-07-25 / Updated 2018-07-25

安裝:

# pkg install dovecot

配置:

# vi /usr/local/etc/dovecot/dovecot.conf
protocols = imap
listen = *

listen = *表示只監聽IPv4,改成listen = [::]表示只監聽IPv6。想同時監聽IPv4和IPv6則改成listen = *, [::]

disable_plaintext_auth = yes
auth_mechanisms = plain login cram-md5
passdb {
  driver = passwd-file
  args = scheme=CRAM-MD5 username_format=%u /usr/local/etc/dovecot/users
}

userdb {
  driver = passwd-file
  args = username_format=%u /usr/local/etc/dovecot/users
}

log_path = /var/log/dovecot.log
#verbose_ssl = yes

mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_privileged_group = mail

(其中mail_privileged_group部分是因為log裏提示):

(…missing +w perm: /var/mail, we’re not in group 6(mail), dir owned by 0:6 mode=0775) (set mail_privileged_group=mail)

service imap-login {
  inet_listener imap {
port = 0
  }
  inet_listener imaps {
port = 993
ssl = yes
  }
}

port = 0是為了禁用非SSL連接。為了安全,建議把port = 993改成其它端口,然後記得在防火牆裏開放該端口)

ssl = required
ssl_cert = </usr/local/etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </usr/local/etc/letsencrypt/live/example.com/privkey.pem
ssl_dh = </usr/local/etc/dovecot/dh.pem
ssl_min_protocol = TLSv1.2

(使用服務器上的Let’s Encrypt證書,記得把example.com部分改成你自己的)

protocol imap {
  mail_plugins = $mail_plugins imap_zlib
}

(啟用壓縮)

生成DH parameters:

# openssl dhparam -out /usr/local/etc/dovecot/dh.pem 2048

新建一個專門收郵件的用戶(可選):

# adduser

(然後在選擇shell的那一步選nologin即可)

設置IMAP的用戶名和密碼:

# vi /usr/local/etc/dovecot/users

然後把/etc/passwd中你要接收郵件的用戶所在的那一行複製進去,如test這個用戶:

test:*:1001:1001::/home/test:/usr/sbin/nologin

生成CRAM-MD5:

# doveadm pw -s CRAM-MD5 -p <你要的密碼>

把生成的結果替換上面星號部分,最終如下:

test:{CRAM-MD5}xxx:1001:1001::/home/test:/usr/sbin/nologin

讓Dovecot開機運行:

# vi /etc/rc.conf
dovecot_enable="YES"

完成,啟動Dovecot:

# service dovecot start
Categories: [FreeBSD] [mail]