IMAP/POPサーバDovecotに関するTips。

§1 設定ファイル

§1.1 使用するプロトコルを設定する

protocolsで設定する。 設定出来るのはimap(IMAP), imaps(IMAP+SSL) pop3(POP), pop3s(POP+SSL)。 SSLを使用する場合は、ssl_disableをnoにする。

protocols = imap imaps
ssl_disable = no

また必要に応じてssl_cert_fileとssl_key_fileも設定する

ssl_cert_file = /usr/share/ssl/certs/dovecot.pem
ssl_key_file = /usr/share/ssl/certs/dovecot.pem

§1.2 メールボックスの形式・パスを設定する

mail_locationで設定する。 Maildir形式を使用する場合はmaildir、:に続けてパスを指定する。 %hはユーザ名に展開される。

mail_location = maildir:%h/Maildir

§1.3 CRAM-MD5, APOP等の認証方法を有効にする

まずmechanismsで使用したい認証方法、passdb passwd-fileセクションで認証に使用するパスワードファイルをを設定する。

auth default {
  mechanisms = login plain cram-md5 apop anonymous
  passdb passwd-file {
    args = /etc/dovecot/passwd
  }
}

次に、dovecotpwコマンドでパスワードファイルに記入するパスワードを作成する。

$ dovecotpw -s CRAM-MD5
Enter new password:     # ここでパスワードを入力
Retype new password:    # 確認のためもう一度入力
{CRAM-MD5}a9f061d1dbbda6f500f99b019d8c3ba7236507d4bcaecf6cfc9e21c36d5402e3

作成するパスワードに使用できるスキームは-lオプションで一覧できる。

$ dovecotpw -l
CRYPT MD5 MD5-CRYPT SHA SHA1 SMD5 SSHA PLAIN CLEARTEXT CRAM-MD5 HMAC-MD5 DIGEST-MD5 PLAIN-MD4 PLAIN-MD5 LDAP-MD5 LANMAN NTLM RPA

作成したパスワードを先ほど設定したパスワードファイルに書き込む。 書式は「ユーザ名:パスワード」

dovecotuser:{CRAM-MD5}a9f061d1dbbda6f500f99b019d8c3ba7236507d4bcaecf6cfc9e21c36d5402e3
dovecotuser:{PLAIN}password

書き込み終わったらパーミッションを読み取り専用に変えておく。

$ sudo chmod 400 /etc/dovecot/passwd

§1.4 PAMによる認証を無効にする

passdb pamのセクションをコメントアウトする。

# passdb pam {
   :
   :
# }

§1.5 SSL/TLSを使用しない接続での平文によるログインを拒否する

disable_plaintext_authをyes, ssl_disableをnoにする。

disable_plaintext_auth = yes
ssl_disable = no

このように設定すると、IMAP LOGINDISABLED, IMAP STARTTLS, POP STLSの各capabilityを返すようになる。

§1.6 greeting messageでcapabilityを返すようにする

login_greeting_capabilityをyesにする。

protocol imap {
  login_greeting_capability = yes

このように設定すると、クライアントが接続した時(CAPABILITYコマンドを発行する前)にcapabilityを返すようになる。 接続時にDovecotが返すレスポンスは次のようになる。

* OK [CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS STARTTLS AUTH=LOGIN AUTH=PLAIN AUTH=CRAM-MD5] Dovecot ready.

noの場合(デフォルト)は次のようになる。

* OK Dovecot ready.

ただしyesに設定してもクライアントがこの機能をサポートしていない場合capabilityは無視され、noに設定した場合と同様に通常どおりCAPABILITYコマンドが発行される。

§1.7 anonymousでのログインを許可する

auth_anonymous_usernameにanonymousでログインした場合に参照するメールボックスのユーザを指定し、mechanismsにanonymousを追加する。

auth_anonymous_username = dovecotuser
auth default {
  mechanisms = login plain cram-md5 apop anonymous

この設定例だと、anonymousでログインした場合はユーザdovecotuserのメールボックスが参照される。 anonymousでログインしたときに使用されるトークンは/var/log/mail.log(anonymousの後ろの括弧内)に記録される。

Apr 25 19:58:39 hayami dovecot: auth(default): anonymous(test,127.0.0.1): login
Apr 25 19:58:39 hayami dovecot: imap-login: Login: user=<dovecotuser>, method=ANONYMOUS, rip=127.0.0.1, lip=127.0.0.1, secured
Apr 25 20:04:22 hayami dovecot: auth(default): anonymous(idolm@ster.example.com,127.0.0.1): login
Apr 25 20:04:22 hayami dovecot: imap-login: Login: user=<dovecotuser>, method=ANONYMOUS, rip=127.0.0.1, lip=127.0.0.1, secured