前回はメールサーバの送信機能を実現するためにPostfixをインストールして設定しました。
今回はメールを受信する(外部からメールを取得する)機能を実現するためにDovecotをインストールして設定します。
今回の環境
念のため今回メールサーバを構築する環境を再掲しておきます。
- VPS: お名前.com VPS
- OS: Debian GNU/Linux Jessie 64bit
- IPアドレス: a.b.c.d
- ホスト名: example.comとexample.net
(ホスト名とIPアドレスは説明のための仮の名前とアドレスです。)
お名前.com VPSだと提供されるIPアドレスは1個です。しかし私はドメイン名を二つ持っているので、それぞれのドメイン名でメールを受信したいと思っています。
また、今回の環境ではホスト名=ドメイン名となってしまっています。
Dovecotのインストール
DovecotはDebianに入っているのでapt-getでインストールすることができます。ただしパッケージ名はdovecot-imapdになります。
# apt-get update # apt-get install dovecot-imapd パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: dovecot-core 提案パッケージ: dovecot-gssapi dovecot-sieve dovecot-pgsql dovecot-mysql dovecot-sqlite dovecot-ldap dovecot-pop3d dovecot-lmtpd dovecot-managesieved dovecot-solr dovecot-lucene 以下のパッケージが新たにインストールされます: dovecot-core dovecot-imapd アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 3,300 kB のアーカイブを取得する必要があります。 この操作後に追加で 8,091 kB のディスク容量が消費されます。 続行しますか? [Y/n]
「Y」を押すとインストールが始まります。
Dovecotの設定
それではDovecotの設定をしていきます。
SSL/TLSの設定
インターネット上での通信をセキュアにするためにはSSL/TLSが欠かせません。DovecotのSSL/TLSの設定は/etc/dovecot/conf.d/10-ssl.confで行います。
SSL/TLSを使うためには証明書が必要ですが取りあえず証明書についてはDebianをインストールするとついてくるsnaikoilという怪しい証明書を使うことにします。怪しい証明書を使っても暗号化はできるのですが、メールソフトが警告を出してきます。しかし、自分しか使わないので警告が出ても気にすることはありません。
10-ssl.confの変更箇所は「ssl」「ssl_cert」「ssl_key」の行です。これを次のように変更します。
ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
ファイルパスの「<」は必要なので忘れないようにしましょう。
さらに脆弱性のあるSSLv3を使わないように同じく「10-ssl.con」の「ssl_protocols」を次のように設定します。
ssl_protocols = !SSLv2 !SSLv3
プロトコルの設定
Dovecotで使用するプロトコルを選択します。プロトコルとしてはIMAP, IMAPS(IMAPの暗号化版), POP3, PO3S(PO3の暗号化版)がありますが、ここではIMAPSをのみを使うものとします。
/etc/dovecot/conf.d/10-master.confの中の下記を確認します。デフォルトでは「port」と「ssl」のところが「#」がついて無効化されているので、「#」を取って有効にします。
inet_listener imaps { port = 993 ssl = yes }
メールボックス形式の変更
Postfixでメールボックス形式をMaildir形式にしたので、Dovecotもこれにあわせます。メールボックスの形式は/etc/dovecot/conf.d/10-mail.confで行います。変更箇所は「mail_location」と「valid_chroot_dir」です。これを以下のように変更します。
mail_location = maildir:~/Maildir valid_chroot_dirs = /home
接続制限の設定
このDovecotにどこからアクセスを許すのかを設定します。今回はメールの受信サーバということで、どこからアクセスされるのかわかりませんのですべてのアドレスからの接続を許可します。
/etc/dovecot/dovecot.confでlistenを次のように設定します。
listen = *
設定の反映
最後に変更を反映します。
service dovecot restart
iptablesの設定
iptablesでファイヤウォールを構築している場合は、ポートを開ける必要があります。
Dovecotが外部から受け付けるのは993(IMAPS)なので、次の2行を/etc/iptables/rules.v4に記載します。
-A INPUT -d サーバのIPアドレス/32 -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT
なお記載する位置も重要です。よくわからなければWebサーバ(ポート80)を許可している行のすぐ後に記載すればよいでしょう。
最後に変更を反映します。
service netfilter-persistent reload
動作確認
動作確認はシンプルにThuderbirdなどのメールソフトでメールを受信することで行います。もちろん事前にテストするアカウントにメールを送っておきましょう。
メールソフトでアカウントを作成し、メール受信の設定を次のようにしておきます。
- サーバの種類: IMAP
- サーバ名: Dovecotを設定したサーバのホスト名(FQDN)
- ポート番号: 933
- 接続の保護: SSL/TLS
- 認証方式: 通常のパスワード認証
- ユーザ名: Dovecotを設定したサーバ上に存在するアカウント
- パスワード: ユーザ名に指定したアカウントのパスワード(メールソフトによっては初回送信時に入力する)
このような設定をしたメールソフトで「受信」処理を行うと初回時に次のような証明書の警告が出る可能性があります。これは証明書にSnakenailという怪しい証明書を使っているからです。特に気にしなくてもよいので承認をしておきます。
これでメールの受信ができれば設定成功です。
まとめ
今回はDevecotを使ってメールの受信ができるようにしました。
本当はDovecot-saslを使ってPostfixとDovecotのユーザ管理をDovecot-saslで一元化するのがよいのかもしれませんが、とりあえず動いたので、これでOKしたいと思います。
次回はモバイルネタに戻りたいと思います。
コメント