2.Dovecotを使ってPOP3サーバの構築

 PostfixとDovecotの両方を構築をする事で初めて、いわゆるメールサーバとして動作することができます。
 PostfixやDovecotの役割をアバウトに例えると、Postfixは郵便ポスト、郵便局や郵便局員。Dovecotは家のポスト。ってところですかね?雰囲気ね。

 このページのDovecotの設定についても、Postfix構築同様まずはプレーンテキストで認証を行うようにし、暗号化などはしない設定を行います。
 更に、設定ファイルでデフォルト設定でそのまま使用するパラメータはここでは記載しません。変更点だけを記載していきます。(一部補足の為のパラメータ記載あり)

Dovecot構築の前提条件
 ・Dovecotを構築した同一サーバにPostfixを構築する際の設定となります。
 ・このページでは基本的なメールの送受信ができるかの設定しかしないので暗号化等の設定は別ページで行います。

目次
 Dovecotインストール
  dovecot.conf
   protocols
   listen
   verbose_proctitle
  10-auth.conf
   disable_plaintext_auth
   auth_mechanisms  ※補足
  10-ssl.conf
   ssl
  10-mail.conf
   mail_location
  10-master.conf
   service imap-login
   service pop3-login
  dovecotサービス再起動
 受信確認

Dovecotインストール

 ではPostfix同様まずはdovecotをインストールしましょう。これも下記のコマンドだけでインストールできます。

dnf -y install dovecot

 インストールが完了したらまずは設定ファイル /etc/docvecot/dovecot.conf を修正します。

dovecot.confファイル修正

protocols   24行目

Dovecotサーバで使用するプロトコルを指定します。
 dovecot.confのデフォルト設定ではコメントアウトされているのでコメントを外し「imap」「lmtp submission」を削除します。

#protocols = imap pop3 lmtp submission
    ↓ ↓ ↓ ↓
protocols = pop3

listen   30行目

Dovecotサーバでメールを受信するIPアドレスを指定します。
 dovecot.confのデフォルト設定ではコメントアウトされているのでコメントを外し、さらにここではIPv6は使用せずIPv4からのみ許可するので「, ::」は削除します。

#listen = *, ::
  ↓ ↓ ↓ ↓
listen = *

verbose_proctitle   61行目

psコマンドでdovecotに接続しているユーザのIPアドレスが表示されるようになります。
実際のPOP3に関する設定とはちょっと関係ないですが、プロセス確認時などに誰がどこから接続しているか分かるので有効にしておきます。
dovecot.confのデフォルト設定ではコメントアウトされているのでコメントを外し、「no」を「yes」に変更します。

#verbose_proctitle = no
  ↓ ↓ ↓ ↓
verbose_proctitle = yes

個の設定を変更する事で具体的にどのようにpsコマンドの変更がされるかというと、

fedora 12345 1000 1 00:00 ? 00:00:00 dovecot/pop3
       ↓  ↓  ↓  ↓  ↓
fedora 12345 1000 1 00:00 ? 00:00:00 dovecot/pop3 [fedora 192.168.0.250]

こんな感じでリアルタイムにpop3で接続しているユーザがどこから接続している変わるようになります。
(とはいってもメールの受信なんて一瞬で終わっちゃったりするから検知するのは難しいかもしれませんが・・・)

 次は /etc/dovecot/conf.d/ 配下のファイルを修正していきます。

10-auth.conf

disable_plaintext_auth   10行目

「平文の認証を無効にする」けどよいですか?をyes/noで指定します。
 いきなりうざいパラメータ・・・なぜ否定のパラメータをyes/noで定義するのか?
 「plaintext_auth」というパラメータで「enable/disable」を選ばせれば分かりやすいのに、なぜ否定のパラメータ項目を否定で設定しなきゃいけないのか?
