POP / tcpserver

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: 接続の保護なし
認証方式: 暗号化されたパスワード認証 

 

 

 

タグ: 

オープンソースソフトウェア: