レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

Debian(Ubuntu)でDovecotでメールを受信する ( POP3s,IMAPs ( STARTTLS or SSL/TLS ) にも対応 )

2012年6月4日 2017年8月9日
dovecot security

今回は、pop3 , imap によるメールの受信 を行うための dovecot の設定例です。
CentOS,Scientific Linuxに関しては、

で記載しましたが、Debian(Ubuntu)では、若干、異なるみたいです。

では、早速、簡単に解説してみます。

CentOS, ScientificLinux は、こちらを参照してください。

dovecotのインストールを行う

まずは、dovecotのインストールからです。 CentOSなどのRedhat系とは、パッケージ名が若干異なる?ようで、 インストールは、通常と同じyumを使いいます。

$ apt-get install dovecot-common dovecot-imapd dovecot-pop3dreturn
...

とすればOKです。

Debian(Ubuntu)では、dovecot-common とプロトコルパッケージに分割されていて、
imap を使いたい方は、dovecot-imapd
pop3 を使いたい方は、dovecot-pop3d
それぞれインストールすることで対応することになっています。

dovecot-commonだけでは、認証機能を利用することができるようになっています。

dovecotの設定を行う

dovecotの設定といっても、やることは簡単です。

  • 対応するプロトコルの設定
  • メールの置き場所の指定

これだけです。
では、早速、簡単に解説してみます。

以降、解説の中の この文字色 は、 POP3s,IMAPs ( STARTTLS or SSL/TLS ) に対応 箇所です。
特に対応しない場合、 この文字色 の箇所は編集不要となっています。

前準備:サーバー証明書と秘密鍵の作成

Dovecotで POP3s,IMAPs ( STARTTLS or SSL/TLS ) に対応 する場合は、 SSLサーバー証明書ファイル 、SSLサーバー秘密鍵ファイル が必要になります。

そのSSLサーバー証明書などは、通常、会社などの公的な場面で管理・運営する場合は、公的なパブリック認証局から有料にて発行してもらうべきでしょう。
ただ、ここでは、サーバー証明書などを使った暗号化を利用したよりセキュアなDovecotの運用について解説したいだけですので、 プライベート認証局を自前で用意(もちろん無料)し、サーバー証明書を発行し使用するもとします。

大きな作成の流れは、以下のとおりです。
また、これらの作成手順は、プライベート認証局の証明書、サーバー証明書、クライアント証明書の作成方法について にて詳しく解説していますので、そちらを参照してください。


  1. OpenSSLをインストールします。→ 参照: OpenSSLのインストールする
  2. プライベート認証局の証明書を作成します。→ 参照: 認証局証明書を作成する
  3. サーバー証明書、秘密鍵を作成します。→ 参照: サーバー証明書を作成する。

ここでは、先の証明書作成解説記事 にて作成した PEM形式のものと利用するものとして、 以下のファイル名を使用して解説します。
(サーバー証明書作成時に、 Common Namemail.exmaple.com を指定して作成したものとします。)


  • SSLサーバー証明書ファイル ( ここで指定する証明書はPEM形式のものです ) :

    ここでは、/etc/ssl/CA/certs/mail.example.com.pem を使用するものとします。

  • SSLサーバー秘密鍵ファイル :

    ここでは、/etc/ssl/CA/private/mail.example.com.key を使用するものとします。



各ディストリビューションのdovecot設定例

Debian 6, Ubuntu 12 の場合、
dovecot の設定ファイルは、/etc/dovecot/dovecot.conf に集約されていますので、それを編集すれば良いです。

...
# 対応するプロトコルを設定します。
protocols = imap imaps pop3 pop3s
...

# SSLを使用するように指定します。('#'でコメントアウトされている場合は、'#'を外します)
ssl = yes
# SSL証明書ファイルパスを設定します。
ssl_cert_file = /etc/ssl/CA/certs/mail.example.com.pem
ssl_key_file = /etc/ssl/CA/private/mail.example.com.key
...

# メールボックスのディレクトリ構成を設定します。
mail_location = mbox:~/mail:INBOX=/var/mail/%u
...

Debian 7, Ubuntu 14 の場合、
dovecot のSSL関連設定ファイルは、/etc/dovecot/conf.d/10-ssl.conf になります。 旧バージョンは1つの設定ファイルでしたが、各機能毎に設定するファイルが異なることに注意してください。

