2-2.Dovecotを使ってPOP3サーバの構築(Ver 2.4 ~)

バージョン2.3以前の場合はこちら

 dovecotがバージョン2.3系から2.4系に変わった際に結構変わった点が多く、2.3から移行するのにだいぶめんどくさかった。
2.3のコンフィグをそのまま持ってコピっても動いてくれない。正直勘弁してくれよ!!って感じだったので今まで2.3とは別のページで書いていきます。
(まぁ~こっちの2.4だけを見られることも増えるだろうから、2.3系までのページと同じことを書いてあってもそのままにしちゃいます。)

 PostfixとDovecotの両方を構築をする事で初めて、いわゆるメールサーバとして動作することができます。PostfixやDovecotの役割をアバウトに例えると、
Postfixは「郵便局や郵便局員」。 送信先を書いて郵便局(queue)に入れたら郵便局員が届けてくれる。 
Dovecotは「家のポスト」。 (細かいこと言うとちょっと違うけど・・・)まぁ~メールが届いて貯めておく場所。ってところですかね?雰囲気ね。

 このページのDovecotの設定についても、Postfix構築同様にまずはプレーンテキストで認証を行うようにし、暗号化などはしない設定を行います。
 デフォルト設定で変更しないパラメータであってもバージョン2.3から変更されているようなパラメータは記載していきます。

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

目次
 Dovecotインストール
  dovecot.conf
   dovecot_config_version
   dovecot_storage_version
   protocols
   listen
   mail_home
   mail_driver
   mail_path
   ssl
   ssl_cipher_list
   ssl_server {}
  10-auth.conf
   auth_allow_cleartext
   auth_mechanisms
  10-master.conf
   service imap-login {}
   service pop3-login {}
  dovecotサービス再起動
 送受信確認

Dovecotインストール

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

dnf -y install dovecot

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

また、バージョン2.3系から2.4系でパラメータが変わってしまっています。
Dovecot公式?ページの2.3から2.4へのバージョンアップページを参考にしてます。
また、デフォルトではconf.d/配下のコンフィグファイルが少しだけになってしまってほとんどインストールされませんでした。
よってconf.d/配下の足りないコンフィグファイルはバージョンアップページにある「dovecot-2.4.0-example-config.tar.gz」をダウンロードしてそれをもとに設定してます。
(インストール時に存在していたコンフィグファイルはそのまま使用しています。)

dovecot.confファイル修正

dovecot_config_version

dovecotの設定バージョンを記載します。
 バージョン2.4から追加されたパラメータっぽい。

dovecot_config_version = 2.4.1

dovecot_storage_version

ストレージファイル形式のバージョンを記載します。
 バージョン2.4から追加されたパラメータっぽい。
上に記載したdovecot_config_version と dovecot_storage_version は、パラメータとしてdovecot.confの最初に書かれていないといけないらしい。
これらのパラメータをコメントアウトして起動しようとするとdovecotが起動できませんでした。

dovecot_storage_version = 2.4.1

protocols

有効化すべきプロトコルのリスト。
 fedora43でdovecotをパッケージインストールした場合のデフォルトはimapとlmtpが有効になっていました。
 これを、pop3だけを追加記載してほかの設定はコメントアウトします。

protocols {
  imap = yes
  lmtp = yes
}
  ↓ ↓ ↓ ↓
protocols {
  #imap = yes
  #lmtp = yes
  pop3 = yes
}

listen  追加

Dovecotサーバでメールを受信するIPアドレスを指定します。
 基本は、conf.d/10-master.conf 内で各サービスごとの{ } 内で定義されることを前提としているらしい?。
例えば以下のような感じ(あくまでも例です。ここでは暗号化などはしない想定なのでpop3sの設定などはしないでください)

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


 そしてアタイは今後、pop3sやsubmissionの設定にしても全てIPv4のみを許可する想定である。
そう考えると、各サービスに対して何行も同じ設定を書くことは馬鹿バカしい。ということで、dovecot.confに追加でlistenパラメータを記載します。
そうすることで全サービスにおいてIPv4のみが許可されることになる。
ついでの補足だが、listen = * と設定すると(Ver.2.4以降はIPv6もデフォルトで有効となるため)IPv6も許可されることになる。
Ver.2.3では「*」でIPv4のみが許可されるはずだった。
アタイのサーバではそもそもOS設定でIPv6を停止しているので「*」に設定してもIPv6での通信は行われない。
とはいえ明確にIPv4だけにする。という書き方にして0.0.0.0と記載する。

