POP(tcpserver)のインストール
POPはtcpserverから起動されます。tcpserverはucspi-tcpパッケージの一部として提供されており、inetdなどの従来のサービス起動プロセスよりもDoS攻撃などにも対応できるように同時接続制限が設定できる、制御ファイルは独自データベースファイル(cdb)を採用しているため、高速な処理が可能、設定変更にサービス再起動が必要ない、などメリットがあります。
POPでメールを読む際にパスワードの暗号化でapopをインストールします。
POPソース、コンパイル
checkpw-1.03.tar.gzをダウンロード、コンパイル、インストール
wget http://sourceforge.net/projects/checkpw/files/checkpw/checkpw-1.03/check...
解凍後 cd chekpw-1.03/
make
make setup check
/bin/checkapoppw が出来ているか確認します。
ls -al /bin/checkapoppw
-rwx------ 1 root root 18784 7月 30 17:27 /bin/checkapoppw
tcpserverのインストール
wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz
パッチucspi-tcp-0.88.errno.patchをダウンロード
wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
ucspi-tcp-0.88.tar.gzを解凍し、そのディレクトリに移動 cd ucspi-tcp-0.88
パッチ ucspi-tcp-0.88.errno.patch を適用
patch < ../ucspi-tcp-0.88.errno.patch
make
make setup check
その後、tcpserver を起動するためにLinux再起動
設定
tcpserverからの呼び出し
tcpserver からPOPを呼び出すために、起動スクリプト /etc/init.d/qmail のPOPの以下の行コメントを外します。
# For POP3
# sh -c "/sbin/start-stop-daemon --start --quiet --user root \
# --pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
# --exec /usr/local/bin/tcpserver -- -v -u 0 -g 0 0 pop3 \
# /var/qmail/bin/qmail-popup \
# usuzumi.ep.sci.hokudai.ac.jp /bin/checkapoppw \
# /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
# | /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
以下のstopの部分もコメントを外します。
# /sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3d.pid --exec /usr/local/bin/tcpserver # pop3
以下のようになります。hoge.jp /bin/checkapoppw \ hoge.jpにはホスト名を記載します。
# For POP3
sh -c "/sbin/start-stop-daemon --start --quiet --user root \
--pidfile /var/run/tcpserver_pop3d.pid --make-pidfile \
--exec /usr/local/bin/tcpserver -- -v -u 0 -g 0 0 pop3 \
/var/qmail/bin/qmail-popup \
hoge.jp /bin/checkapoppw \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /var/qmail/bin/splogger pop3d 3 > /dev/null 2>&1 &"
/sbin/start-stop-daemon --user root --stop --quiet --oknodo --pidfile /var/run/tcpserver_pop3d.pid --exec /usr/local/bin/tcpserver # pop3
qmailの再起動: /etc/init.d/qmail restart
この時点、qmailの動作ステータスを確認するとワーニングが出ていて、'systemctl daemon-reload' を実行すればワーニングはなくなります。
Warning: The unit file, source configuration file or drop-ins of qmail.service changed on disk. Run 'systemctl daemon-reload' to reload units.
● qmail.service - LSB: Start and stop qmail
Loaded: loaded (/etc/init.d/qmail; generated)
Active: active (exited) since Fri 2021-07-30 17:57:22 JST; 16min ago
Docs: man:systemd-sysv-generator(8)
7月 30 17:57:22 netqmail systemd[1]: Starting LSB: Start and stop qmail...
7月 30 17:57:22 netqmail qmail[449]: Startig mail-transfer agent: qmail.
7月 30 17:57:22 netqmail systemd[1]: Started LSB: Start and stop qmail.
7月 30 17:57:23 netqmail qmail[453]: 1627635443.017296 status: local 0/10 remote 0/20
systemctl daemon-reload
qmailの動作ステータスを確認し、ワーニングがないことを確認します。
systemctl status qmail
● qmail.service - LSB: Start and stop qmail
Loaded: loaded (/etc/init.d/qmail; generated)
Active: active (exited) since Fri 2021-07-30 17:57:22 JST; 17min ago
Docs: man:systemd-sysv-generator(8)
Tasks: 0 (limit: 1138)
Memory: 0B
CGroup: /system.slice/qmail.service
7月 30 17:57:22 netqmail systemd[1]: Starting LSB: Start and stop qmail...
7月 30 17:57:22 netqmail qmail[449]: Startig mail-transfer agent: qmail.
7月 30 17:57:22 netqmail systemd[1]: Started LSB: Start and stop qmail.
7月 30 17:57:23 netqmail qmail[453]: 1627635443.017296 status: local 0/10 remote 0/20
POP3動作の確認
ps aux | grep qmail
qmails 851 0.0 0.0 2340 680 pts/0 S 18:13 0:00 qmail-send
qmaill 853 0.0 0.0 2292 744 pts/0 S 18:13 0:00 splogger qmail
root 854 0.0 0.0 2292 676 pts/0 S 18:13 0:00 qmail-lspawn ./Mailbox
qmailr 855 0.0 0.0 2284 736 pts/0 S 18:13 0:00 qmail-rspawn
qmailq 856 0.0 0.0 2284 740 pts/0 S 18:13 0:00 qmail-clean
root 857 0.0 0.1 2404 1732 pts/0 S 18:13 0:00 /usr/local/bin/tcpserver -v -u 0 -g 0 0 pop3 /var/qmail/bin/qmail-popup netqmail.ijinden.jp /bin/checkapoppw /var/qmail/bin/qmail-pop3d Maildir
root 858 0.0 0.0 2292 736 pts/0 S 18:13 0:00 /var/qmail/bin/splogger pop3d 3
root 898 0.0 0.0 4332 888 pts/0 S+ 18:19 0:00 grep qmail
~/Maildir/ への配送
環境変数の設定
POPによるメールの呼び出しは、Maildir形式で行います。/etc/profile に次の 2 行を追加します。
MAILDIR="$HOME/Maildir/"
export MAILDIR
cshは /etc/csh.cshrc に次の 1 行を追加します。
setenv MAILDIR $HOME/Maildir/
配送テスト
配送テストのために、一般ユーザーで以下の設定を行う。
~/Maildir の作成
maildirmake のスクリプトでMaildir ディレクトリを作成する。
$ maildirmake ~/Maildir
.qmail の編集
~/Maildir への配送を qmail に指示する (.qmail へ配送先ディレクトリを記述)
$ echo ./Maildir/ >> ~/.qmail
$ chmod 600 ~/.qmail
$ ls -la ~/.qmail
-rw------- 1 hodota hodota 21 7月 31 12:51 /home/hodota/.qmail
.qmail のパーミッションは、600 か 644 でなければならない。実行許可が出ていないことと、オーナー以外に書き込みが許可されていないことが要求される。
以上の作業は各ユーザごとに行わねばならなので、/etc/skel/ 以下 に .qmail や Maildir/ を置いておけば、adduser コマンドを用いてアカウ ントを新規に作ったときにできるホームディレクトリ内にこれらは自動で入ります。 新規にアカウントを取得する一般ユーザは、以上の作業が不要になります。
cp -ar /home/hodota/.qmail /etc/skel/
chown -R root:root /etc/skel/.qmail
cp -ar /home/hodota/Maildir /etc/skel/
chown -R root:root /etc/skel/Maildir/
認証パスワードの設定
~/Maildir/.password ファイルを作成します。 APOPPASSWORDは自分で考えたパスワードに変更します。APOPPASSWORDがPOP でメールを読むときの認証パスワードとなり、パーミッションを600としないとPOPが機能しません。
$ echo 'APOPPASSWORD' > ~/Maildir/.password
$ chmod 600 ~/Maildir/.password
テスト
配送テストを行う. 自分に送ってみる. 以下のコマンドを実行する.
$ echo to: chikuwaXX | /var/qmail/bin/qmail-inject
メールソフトで受信テストします。
受信サーバ: POP3
サーバのホスト名: mail.xxxxxx.jp
受信サーバのポート番号: 110
受信サーバの SSL: 接続の保護なし
認証方式: 暗号化されたパスワード認証