...
# SSLを使用するように指定します。('#'でコメントアウトされている場合は、'#'を外します)
ssl = yes
...
# SSL証明書ファイルパスを設定します。
ssl_cert_file = /etc/ssl/CA/certs/mail.example.com.pem
ssl_key_file = /etc/ssl/CA/private/mail.example.com.key
...

また、上記の旧バージョンに合わせて、使用するプロトコルの設定は、/etc/dovecot/conf.d/10-master.conf になります。

...
# 対応するプロトコルを設定します。
service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
  ...
}
...
service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
  ...
}
...

さらに、メールボックスの設定は、/etc/dovecot/conf.d/10-mail.conf になります。

...
# メールボックスのディレクトリ構成を設定します。
mail_location = mbox:~/mail:INBOX=/var/mail/%u
...

(おまけ)メールボックスの設定例解説

備忘録もかねて、少しだけ、メールボックスの設定について、詳細を解説しておきます。

よくある設定例として、dovecotが古いバージョンであれば、

default_mail_env = maildir:~/Maildir

あるいは、最近のバージョンでは、以下のように設定があります。

mail_location = maildir:~/Maildir

これだと、sendmail , postfix などのデフォルトのメールボックス設定では受信できないんことがあります。
上記のように INBOX の指定をすることで一般的な /var/mail 配下のメールを受信できるようになります。

ただし、1通もメールが無い状態では、ユーザのメールボックスとなるファイルさえないので、以下のエラーが/var/log/maillogに出力されます。

Nov 26 15:40:38 host dovecot: POP3(hoge): open(/var/mail/hoge, O_CREAT) failed: Permission denied
Nov 26 15:40:38 host dovecot: POP3(hoge): access() failed with mbox file /var/mail/hoge: No such file or directory
Nov 26 15:40:38 host dovecot: POP3(hoge): stat() failed with mbox file /var/mail/hoge: No such file or directory
Nov 26 15:40:38 host dovecot: POP3(hoge): Couldn't init INBOX: Can't sync mailbox: Messages keep getting expunged
Nov 26 15:40:38 host dovecot: POP3(hoge): Mailbox init failed top=0/0, retr=0/0, del=0/0, size=0

ユーザを追加した場合やdovecotの設定を変更した時は、必ず、テストメールを送信しておきましょう。そうすることで、確認もできますし、この問題も回避できます。
mailコマンドでも良いので、ちゃんと受信できるかテストメールを送っておきましょうね。

$ mail hogereturn
Subject:TEST MAIL.return
TEST MAIL.return
.return
CC:return
$

こんな感じでコマンドラインから送信できます。(return:改行(Enter)の意味)


(おまけ)IPv6への対応の設定例解説

Debian 6(Ubuntu 12) あるいは CentOS 6では、デフォルトではIPv4に対応しています。
(Debian 7(Ubuntu 14) あるいは CentOS 7では、デフォルトではIPv4, IPv6 に対応しています。)
もし、IPv6への対応を行いたい場合は、
/etc/dovecot/dovecot.conf (CentoOS 6 では、/etc/dovecot.conf) を以下のように編集します。

...
# listen = *   # IPv4
listen = [::]  # IPv6
# listen = *, [::] # IPv4 IPv6 両方対応したい場合
...

[::]の設定でIPv6への対応のみということになります。

編集を終えたら、Dovecot を再起動し、Listen状態を確認したときに

Debian 7(Ubuntu 14) あるいは CentOS 7では、IPv6の設定を “[]”無しの “::” で表現します。 つまり、以下のようになります。
...
# listen = * # IPv4
listen = ::  # IPv6
# listen = *, :: # IPv4 IPv6 両方対応したい場合
...
$ netstat -an --tcpreturn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:465                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN
tcp        0      0 :::993                      :::*                        LISTEN
tcp        0      0 :::995                      :::*                        LISTEN
tcp        0      0 :::110                      :::*                        LISTEN
tcp        0      0 :::143                      :::*                        LISTEN

このように
httpのポート80が、0.0.0.0:80 のようにIPv4 にのみ対応してポートをオープンしているのに対して
pop3のポート110が、:::110 のようにIPv6 に対応してポートをオープンしていることに注意してください。(IPv4にも対応しています)