listen = 0.0.0.0

mail_location

 バージョン2.3系まであったこのパラメータは2.4系からこのパラメータは以下に記載するmail_homemail_drivermail_pathの3つのパラメータに分割されたよう。

mail_home

ユーザのメール受信ホームディレクトリ設定
 定義のコメントアウトを削除。
管理者しか使わないけど受信したメールをアカウントごとに分ける。

mail_home = /home/%{user}

mail_driver

 受信したメールの保存形式
今まで使っていたmaildir方式にしたいのでそのまま。
maildirに似た1メール1ファイルで保存する形式でdovecot独自の「sdbox」に設定してみたい気もするが・・・
変換するのとかめんどくさそうだし(っていうかできるのかも知らんけど)maildir方式で!

mail_driver = maildir

mail_path

メール受信トップディレクトリ
 バージョン2.3系まで使用していたMaildirを指定。

mail_path = ~/mail
  ↓ ↓ ↓ ↓
mail_path = ~/Maildir

ssl

暗号化の有無
 バージョン2.3系まではdovecont.confにsslの設定なんて入ってなかったが、デフォルトが必須設定になっている・・・
20年以上前は個人情報保護法なんて言うものもなかった。回線も遅く暗号化なんてものも一般にはなかった・・・
メールの暗号化は日本では世界的に見てものすごく遅れてた。
ドコモのメールがSTARTTLSに対応したのなんて2024年3月28日からでそれまで平文ぢゃないと弾かれてたし。
まぁ、余談は置いといて、ここではまず平文で受信できることを確認して問題ないことを確認する。

ssl = required
  ↓ ↓ ↓ ↓
ssl = no

ssl_cipher_list
ssl_server { }

 平文での送受信テストなので一応コメントアウトしておきます。

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

10-auth.conf

auth_allow_cleartext

平文での認証
 バージョン2.3系のページで数年前に批判したパラーメータが改善されてる!!
なぜ否定の否定をするのか?馬鹿なの?って言っていたところが直って平文での認証許可する?というパラメータに更新されました。
 デフォルトの定義はコメントアウトされていますが、そもそもデフォルト値がnoとなっています。
暗号化の失敗でログインできないのかを解消する為にコメントアウトを外して平文での認証を有効にします。

#auth_allow_cleartext = yes
    ↓ ↓ ↓ ↓
auth_allow_cleartext = yes

auth_mechanisms

認証時のパスフレーズの送信方法を指定します。
auth_mechanismsのデフォルト設定は plain。
10-auth.confにはコメントアウトされているが『plain login』と記載されている。

このページでの設定は平文で動作確認をするので設定変更しなくてよいです。
何も変更せずにコメントアウト状態であれば結果的にデフォルト設定の「plain」が設定されるわけだが、
今回のようにバージョンアップの時のことを考えるとコンフィグファイルに有効になっているパラメータがあれば、
設定されているんだな。というのが一目瞭然になるので、あえてコメントアウトを削除してデフォルトと同じ設定を定義します。

 他のサイトでDovecotの設定を見ていると大抵のサイトはここに追加で「login」を追加している。
が、ふる~いバージョンのメーラのOutlookを使っている場合は「login」を追加しないとダメ見たい。でもそんな古いメーラーを今時使っている人もいないと思うので追加する必要はないです。個人的に検証もしてみた結果「login」を追加しなくても問題なかったです。

#auth_mechanisms = plain login
    ↓ ↓ ↓ ↓
auth_mechanisms = plain

10-master.conf

service imap-login { }

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 = 256M # default
}

      ↓  ↓  ↓  ↓

#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 = 256M # default
#}

service pop3-login { }

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行目:送信先指定
  ローカルアカウントにメール送信するのでドメインは必要ありません。
  もし外部に送信したい場合は@以降も入力すれば外部に送信できます。(サーバがグローバルIPに接続していればですが・・・)
  mail [送信先アドレス]

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

3行目:本文入力
  好きなように本文を入力して、最後に「Ctrl + d」を押せばメール送信完了です。
  昔は最後に「.」だけを入力してEnterでよかったが今はドットだけ入力してEnterしてもメール送信になりません。

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

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

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