PostfixとDovecotによるメールサーバの構築 その3

Gearbest Gadgets Daily: Up to 95% OFF
郵便受け

前回はメールサーバの送信機能を実現するために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したいと思います。

次回はモバイルネタに戻りたいと思います。