IPv4への対応のみに設定の場合に、同じようにListen状態を確認してみると以下のように出力されるはずです。

$ netstat -an --tcpreturn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:465                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN

dovecotの起動してみる

ここまでの設定を終えたら、dovecotの起動(再読み込み)してみましょう。

前準備としてポートを開く

iptableなどでメールの受信ポート(例えば 110など)を閉じている場合は、 PCなどからメール受信しようと思ってもできないですから、 まずは、使用するポートを開いておきます。

以下は、iptableによるポートの解放例です。
(本当に利用するポートだけ開くようにしましょう。)

# dovecot pop , imap
$ /sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPTreturn
$ /sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPTreturn
# dovecot pops , imaps
$ /sbin/iptables -A INPUT -p tcp --dport 993 -j ACCEPTreturn
$ /sbin/iptables -A INPUT -p tcp --dport 995 -j ACCEPTreturn

dovecotを起動(再読み込み)する

最後にdovecotの起動です。これは、いつもパターンです。

$ /etc/init.d/dovecot startreturn
上記は、古いサービスの起動方法です。
Debian 7 あるいは Ubuntuでは、service コマンドを使うのが一般的です。
$ service dovecot startreturn
のように起動します。

これでOK。

Debian(ubuntu)では、インストールした時点でシステム起動時にdovecotを起動するように設定してあります。
一応、確認だけはしておきましょう。

$ sysv-rc-conf --list dovecotreturn
dovecot      0:off      1:off   2:on    3:on    4:on    5:on    6:off

もし、上記が全てoffになっているようなら、onに設定しておきましょう。

$ sysv-rc-conf dovecot onreturn

これでOKです。

上記のサービスの起動は、Debianによるものです。 Ubuntuでは、serviceコマンドで行うようになっていると思います。
$ service dovecot startreturn
という感じで同様に起動できるはずです。

/etc/init.d/ からの起動は、さすがに古くなりつつあります。 今は、serviceでの起動が主流ですし、さらには、Ubuntu14では、Upstartへ移行していますから、
# initctl を略しても良いらしい。
$ start dovecotreturn
...
# or initctl をちゃんと付けて起動。
$ initctl start dovecotreturn
...
という感じで起動するようになっていくでしょう。(Ubuntu14では、既になっている)
そのため、Ubuntu14では、sysv-rc-conf は使えません。 /etc/init/dovecot.conf にて runlevel を設定することになります。
$ vi /etc/init/dovecot.confreturn
...
start on runlevel [2345]
stop on runlevel [!2345]
...

メールクライアントからメールを受信してみる

メールの受信確認には、メールクライアントソフトを使って確認するのが間違いが少ないでしょう。

ここでは、フリーメールクライアントソフトのThunderBirdを使ってみます。


ThunderBirdでメールを受信してみる

メニューの[ ツール ] – [ アカウント設定 ]でアカウント設定画面を開きます。

ThunderBird アカウント設定

アカウント設定画面から、テストに用いるメールアカウントの [ サーバー設定 ] を選択します。

ThunderBird サーバー設定
  • サーバー名:

    正しいメールサーバー名あるいはIPアドレスを設定します。
    ここでは、例としてmail.example.comを入力しています。

  • ユーザ名:

    メールの受信ユーザ名になります。
    ここでは、例としてhogeを入力しています。

  • ポート番号:
    • pop3 の場合: 通常以下のようなポート番号の設定になります。

      接続の保護: なし の場合は、110を設定します。
      接続の保護: STARTTLS の場合は、110を設定します。
      接続の保護: SSL/TLS の場合は、995を設定します。

    • imap の場合: 通常以下のようなポート番号の設定になります。

      接続の保護: なし の場合は、143を設定します。
      接続の保護: STARTTLS の場合は、143を設定します。
      接続の保護: SSL/TLS の場合は、993を設定します。

  • 接続の保護:

    ここでは、先のポート番号時と同様、なしSTARTTLSSSL/TLSのいずれかを選択します。

  • 認証方式:

    ここでは、通常のパスワード認識を選択します。

