IT pass HikiWiki - [Memo2008][EPA]tako作業メモ(納多)(080723) Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
((<[Memo2008][EPA]tako作業メモ(納多)(080424)>)) から続く.
= qmail
qmail に新たに qmail-realrcptto パッチを適用するため,
qmail の再インストールを行う
== qmail-realrcptto パッチの解説
((<qmail-realrcptto パッチ|URL:http://code.dogmap.org./qmail/>))
は, あて先が有効であるかを確認する機能を qmail に付加するパッチである.
これを適用することにより,
存在しないアドレスへのメール (SPAM など) を拒否することができ,
サーバへの無用な負荷を避けることができる.
(参考: http://ya.maya.st/mail/lwq.html#smtp-reject )
== qmail の再インストール
# cd /usr/local/src
念のため, tar.gz ファイルの展開からやり直すことにする.
# rm -r qmail-1.03
# tar zxfv qmail-1.03.tar.gz
# cd qmail-1.03
パッチを当てていく.
# patch -p1 < ../qmail-1.03-realrcptto-2006.12.10.patch
patching file Makefile
patching file qmail-qmtpd.c
patching file qmail-smtpd.c
patching file realrcptto.c
# patch -p1 < ../qmail-date-localtime.patch
patching file date822fmt.c
# patch -p0 < ../qmail-glibc.patch
patching file error.h
patching file dns.c
patching file cdb_seek.c
# patch -p0 < ../qmail-local.patch
patching file qmail-local.c
再インストールのためサービスを停止する.
# /etc/init.d/qmail stop
インストールを行う.
# make
# make man
# make setup
./install
install: fatal: unable to write .../bin/splogger: text busy
make: *** [setup] Error 111
tcpserver が停止していなかったため上書きできなかったようだ.
# /etc/init.d/tcpserver stop
# make check
OK. サービスを再開する.
# /etc/init.d/qmail start
# /etc/init.d/tcpserver start
== 宛先の有効性をチェックしたくない場合
宛先の有効性をチェックしたくない場合には
# echo '#' > /var/qmail/alias/.qmail-default
とすればよい.
=== 動作テスト
外部から存在しないアドレス, 例えば hoge_at_tako.epa.scitec.kobe-u.ac.jp にメールを送る.
tako:/var/log/mail.log に受信した内容が追記されていた.
今度は宛先の有効性をチェックしないでみる.
# echo '#' > /var/qmail/alias/.qmail-default
再び, 外部から存在しないアドレスにメールを送る.
アドレスが存在しないことを伝えるエラーメールが帰ってきた.
tako:/var/log/mail.log には何も追記されていない.
設定を元に戻す.
# rm /var/qmail/alias/.qmail-default
みたび, 外部から存在しないアドレスにメールを送る.
最初のように, tako:/var/log/mail.log にメールを受信した内容が追記されていた.
= qpopper
qpopper は APOP をサポートする POP3 サーバである.
== qpopper のインストール
最新版である qpopper 4.0.13 をインストールする.
# cd /usr/local/src
# wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.13.tar.gz
# tar zxfv qpopper4.0.13.tar.gz
# cd qpopper4.0.13
ビルドの前に, qpopper を動作させるためのユーザ pop を作成する.
# adduser --system --ingroup mail --no-create-home --shell /bin/false --disabled-password --home /nonexistent pop
Warning: The home dir you specified does not exist.
Adding system user `pop' (UID 117) ...
Adding new user `pop' (UID 117) with group `mail' ...
Not creating home directory `/nonexistent'.
# vipw
上の行を下の行にする ('Post Office Owner' と追記しただけ)
pop:x:117:8::/nonexistent:/bin/false
pop:x:117:8:Post Office Owner:/nonexistent:/bin/false
ちなみに, ユーザ ID とグループ ID は
システムによって順に割り振られていくので,
いつも上記のようになるとは限らない.
=== ビルド
以下のコマンドを打つ.
# ./configure \
--prefix=/usr/local/qpopper \ # インストール場所
--enable-apop=/usr/local/qpopper/pop.auth \ # APOP の設定ファイルの場所
--enable-popuid=pop \ # qpopper を動作させるユーザ
--enable-shy \ # qpopper のバージョン番号を隠蔽
--enable-nonauth-file=/usr/local/qpopper/popusers \ # 接続拒否ユーザを書いたリストの場所
--without-pam \ # POP3 に PAM による認証を行わない
--with-gdbm # データベースの取り扱いに GDBM を使う
configure の設定オプションについては
./configure --help コマンドで参照できる.
APOP のみにするため,
popper/Makefile を編集する.
OS_DEFS の行を以下のように変更する.
OS_DEFS = -DLINUX -DUNIX -DAPOP_ONLY
make する.
$ make
(略)
pop_user.c: In function 'pop_user':
pop_user.c:149: error: 'DBM' undeclared (first use in this function)
pop_user.c:149: error: (Each undeclared identifier is reported only once
pop_user.c:149: error: for each function it appears in.)
pop_user.c:149: error: 'db' undeclared (first use in this function)
pop_user.c:153: error: 'datum' undeclared (first use in this function)
pop_user.c:153: error: expected ';' before 'key'
pop_user.c:332: error: 'key' undeclared (first use in this function)
pop_user.c:345: error: 'value' undeclared (first use in this function)
make: *** [pop_user.o] Error 1
DBM が宣言されていない, ということは, gdbm が怪しい.
# apt-get install gdbm
gdbm なるパッケージはないようだ.
debian のパッケージ検索をしてみると, libgdbm-dev なるものがあるようだ.
# apt-get install libgdbm-dev
configure をやり直す.
# make
今度はエラーなく完了.
2007 年度の構築ドキュメントにおける, バージョン 4.0.9 のインストールでは,
「qpopper の Makefile はディレクトリの作成を行ってくれないため, 自前で箱は用意した後に make install する.」
とあるが, 何もせず
# make install
と実行しても普通に /usr/local/qpopper ディレクトリ以下は作られていた
(構築ドキュメントの修正は既に完了).
しかし, 以下のメッセージが現れた.
(略)
Installed popper as /usr/local/qpopper/sbin/popper
/bin/sh: line 1: @/usr/bin/install: No such file or directory
/bin/sh: line 3: @echo: command not found
/bin/sh: line 5: /usr/local/qpopper/sbin/popauth: No such file or directory
/bin/sh: line 6: @echo: command not found
make[1]: *** [install] Error 127
make[1]: Leaving directory `/usr/local/src/qpopper4.0.13/popper'
make: *** [install] Error 2
/usr/local/qpopper/sbin/popper の存在は確認したが,
/usr/local/qpopper/sbin/popauth は見つからない.
popper/Makefile より, 関係がありそうなところを以下に引用する:
(略)
install: popper ${pop_auth}
@if [ ! -d ${installdir} ]; then \
mkdir -m 0755 ${installdir}; \
chown root:wheel ${installdir}; \
fi
@${INSTALL} -s -m 0755 -o root popper ${installdir}/popper
@echo "Installed popper as ${installdir}/popper"
@if [ "x${poppassd}" != "x" ]; then \
cd ${password_dir} && ${MAKE} install ;\
fi
@if [ "x${pop_auth}" != "x" ]; then \
@${INSTALL} -s -m 4755 -o ${apop_uid} -g 0 ${pop_auth} \
${installdir}/${pop_auth}; \
@echo "Installed popauth as ${installdir}/${pop_auth} " \
"with uid ${apop_uid}"; \
${installdir}/${pop_auth} -init -safe; \
@echo "Initialized popauth database"; \
fi
(略)
上に引用したものの後半部において,
'@' がなぜかコマンドの一部と解釈されてしまっているようだ.
# cp popper/Makefile popper/Makefile.org
上に引用したものの後半部において,
'@' を消去してみる.
# make install
前にエラーが出た箇所は以下のように出力された.
Installed popper as /usr/local/qpopper/sbin/popper
if [ "xpopauth" != "x" ]; then \
/usr/bin/install -c -s -m 4755 -o pop -g 0 popauth \
/usr/local/qpopper/sbin/popauth; \
echo "Installed popauth as /usr/local/qpopper/sbin/popauth " \
"with uid pop"; \
/usr/local/qpopper/sbin/popauth -init -safe; \
echo "Initialized popauth database"; \
fi
Installed popauth as /usr/local/qpopper/sbin/popauth with uid pop
Initialized popauth database
make[1]: Leaving directory `/usr/local/src/qpopper4.0.13/popper'
コマンドが陽に表示されたが, うまく実行されたようだ.
/usr/local/qpopper/sbin/popauth の存在も確認.
inetd に登録を行う.
# vi /etc/inetd.conf
以下の行を追加する.
pop3 stream tcp nowait root /usr/lcoal/qpopper/sbin/popper popper -s
inetd を再起動する.
# /etc/init.d/openbsd-inetd restart
== パスの設定
インストールした qpopper の実行ファイル群, マニュアル群へパスを通す.
=== 実行ファイルへのパスの設定
((<[EPA]パスの設定>)) の <一般ユーザ用コマンドのパス> に /usr/local/qpopper/sbin を追加する.
(大抵, sbin はシステム用コマンドがインストールされる場所であるが, 一般ユーザが使用する pop_auth もインストールされているため, 一般ユーザ用コマンドのパスとして登録する).
=== マニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する. 詳しくは
((<[EPA]パスの設定#man 関連のパスの設定>)) を参照のこと.
MANDATORY_MANPATH /usr/local/qpopper/man
MANPATH_MAP /usr/local/qpopper/sbin /usr/local/qpopper/man
MANDB_MAP /usr/local/qpopper/man /usr/local/qpopper/man
== popauth の使い方の例
APOP を使うようにする.
$ popauth
または
# popauth -u (ユーザ名)
登録しているユーザ全員を表示する
# popauth -list ALL
ユーザ testuser を削除する
# popauth -delete testuser
== 動作確認
ユーザ chikuwa1 で qpopper による APOP の動作確認を行う
まず APOP で使用するパスワードを設定する.
$ popauth
Changing only APOP password for mondo1.
New password: (パスワードを入力)
Retype new password: (パスワードを入力)
$ sudo -s
# mail chikuwa1
Subject: test of APOP
test [Enter]
[Ctrl + D]
Cc: [Enter]
ユーザ chikuwa1 になると,
You have new mail in /home/chikuwa1/Mailbox
というメッセージが現れた.
メールがメールスプール /home/chikuwa1/Mailbox にあることを確認.
最後に, APOP 対応のメーラーからメールを受け取れるか確認する.
メーラーからのログインには成功するが, Mailbox のメッセージが
手元に来ない.
設定を確認する必要あり.
((<[Memo2008][EPA]tako作業メモ(納多)(080724)>)) へ続く
((<[Memo2008][EPA]tako作業メモ(納多)(080424)>)) から続く.
= qmail
qmail に新たに qmail-realrcptto パッチを適用するため,
qmail の再インストールを行う
== qmail-realrcptto パッチの解説
((<qmail-realrcptto パッチ|URL:http://code.dogmap.org./qmail/>))
は, あて先が有効であるかを確認する機能を qmail に付加するパッチである.
これを適用することにより,
存在しないアドレスへのメール (SPAM など) を拒否することができ,
サーバへの無用な負荷を避けることができる.
(参考: http://ya.maya.st/mail/lwq.html#smtp-reject )
== qmail の再インストール
# cd /usr/local/src
念のため, tar.gz ファイルの展開からやり直すことにする.
# rm -r qmail-1.03
# tar zxfv qmail-1.03.tar.gz
# cd qmail-1.03
パッチを当てていく.
# patch -p1 < ../qmail-1.03-realrcptto-2006.12.10.patch
patching file Makefile
patching file qmail-qmtpd.c
patching file qmail-smtpd.c
patching file realrcptto.c
# patch -p1 < ../qmail-date-localtime.patch
patching file date822fmt.c
# patch -p0 < ../qmail-glibc.patch
patching file error.h
patching file dns.c
patching file cdb_seek.c
# patch -p0 < ../qmail-local.patch
patching file qmail-local.c
再インストールのためサービスを停止する.
# /etc/init.d/qmail stop
インストールを行う.
# make
# make man
# make setup
./install
install: fatal: unable to write .../bin/splogger: text busy
make: *** [setup] Error 111
tcpserver が停止していなかったため上書きできなかったようだ.
# /etc/init.d/tcpserver stop
# make check
OK. サービスを再開する.
# /etc/init.d/qmail start
# /etc/init.d/tcpserver start
== 宛先の有効性をチェックしたくない場合
宛先の有効性をチェックしたくない場合には
# echo '#' > /var/qmail/alias/.qmail-default
とすればよい.
=== 動作テスト
外部から存在しないアドレス, 例えば hoge_at_tako.epa.scitec.kobe-u.ac.jp にメールを送る.
tako:/var/log/mail.log に受信した内容が追記されていた.
今度は宛先の有効性をチェックしないでみる.
# echo '#' > /var/qmail/alias/.qmail-default
再び, 外部から存在しないアドレスにメールを送る.
アドレスが存在しないことを伝えるエラーメールが帰ってきた.
tako:/var/log/mail.log には何も追記されていない.
設定を元に戻す.
# rm /var/qmail/alias/.qmail-default
みたび, 外部から存在しないアドレスにメールを送る.
最初のように, tako:/var/log/mail.log にメールを受信した内容が追記されていた.
= qpopper
qpopper は APOP をサポートする POP3 サーバである.
== qpopper のインストール
最新版である qpopper 4.0.13 をインストールする.
# cd /usr/local/src
# wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.13.tar.gz
# tar zxfv qpopper4.0.13.tar.gz
# cd qpopper4.0.13
ビルドの前に, qpopper を動作させるためのユーザ pop を作成する.
# adduser --system --ingroup mail --no-create-home --shell /bin/false --disabled-password --home /nonexistent pop
Warning: The home dir you specified does not exist.
Adding system user `pop' (UID 117) ...
Adding new user `pop' (UID 117) with group `mail' ...
Not creating home directory `/nonexistent'.
# vipw
上の行を下の行にする ('Post Office Owner' と追記しただけ)
pop:x:117:8::/nonexistent:/bin/false
pop:x:117:8:Post Office Owner:/nonexistent:/bin/false
ちなみに, ユーザ ID とグループ ID は
システムによって順に割り振られていくので,
いつも上記のようになるとは限らない.
=== ビルド
以下のコマンドを打つ.
# ./configure \
--prefix=/usr/local/qpopper \ # インストール場所
--enable-apop=/usr/local/qpopper/pop.auth \ # APOP の設定ファイルの場所
--enable-popuid=pop \ # qpopper を動作させるユーザ
--enable-shy \ # qpopper のバージョン番号を隠蔽
--enable-nonauth-file=/usr/local/qpopper/popusers \ # 接続拒否ユーザを書いたリストの場所
--without-pam \ # POP3 に PAM による認証を行わない
--with-gdbm # データベースの取り扱いに GDBM を使う
configure の設定オプションについては
./configure --help コマンドで参照できる.
APOP のみにするため,
popper/Makefile を編集する.
OS_DEFS の行を以下のように変更する.
OS_DEFS = -DLINUX -DUNIX -DAPOP_ONLY
make する.
$ make
(略)
pop_user.c: In function 'pop_user':
pop_user.c:149: error: 'DBM' undeclared (first use in this function)
pop_user.c:149: error: (Each undeclared identifier is reported only once
pop_user.c:149: error: for each function it appears in.)
pop_user.c:149: error: 'db' undeclared (first use in this function)
pop_user.c:153: error: 'datum' undeclared (first use in this function)
pop_user.c:153: error: expected ';' before 'key'
pop_user.c:332: error: 'key' undeclared (first use in this function)
pop_user.c:345: error: 'value' undeclared (first use in this function)
make: *** [pop_user.o] Error 1
DBM が宣言されていない, ということは, gdbm が怪しい.
# apt-get install gdbm
gdbm なるパッケージはないようだ.
debian のパッケージ検索をしてみると, libgdbm-dev なるものがあるようだ.
# apt-get install libgdbm-dev
configure をやり直す.
# make
今度はエラーなく完了.
2007 年度の構築ドキュメントにおける, バージョン 4.0.9 のインストールでは,
「qpopper の Makefile はディレクトリの作成を行ってくれないため, 自前で箱は用意した後に make install する.」
とあるが, 何もせず
# make install
と実行しても普通に /usr/local/qpopper ディレクトリ以下は作られていた
(構築ドキュメントの修正は既に完了).
しかし, 以下のメッセージが現れた.
(略)
Installed popper as /usr/local/qpopper/sbin/popper
/bin/sh: line 1: @/usr/bin/install: No such file or directory
/bin/sh: line 3: @echo: command not found
/bin/sh: line 5: /usr/local/qpopper/sbin/popauth: No such file or directory
/bin/sh: line 6: @echo: command not found
make[1]: *** [install] Error 127
make[1]: Leaving directory `/usr/local/src/qpopper4.0.13/popper'
make: *** [install] Error 2
/usr/local/qpopper/sbin/popper の存在は確認したが,
/usr/local/qpopper/sbin/popauth は見つからない.
popper/Makefile より, 関係がありそうなところを以下に引用する:
(略)
install: popper ${pop_auth}
@if [ ! -d ${installdir} ]; then \
mkdir -m 0755 ${installdir}; \
chown root:wheel ${installdir}; \
fi
@${INSTALL} -s -m 0755 -o root popper ${installdir}/popper
@echo "Installed popper as ${installdir}/popper"
@if [ "x${poppassd}" != "x" ]; then \
cd ${password_dir} && ${MAKE} install ;\
fi
@if [ "x${pop_auth}" != "x" ]; then \
@${INSTALL} -s -m 4755 -o ${apop_uid} -g 0 ${pop_auth} \
${installdir}/${pop_auth}; \
@echo "Installed popauth as ${installdir}/${pop_auth} " \
"with uid ${apop_uid}"; \
${installdir}/${pop_auth} -init -safe; \
@echo "Initialized popauth database"; \
fi
(略)
上に引用したものの後半部において,
'@' がなぜかコマンドの一部と解釈されてしまっているようだ.
# cp popper/Makefile popper/Makefile.org
上に引用したものの後半部において,
'@' を消去してみる.
# make install
前にエラーが出た箇所は以下のように出力された.
Installed popper as /usr/local/qpopper/sbin/popper
if [ "xpopauth" != "x" ]; then \
/usr/bin/install -c -s -m 4755 -o pop -g 0 popauth \
/usr/local/qpopper/sbin/popauth; \
echo "Installed popauth as /usr/local/qpopper/sbin/popauth " \
"with uid pop"; \
/usr/local/qpopper/sbin/popauth -init -safe; \
echo "Initialized popauth database"; \
fi
Installed popauth as /usr/local/qpopper/sbin/popauth with uid pop
Initialized popauth database
make[1]: Leaving directory `/usr/local/src/qpopper4.0.13/popper'
コマンドが陽に表示されたが, うまく実行されたようだ.
/usr/local/qpopper/sbin/popauth の存在も確認.
inetd に登録を行う.
# vi /etc/inetd.conf
以下の行を追加する.
pop3 stream tcp nowait root /usr/lcoal/qpopper/sbin/popper popper -s
inetd を再起動する.
# /etc/init.d/openbsd-inetd restart
== パスの設定
インストールした qpopper の実行ファイル群, マニュアル群へパスを通す.
=== 実行ファイルへのパスの設定
((<[EPA]パスの設定>)) の <一般ユーザ用コマンドのパス> に /usr/local/qpopper/sbin を追加する.
(大抵, sbin はシステム用コマンドがインストールされる場所であるが, 一般ユーザが使用する pop_auth もインストールされているため, 一般ユーザ用コマンドのパスとして登録する).
=== マニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する. 詳しくは
((<[EPA]パスの設定#man 関連のパスの設定>)) を参照のこと.
MANDATORY_MANPATH /usr/local/qpopper/man
MANPATH_MAP /usr/local/qpopper/sbin /usr/local/qpopper/man
MANDB_MAP /usr/local/qpopper/man /usr/local/qpopper/man
== popauth の使い方の例
APOP を使うようにする.
$ popauth
または
# popauth -u (ユーザ名)
登録しているユーザ全員を表示する
# popauth -list ALL
ユーザ testuser を削除する
# popauth -delete testuser
== 動作確認
ユーザ chikuwa1 で qpopper による APOP の動作確認を行う
まず APOP で使用するパスワードを設定する.
$ popauth
Changing only APOP password for mondo1.
New password: (パスワードを入力)
Retype new password: (パスワードを入力)
$ sudo -s
# mail chikuwa1
Subject: test of APOP
test [Enter]
[Ctrl + D]
Cc: [Enter]
ユーザ chikuwa1 になると,
You have new mail in /home/chikuwa1/Mailbox
というメッセージが現れた.
メールがメールスプール /home/chikuwa1/Mailbox にあることを確認.
最後に, APOP 対応のメーラーからメールを受け取れるか確認する.
メーラーからのログインには成功するが, Mailbox のメッセージが
手元に来ない.
設定を確認する必要あり.
((<[Memo2008][EPA]tako作業メモ(納多)(080724)>)) へ続く