IMAP/POPサーバDovecotに関するTips。
設定ファイル
使用するプロトコルを設定する
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
メールボックスの形式・パスを設定する
mail_locationで設定する。 Maildir形式を使用する場合はmaildir、:に続けてパスを指定する。 %hはユーザ名に展開される。
mail_location = maildir:%h/Maildir
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
PAMによる認証を無効にする
passdb pamのセクションをコメントアウトする。
# passdb pam {
:
:
# }
SSL/TLSを使用しない接続での平文によるログインを拒否する
disable_plaintext_authをyes, ssl_disableをnoにする。
disable_plaintext_auth = yes
ssl_disable = no
このように設定すると、IMAP LOGINDISABLED, IMAP STARTTLS, POP STLSの各capabilityを返すようになる。
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コマンドが発行される。
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