編集を終えたら、OKボタンをクリックして変更内容を保存したら、適当な外部サーバーから(例えばYahoo!のフリーメールなど)ここで設定したメールアドレス宛てにメールを送信してみましょう。

メールクライアントでメールが受信できればOKです。


サーバー証明書に関する警告メッセージについて

接続の保護が、STARTTLSSSL/TLSの場合、初回は、以下のようなメッセージが表示され、受信できないかもしれません。

ThunderBird 信用できないサイト

このメッセージは、「証明書は、勝手に自前で作成した証明書なので、信用性がありません。」という趣旨のものです。 とりあえず、セキュリティ例外をクリックすると以降、メール送信できるようになります。
更に、その上のチェックボックスにチェックを入れておけば、それ以降、この画面は表示されません。

または、あらかじめ
プライベート認証局の証明書( こちらの記事 の例では、 CentOS : /etc/pki/CA/cacert.pem, Debian Ubuntu : /etc/ssl/CA/cacert.pem )を あらかじめメールクライアントツールにインストールしておけば、上記のようなメッセージは表示されません。
以下は、ThunderBirdでの例です。先のプライベート認証局の証明書をダウンロード済として解説します。


  1. メニュー [ツール] – [オプション] をクリックします。
    ThunderBird メニューオプション
  2. オプション画面上の[詳細]をクリック、[証明書]タブを選択します。
    ThunderBird 証明書表示

    [証明書を表示]ボタンをクリックします。

  3. 証明書マネージャ画面上の[認証局証明書]タブを選択します。
    ThunderBird 証明書インポート

    [インポート]ボタンをクリックし、先にダウンロードしたプライベート認証局の証明書を指定しインポートすれば OK です。


これで、インストールしたプライベート認証局で作成・発行したサーバー証明書を自動的に許容します。

ただし、先の記事 でサーバー証明書を作成する際に Common Name で指定した サーバー名と一致していることが前提になります。

例えば、先の記事 のように www.exmple.com と指定したにもかかわらず、 メールサーバーのIPアドレスでメール受信しようとした場合は、上記と同様、警告メッセージが表示されることがありますので、十分、気をつけましょう。


受信できない場合のチェックポイント

もし、受信できない場合は、まず、ポートの確認をしてみましょう。
クライアント側で、telnetで 先のメールクライアントの設定で指定したポート番号( 以下の例は pop3のポート 110 )を確認してみましょう。

C:\> telnet 11.22.33.44 110return
+OK Dovecot ready.
quit
+OK Logging out

上記の例は、dovecotのIPアドレスが11.22.33.44だったとして記述しています。

これがOKの場合は、mail_location の設定に誤りがあるか、メールクライアントの設定に誤りがあるかも知れません。
もう一度、dovecot の設定、およびメールクライアントの設定を確認してみましょう。

これがNGの場合は、ポートがオープンされていないか、dovecotが起動していないでしょう。
ポートが開いているか確認するには、サーバー側で、iptablesを使うと良いでしょう。

$ iptables -Lreturn
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

tcp dpt:pop3の状態を確認します。ここでは、ACCEPTになっていますから、ポートはオープンされていることになります。
もし、開いていないようなら、pop3のポート(デフォルト110)を開くようにしましょう。

$ iptables -A INPUT -p tcp --dport 110 -j ACCEPTreturn

こんな感じです。



どうだったでしょうか?

メール受信側は、メール送信以上に簡単でした。

STARTTLSSSL/TLSとでは、メールの送信と同様に、SSL/TLSがよりセキュアです。

会社などのビジネスメールは、この程度のセキュリティは設定しておくできでしょうね。
もし、まだ設定していないなら、設定しましょうね。


関連記事 :


コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

Genymotionとは、 公式サイト(http://www.genymotion.com/)には、以下のように記述があります。 G ...

以下のように Android x86 を仮想マシンへインストールし、色々と試してきました。 仮想マシンを使って Android ...

Android x86とは、 いわゆる Android のPC版OSです。 Android は、Googleによって開発されたスマー ...

Android x86とは、 いわゆる Android のPC版OSです。 Android は、Googleによって開発されたスマー ...

今回は、Mondo Rescue を使って バックアップとリストア(復元)をやってみたいと思います。 いまだに、さくらのVPSは、バッ ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ
Time : 0.2245 [s]