IT pass HikiWiki - [Memo2008][EPA]tako作業メモ(納多)(080429) Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
((<[Memo2008][EPA]tako作業メモ(納多)(080424)>)) から続く.
== tcpserverのインストールと設定
((<[EPA]tcpserverのインストールと設定>)) の続きを行う.
=== ホスト制限設定
smtp 中継を許可するホストを指定する. ((<URL:http://www.inpetas.jp/linux/pbs4q.html>)) や ika の設定などを参考にホストリストファイル tcp.smtp を作成し, そのファイルを元に CDB データベースファイルを作成する.
今回は /usr/local/ucspi-tcp 以下に etc ディレクトリを作成し, その中にこれらのファイルを作成する.
# mkdir /usr/local/ucspi-tcp/etc
# cd /usr/local/ucspi-tcp/etc
tcp.smtp を書く. 例えば, 133.30.109.XX という IP アドレスのホストからの smtp 中継を許可するためには, 以下の 1 行目のように書く. 2 行目の 127. はローカルホストを指す. これは常に書くこと.
133.30.109.XX:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
1 行目の 133.30.109.XX は後で設定確認するための作業用である.
作業者がアカウントを持つ他のマシンの IP アドレスを記入する.
次に以下のコマンドを実行する. tcp.smtp を元に tcp.smtp.cdb ができる.
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
これは, tcp.smtp を入力として tcpserver が高速アクセスできるバイナリ形式の CDB データベースを一旦 tcp.smtp.tmp に作成し, tcp.smtp.cdb と置き換える操作である.
tcprules の詳細については ((<URL:http://www.emaillab.org/djb/tools/ucspi-tcp/tcprules.html>))
などを参考のこと.
tcpserver 起動スクリプト /etc/init.d/tcpserver の起動行は以下のように 編集しなおす (web 上には複数行で表示されるかもしれないが, 1 行のコマンドとして書くこと).
/usr/local/bin/tcpserver -v -x /usr/local/ucspi-tcp/etc/tcp.smtp.cdb -u xxxx -g yyyy 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
xxxx は qmaild の UID. yyyy は nofiles の GID である.
前のスクリプトとの違いは,
* 最初の変数設定に以下を追加
TCP_SMTP_CDB=/usr/local/ucspi-tcp/etc/tcp.smtp.cdb
PLOGGER=/var/qmail/bin/splogger
* サブルーチン test_config() 内に以下を追加
if [ ! -e $TCP_SMTP_CDB ]; then
echo "$TCP_SMTP_CDB is not found, exiting"
exit 0
fi
if [ ! -e $SPLOGGER ]; then
echo "$SPLOGGER is not found, exiting"
exit 0
fi
* 引数に start を指定したときの処理の中の
$ENV $SSD --start --pidfile $PIDFILE --make-pidfile \
--exec $DAEMON \
-- -u $DAEMONUID -g $DAEMONGID 0 smtp $QMAILSMTPD &
を
$ENV $SSD --start --pidfile $PIDFILE --make-pidfile \
--exec $DAEMON \
-- -u $DAEMONUID -g $DAEMONGID \
-v -x $TCP_SMTP_CDB \
0 smtp $QMAILSMTPD \
2>&1 | \
/var/qmail/bin/splogger smtpd 3 \
&
に変更.
以上の 3 点である.
修正された起動スクリプトは
((<tcpserver 起動スクリプト修正版|URL:https://epa.scitec.kobe-u.ac.jp/~itpass/epa/tcpserver/tcpserver2>))
においてある.
追加された部分を説明すると -x /usr/local/ucspi-tcp/etc/tcp.smtp.cdb はデータベースファイル /usr/local/ucspi-tcp/etc/tcp.smtp.cdb を参照させるための設定である. また, 接続の記録を取るために -v オプションと splogger への受け渡しが記述されている.
=== ホスト制限確認
tcpserver プロセスを再起動する.
# /etc/init.d/tcpserver restart
先ほど /usr/local/ucspi-tcp/etc/tcp.smtp に書いた IP アドレス (ここでは, 133.30.109.XX) を持つパソコンから telnet で smtp ポートにアクセスし, メールサーバ以外のホストへのメール送信を試みる. (下記のコマンドについては ((<URL:http://www5e.biglobe.ne.jp/~aji/3min/79.html>)) 参照). プロンプト入力時には, 左端に '>' を記してある. 実際には表示されない.
また, アドレスは _at_ と記述されているところは @ に読みかえること (スパム対策のためにこう記述した).
$ telnet tako.epa.scitec.kobe-u.ac.jp 25
Trying 133.30.109.21...
Connected to tako.epa.scitec.kobe-u.ac.jp.
Escape character is '^]'.
220 tako.epa.scitec.kobe-u.ac.jp ESMTP
> helo dude # dude はなくてもよい
250 tako.epa.scitec.kobe-u.ac.jp
> mail <hogehoge_at_epa.scitec.kobe-u.ac.jp>
250 ok
> rcpt <hogehoge_at_gmail.com> # 実在のアドレスを記入
250 ok
> data
354 go ahead
> Subject: testing2
>
> This is a test mail.
> .
250 ok 1209471328 qp 26829
> quit
221 tako.epa.scitec.kobe-u.ac.jp
Connection closed by foreign host.
このメールが届くことを確認すること.
ちなみに Gmail で受信したところ (送信者不明) と書かれているのでぎょっとした.
受信サーバやメーラーの設定によっては
スパムフィルタに引っかかる可能性もあるだろう.
次に, /usr/local/ucspi-tcp/etc/tcp.smtp に記述されていない他のホストから同様の作業を行う. この際には rcpt <hogehoge_at_gmail.com> を入力した段階で
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
というエラーメッセージが返り, メールの送信を拒絶されるはずである. そうならない場合, ホスト制限がうまく動作していないことになるため,
((<ホスト制限設定|[EPA]tcpserverのインストールと設定#ホスト制限設定>))
から作業をやり直し, ホスト制限が行われていることを確認すること.
=== ホスト制御データベース更新スクリプト作成
tcprules などのコマンドを覚えておくのは面倒なので, /usr/local/ucspi-tcp/etc/ 以下に更新スクリプトを作成する.
パーミッションの設定を忘れずに.
/usr/local/ucspi-tcp/etc/tcp.smtp を書き換えた後は
# /usr/local/ucspi-tcp/etc/tcp_smtp_update.sh update
でデータベースファイルが更新され, tcpserver プロセスが再起動する.
先程, 作業用に使用していた設定 (tcp.smtp の 1 行目)
はもう不要なので削除する.
構成員がこのサーバを SMTP サーバーとして使用する場合は,
接続を許可する IP のリストを書き加えること.
動作確認も兼ねて上のスクリプトを実行する.
# /usr/local/ucspi-tcp/etc/tcp_smtp_update.sh update
Updating /usr/local/ucspi-tcp/etc/tcp.smtp.cdb using /usr/local/ucspi-tcp/etc/tcp.smtp
/usr/local/ucspi-tcp/bin/tcprules /usr/local/ucspi-tcp/etc/tcp.smtp.cdb /usr/local/ucspi-tcp/etc/tcp.smtp.tmp
/etc/init.d/tcpserver restart
Restarting tcpserver
Stopping smtp server: tcpserver
Starting smtp server: tcpserver
Update is successful.
先程までメールを送れたマシン (IP: 133.30.109.XX) からメールが送れなくなっていることを確認.
== tcpserverのインストールと設定
((<[EPA]tcpserverのインストールと設定>)) の続きを行う.
=== ホスト制限設定
smtp 中継を許可するホストを指定する. ((<URL:http://www.inpetas.jp/linux/pbs4q.html>)) や ika の設定などを参考にホストリストファイル tcp.smtp を作成し, そのファイルを元に CDB データベースファイルを作成する.
今回は /usr/local/ucspi-tcp 以下に etc ディレクトリを作成し, その中にこれらのファイルを作成する.
# mkdir /usr/local/ucspi-tcp/etc
# cd /usr/local/ucspi-tcp/etc
tcp.smtp を書く. 例えば, 133.30.109.XX という IP アドレスのホストからの smtp 中継を許可するためには, 以下の 1 行目のように書く. 2 行目の 127. はローカルホストを指す. これは常に書くこと.
133.30.109.XX:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
1 行目の 133.30.109.XX は後で設定確認するための作業用である.
作業者がアカウントを持つ他のマシンの IP アドレスを記入する.
次に以下のコマンドを実行する. tcp.smtp を元に tcp.smtp.cdb ができる.
# tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
これは, tcp.smtp を入力として tcpserver が高速アクセスできるバイナリ形式の CDB データベースを一旦 tcp.smtp.tmp に作成し, tcp.smtp.cdb と置き換える操作である.
tcprules の詳細については ((<URL:http://www.emaillab.org/djb/tools/ucspi-tcp/tcprules.html>))
などを参考のこと.
tcpserver 起動スクリプト /etc/init.d/tcpserver の起動行は以下のように 編集しなおす (web 上には複数行で表示されるかもしれないが, 1 行のコマンドとして書くこと).
/usr/local/bin/tcpserver -v -x /usr/local/ucspi-tcp/etc/tcp.smtp.cdb -u xxxx -g yyyy 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
xxxx は qmaild の UID. yyyy は nofiles の GID である.
前のスクリプトとの違いは,
* 最初の変数設定に以下を追加
TCP_SMTP_CDB=/usr/local/ucspi-tcp/etc/tcp.smtp.cdb
PLOGGER=/var/qmail/bin/splogger
* サブルーチン test_config() 内に以下を追加
if [ ! -e $TCP_SMTP_CDB ]; then
echo "$TCP_SMTP_CDB is not found, exiting"
exit 0
fi
if [ ! -e $SPLOGGER ]; then
echo "$SPLOGGER is not found, exiting"
exit 0
fi
* 引数に start を指定したときの処理の中の
$ENV $SSD --start --pidfile $PIDFILE --make-pidfile \
--exec $DAEMON \
-- -u $DAEMONUID -g $DAEMONGID 0 smtp $QMAILSMTPD &
を
$ENV $SSD --start --pidfile $PIDFILE --make-pidfile \
--exec $DAEMON \
-- -u $DAEMONUID -g $DAEMONGID \
-v -x $TCP_SMTP_CDB \
0 smtp $QMAILSMTPD \
2>&1 | \
/var/qmail/bin/splogger smtpd 3 \
&
に変更.
以上の 3 点である.
修正された起動スクリプトは
((<tcpserver 起動スクリプト修正版|URL:https://epa.scitec.kobe-u.ac.jp/~itpass/epa/tcpserver/tcpserver2>))
においてある.
追加された部分を説明すると -x /usr/local/ucspi-tcp/etc/tcp.smtp.cdb はデータベースファイル /usr/local/ucspi-tcp/etc/tcp.smtp.cdb を参照させるための設定である. また, 接続の記録を取るために -v オプションと splogger への受け渡しが記述されている.
=== ホスト制限確認
tcpserver プロセスを再起動する.
# /etc/init.d/tcpserver restart
先ほど /usr/local/ucspi-tcp/etc/tcp.smtp に書いた IP アドレス (ここでは, 133.30.109.XX) を持つパソコンから telnet で smtp ポートにアクセスし, メールサーバ以外のホストへのメール送信を試みる. (下記のコマンドについては ((<URL:http://www5e.biglobe.ne.jp/~aji/3min/79.html>)) 参照). プロンプト入力時には, 左端に '>' を記してある. 実際には表示されない.
また, アドレスは _at_ と記述されているところは @ に読みかえること (スパム対策のためにこう記述した).
$ telnet tako.epa.scitec.kobe-u.ac.jp 25
Trying 133.30.109.21...
Connected to tako.epa.scitec.kobe-u.ac.jp.
Escape character is '^]'.
220 tako.epa.scitec.kobe-u.ac.jp ESMTP
> helo dude # dude はなくてもよい
250 tako.epa.scitec.kobe-u.ac.jp
> mail <hogehoge_at_epa.scitec.kobe-u.ac.jp>
250 ok
> rcpt <hogehoge_at_gmail.com> # 実在のアドレスを記入
250 ok
> data
354 go ahead
> Subject: testing2
>
> This is a test mail.
> .
250 ok 1209471328 qp 26829
> quit
221 tako.epa.scitec.kobe-u.ac.jp
Connection closed by foreign host.
このメールが届くことを確認すること.
ちなみに Gmail で受信したところ (送信者不明) と書かれているのでぎょっとした.
受信サーバやメーラーの設定によっては
スパムフィルタに引っかかる可能性もあるだろう.
次に, /usr/local/ucspi-tcp/etc/tcp.smtp に記述されていない他のホストから同様の作業を行う. この際には rcpt <hogehoge_at_gmail.com> を入力した段階で
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
というエラーメッセージが返り, メールの送信を拒絶されるはずである. そうならない場合, ホスト制限がうまく動作していないことになるため,
((<ホスト制限設定|[EPA]tcpserverのインストールと設定#ホスト制限設定>))
から作業をやり直し, ホスト制限が行われていることを確認すること.
=== ホスト制御データベース更新スクリプト作成
tcprules などのコマンドを覚えておくのは面倒なので, /usr/local/ucspi-tcp/etc/ 以下に更新スクリプトを作成する.
パーミッションの設定を忘れずに.
/usr/local/ucspi-tcp/etc/tcp.smtp を書き換えた後は
# /usr/local/ucspi-tcp/etc/tcp_smtp_update.sh update
でデータベースファイルが更新され, tcpserver プロセスが再起動する.
先程, 作業用に使用していた設定 (tcp.smtp の 1 行目)
はもう不要なので削除する.
構成員がこのサーバを SMTP サーバーとして使用する場合は,
接続を許可する IP のリストを書き加えること.
動作確認も兼ねて上のスクリプトを実行する.
# /usr/local/ucspi-tcp/etc/tcp_smtp_update.sh update
Updating /usr/local/ucspi-tcp/etc/tcp.smtp.cdb using /usr/local/ucspi-tcp/etc/tcp.smtp
/usr/local/ucspi-tcp/bin/tcprules /usr/local/ucspi-tcp/etc/tcp.smtp.cdb /usr/local/ucspi-tcp/etc/tcp.smtp.tmp
/etc/init.d/tcpserver restart
Restarting tcpserver
Stopping smtp server: tcpserver
Starting smtp server: tcpserver
Update is successful.
先程までメールを送れたマシン (IP: 133.30.109.XX) からメールが送れなくなっていることを確認.