ローカルメール環境構築:その2
「その1」の続き。今回のお題は、POPサーバー。dovecotを利用して構築。参考URLは下記。
ChatGPTも利用。
ネットワーク構成図
再掲。
- 192.168.2.249: DNSサーバーおよびメールクライアントuser4@annecy2dc.com
- 192.168.2.2: メールサーバーannecy2dc.com
- 192.168.2.251: メールサーバーannecy1dc.com
- 192.168.2.239: メールクライアントuser1@annecy1dc.com
dovecotによるPOP(POP3)サーバー構築
インストール
$ sudo apt install dovecot-core dovecot-pop3d
ここでは、POP3のみインストール。
アカウント
ここでは、Linuxのアカウントを用いず、仮想アカウントという方式をとった。具体的には、
- vmailという実アカウント
- vmailに複数の仮想アカウントを紐づけ
- 仮想アカウントごとのメール保存場所を設定
ここでは、メールアドレス”user4@annecy2dc.com”に対して、仮想アカウントを作成する。まずは、実アカウントvmail作成。
$ sudo groupadd -g 5000 vmail
$ useradd -u 5000 -g vmail -s /bin/false -d /var/mail/vmail vmail
次に、仮想アカウント”user4@annecy2dc.com”用のメール保存場所作成。
$ mkdir -p /var/mail/vmail/annecy2dc.com/user4/Maildir
所有者やアクセス権限変更。
$ chown -R vmail:vmail /var/mail/vmail
$ chmod -R 770 /var/mail/vmail
設定ファイル
パスワード管理ファイル:/etc/dovecot/passwd
まずはパスワードを作成。
$ doveadm pw -s SHA512-CRYPT
Enter new password:
Retype new password:
{SHA512-CRYPT}KOREHA-HIMITSU-DA
”{SHA512-CRYPT}KOREHA-HIMITSU-DA”が、入力されたパスワードに相当するものである。これをもとに、仮想アカウント”user4@annecy2dc.com”を定義したパスワードファイル”/etc/dovecot/passwd”を作成。
user4@annecy2dc.com:{SHA512-CRYPT}$KOREHA-HIMITSU-DA:5000:5000::/var/mail/vmail/annecy2dc.com/user4/Maildir:/bin/false
/etc/dovecot/conf.d/10-auth.conf
元々のファイルに下記を追加。
passdb {
driver = passwd-file
args = /etc/dovecot/passwd
}
userdb {
driver = passwd-file
args = /etc/dovecot/passwd
}
アカウントデータベースに、先ほど作成した、”/etc/dovecot/passwd”を利用するということらしい。
”10-auth.conf”ではなく、”auth-passwdfile.conf.ext”に上記を加え、”10-auth.conf”にて、”auth-passwdfile.conf.ext”をImportするのが通常かもしれない。
!include auth-passwdfile.conf.ext
/etc/dovecot/conf.d/10-main.conf
ここはすべて掲載。
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
}
mail_home = /var/mail/vmail/%d/%n
mail_location = maildir:/var/mail/vmail/%d/%n/Maildir
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = vmail
- namespace:よく調べておらず、ChatGPTの結果をそのまま利用
- 仮想アカウント関連の設定:先ほど作成したパスやID情報を入力
/etc/dovecot/conf.d/10-master.conf
関連する部分のみ記載。
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service auth {
...
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
- POP3のポート番号設定(後述する検証のため、平文ポート110も有効化)
- postfixからdovecotの認証情報を利用する設定
その他
本来であれば、証明書や鍵関連を設定するのであるが、ここでは、インストール時のものをそのまま利用。”10-ssl.conf”などを適宜設定する。
検証
dovecotが動作しているホストでの直接的な確認。
$ telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot (Ubuntu) ready.
user user4@annecy2dc.com
+OK
pass user4
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host
認証までであるが、POPのコマンドを直接的に入力して確認。この時のログは下記となる。
$ tail /var/log/mail.log
2025-03-22T07:25:24.408112+09:00 XXXX dovecot: master: Dovecot v2.3.21 (47349e2482) starting up for pop3 (core dumps disabled)
2025-03-22T09:45:52.572470+09:00 XXXX dovecot: pop3-login: Login: user=<user4@annecy2dc.com>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=3439, secured, session=<SQ9rseMwmNh/AAAB>
2025-03-22T09:45:54.966092+09:00 XXXX dovecot: pop3(user4@annecy2dc.com)<3439><SQ9rseMwmNh/AAAB>: Disconnected: Logged out top=0/0, retr=0/0, del=0/13, size=15960
ネットワークを介した確認は、次回その3で実施する。
EOF