カシコが設計するとアホぉには分かりづらくてしょうがない!!

 と、文句を言ってても始まらないので、進めま~す(w
10-auth.confのデフォルト設定ではコメントアウトされています。
このページではひとまず平文を使った認証で確認を行いたいと思っているので、コメントを外して、更に「yes」と定義されているのを「no」に変更します。

#disable_plaintext_auth = yes
    ↓ ↓ ↓ ↓
disable_plaintext_auth = no

auth_mechanisms   100行目

※補足の為記載
認証時のパスフレーズの送信方法を指定します。
10-auth.confのデフォルト設定は plain。今回は初めに平文で動作確認をするので設定変更せずデフォルト設定のままでよいです。
 他のサイトでDovecotの設定を見ていると大抵のサイトはここに追加で「login」を追加している。が、loginメカニズムは廃止しているようです。ふる~いバージョンのメーラのOutlookを使っている場合は「login」を追加しないとダメ見たい。でもそんな古いメーラーを今時使っている人もいないと思うので追加する必要はないです。個人的に検証もしてみた結果「login」を追加しなくても問題なかったです。

10-ssl.conf

ssl   8行目

SSLの暗号化通信を行うかを指定します。
10-ssl.confのデフォルト設定ではSSL通信を行う設定になっています。
今回はまずメールサーバとしての動作確認をする為暗号化をいったん停止するので「required」から「no」に変更します。

ssl = required
  ↓ ↓ ↓ ↓
ssl = no

 このsslの設定をnoとするとSSL/TLSは完全に無効になるようです。

 これですべての設定が完了したのでDovecotを起動します。

systemctl start dovecot

10-mail.conf

mail_location   30行目

メールの配送先設定
「mail_location」はデフォルトでは設定されておらずnullとなっています。
このコンフィグに記載のある通り、/usr/share/doc/dovecot/wiki/MailLocation.txt を読むと
null にしているのは、dovecotが保存先を自動的に見つけるとの事。
そしてその参照先は以下の順で確認されていくようです。

~/mdbox/
~/sdbox/
~/Maildir/
~/mail/.imap/
~/mail/inbox
~/mail/mbox
~/Mail/.imap/
~/Mail/inbox
~/Mail/mbox

とはいえdovecotに探させるまでもなく、Postfixの設定でも「Maildir形式」でと設定しているので、dovecotでも明示的に設定してしまいます。
30行目のコメントを外し、maildir:~/Maildir を設定します。
 (24行目の内容はあくまでも説明文なのでそこはそのままにします。)


#mail_location =
    ↓ ↓ ↓ ↓
mail_location = maildir:~/Maildir

10-master.conf

service imap-login  17行目~

IMAPプロトコルに関する基本設定
アタイはIMAPプロトコルは使う気が無いので全体的にコメントアウトしちゃいます。

service imap-login {
  inet_listener imap {
    #port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }

  # Number of connections to handle before starting a new process. Typically
 #          ・
 #          ・
  #vsz_limit = $default_vsz_limit
}

      ↓  ↓  ↓  ↓

#service imap-login {
#  inet_listener imap {
#    #port = 143
#  }
#  inet_listener imaps {
#    #port = 993
#    #ssl = yes
#  }
#
#  # Number of connections to handle before starting a new process. Typically
# #          ・
# #          ・
#  #vsz_limit = $default_vsz_limit
#}

service pop3-login  38行目~

POP3プロトコルに関する基本設定
pop3のリッスンポートのコメントアウトを外して110番に設定します。
今回は暗号化しないのでPOP3sの設定はしません

service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}

     ↓  ↓  ↓  ↓

service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}

Dovecotにおいて参考にしたサイト:Dovecot documentation

dovecotサービス再起動

systemctl restart dovecot

一応ステータス確認しましょう。

systemctl status dovecot

・「Active」がactive(runnning)になっている事。
・最後に表示される部分(maillogの一部を表示)にerrorやwarningが出ていないことを確認します。

送受信確認

 最後にメーラーを使って送受信の確認をしましょう。ここではメーラーの詳細設定は記載しません。
サーバーと同一セグメント(ローカルセグメント)のPCのメーラーから送受信の確認をします。
サーバーのIPが「192.168.0.1」
送受信確認するPCのIPが「192.168.0.10」とでもしておきましょう。
その場合
 ・POP3、SMTPサーバ共に宛先はサーバのローカルIP(192.168.0.1)
 ・ユーザIDはfedora(OSユーザとしてfedoraユーザが作成済み)
 ・ユーザPWはfedoraのOSパスワードを設定します。
この状態でfedoraユーザに送信してから受信の確認をしてみます。

※もしここでメーラーを使って外部(自分の携帯メールやyahoo、gmailなど)に送信。
 さらに外部から構築した「fedora@caramelsause.info」にメール送信してメーラーで外部から送ったメールを見る事が出来ればPostfixとDovecotの設定はOKとなりますね。

もしメーラーでの送信に失敗した場合
 ・Fedoraサーバのコンソールからmailコマンドでメールを送信確認してみます。

mail fedora
Subject: test
あいうえお
.
EOT

1行目:送信先指定
  ローカルアカウントにメール送信するのでドメインは必要ありません。
  もし外部に送信したい場合は@以降も入力すれば外部に送信できます。
  mail [送信先アドレス]
   

2行目:件名入力
  「Subject:」と表示されるので件名を入力

3行目:本文入力
  好きなように本文を入力して、最後に「.」だけ入力してEnterをすればメール送信完了です。

ローカルのDovecotに受信できたか確認するには、/home/fedora/Maildir/new この配下にファイルが存在すれば受信できていることになります。

もしメーラーでの受信に失敗した場合の原因は・・・
 ・サーバの/home/fedora/Maildir/new にファイルが存在しているのにメーラーで受信できない場合は、メーラーの設定が悪いか、Firewallとかネットワークとか・・・
 ・/home/fedora/Maildir/new にすらファイルが作成されない場合・・・・
  もう一度/var/log/maillog を見て解決するしかないですね・・・。Postfixの設定も含め見直した方がいいかも。

平文でのメールの送受信ができたら今度は暗号化(SMTPs POP3s)して送受信できるようにしましょう。