IT pass HikiWiki - [ITPASS2018]tcpserver のインストールと設定 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
[((<[ITPASS2018]2018年度サーバ構築マニュアル>)) へ戻る]
{{toc}}
= tcpserver のインストールと設定
== inetd からの qmail 起動を停止
テストのために記述していた /etc/inetd.conf の smtpで始まる行をコメントアウトした. そして, inetdを再起動する.
# /etc/init.d/openbsd-inetd restart
smtp ポートを listen しているプログラムがないことを netstat -l で確認する.
# netstat -l | grep smtp
listen しているプログラムがある場合は以下のように表示される.
tcp 0 0 *:smtp *:* LISTEN
== POP
=== ソース・パッチの取得と展開, パッチ当てとmake
ソース, パッチの取得および展開を行った. また, 取得したパッチを当ててビルドする.
参考: ((<URL:http://cyberam.dip.jp/linux_server/mail/qmail_main.html>))
# wget http://sourceforge.net/projects/checkpw/files/checkpw/checkpw-1.03/checkpw-1.03.tar.gz
# tar zxvf checkpw-1.03.tar.gz
# cd checkpw-1.03/
# make
# make setup check
#wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
# tar xfz ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# patch -p1 < ../ucspi-tcp-0.88.errno.patch
# make
# make setup check
を実行し, 最後に再起動する.
# reboot
=== 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 \
tako-itpass.scitec.kobe-u.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
qmail を再起動する.
# /etc/init.d/qmail restart
動作の確認を行う. (pop3 のプロセスがあれば問題なく起動している)
# systemctl daemon-reload
# ps aux | grep qmail
# service qmail status
=== ~/Maildir/ への配送
pop によるメールの読み出しは maildir 形式を用いる.
/etc/profile に次の 2 行を加える.
MAILDIR="$HOME/Maildir/"
export MAILDIR
/etc/csh.cshrc に次の 1 行を加える.
setenv MAILDIR $HOME/Maildir/
次に配送テストのために一般ユーザで次の設定を行う.
maildirmake のスクリプトで Maildir を作成する.
$ maildirmake ~/Maildir
次に ~/Maildir への配送を qmail に指示する. (.qmail へ配送先ディレクトリを記述する).
$ echo ./Maildir/ >> ~/.qmail
$ chmod 600 ~/.qmail
~/Maildir/.password ファイルを作る. APOPPASSWORDの部分は 自分で考えた適切なパスワードに変える.
$ echo 'APOPPASSWORD' > ~/Maildir/.password
$ chmod 600 ~/Maildir/.password
=== 配送テストおよび確認
配送テストを行う. 自分に送ってみる. 以下のコマンドを実行する.
$ echo to: chikuwaXX | /var/qmail/bin/qmail-inject
pop 対応メーラ(例. Thunderbird)を用いて pop サーバを tako に指定して tako 上の自分のアカウントあてにメールが届くことを確認する. メーラの設定は以下の通り.
受信サーバ: POP3
サーバのホスト名: tako-itpass.scitec.kobe-u.ac.jp
受信サーバのポート番号: 110
受信サーバの SSL: 接続の保護なし
認証方式: 暗号化されたパスワード認証
ここで, exim4 に関するパッケージが入っていれば, 以下を入力し, それらをアンインストールする.
# apt-get remove --purge exim4-base exim4-config exim4-daemon-light
== SMTP
=== tcpserver の設定
==============================
(2020/11/09 高橋追記) この部分は実験的です.
上手く行かなければ別の手を考える.
smtp 中継(smtpを使ったメールの送信)を許可するホスト (固定 IP アドレスを持った計算機) を指定する.
ここでは ika を使うことにする.
# vi /etc/tcp.smtp
具体的には以下の通り. (XXX.XXX.XXX.XXX には ika の IP アドレス 133.30.94.22 を書くこと.)
XXX.XXX.XXX.XXX:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
==============================
以下は上記が上手く行かなかったときのために残した行.
(上記が上手く行けば, ここの記述は消してよい.)
smtp 中継(smtpを使ったメールの送信)を許可するホストを指定する(グローバル IP アドレスを調べる).
# vi /etc/tcp.smtp
具体的には以下の通り.
150.84.188.45:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
==============================
次に以下のコマンドを実行した. tcp.smtp を元に /etc/tcp.smtp.cdb ができる.
# /etc/init.d/qmail cdb
=== 起動スクリプト編集
起動スクリプトを編集(コメントアウト)する.
# vi /etc/init.d/qmail
具体的には以下の通り.
start)
...
# For SMTP
sh -c " /sbin/start-stop-daemon --start --quiet --user qmaild \
--pidfile /var/run/tcpserver_smtpd.pid --make-pidfile \
--exec /usr/local/bin/tcpserver -- -HRv -u ` id -u qmaild ` \
-g ` id -g qmaild ` -x /etc/tcp.smtp.cdb 0 smtp \
/usr/local/bin/rblsmtpd -r bl.spamcop.net \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /var/qmail/bin/splogger smtpd 3 > /dev/null 2>&1 &"
...
stop)
/sbin/start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile /var/run/tcpserver_smtpd.pid --exec /usr/local/bin/tcpserver # smtp
=== tcpserver 起動確認
qmail を start して tcpserver の起動を確認する.
# /etc/init.d/qmail start
# systemctl daemon-reload
# service qmail status
==============================
(2020/11/09 高橋追記) この部分は実験的です.
上手く行かなければ別の手を考える.
先ほど /etc/tcp.smtp に IP アドレスを書いた ika から, smtp サーバを tako に設定し, tako 以外の任意のサーバにあるアカウント宛のメールを送信する.
ここでは, コマンドラインで SMTP サーバを指定してメールを送信できる s-nail を用いる.
以下の作業は ika での作業 ("ika$" は ika でのプロンプトのつもり).
ika に s-nail がインストールされていることを確認する.
ika$ which s-nail
/usr/bin/s-nail
もしインストールされていなければインストールする. (インストールされているはずだが.)
ika$ sudo apt install s-nail
s-nail でのメールの送信テスト. XXX@XXX.XXXX.XXXX の宛先アドレスは itpass サーバ (ika) 以外で自分がメールを受け取れるアドレスにすること.
ika$ echo "This is a test mail." | s-nail -s "test mail" XXX@XXX.XXXX.XXXX
この例では SMTP サーバを指定していない. 次が SMTP サーバを指定して送信する場合.
ika$ echo "This is a test mail." | s-nail -S smtp=smtp://133.30.109.21:587
-s "test mail" XXX@XXX.XXXX.XXXX
==============================
以下は上記が上手く行かなかったときのために残した行.
(上記が上手く行けば, ここの記述は消してよい.)
先ほど /etc/tcp.smtp に書いたグローバル IP アドレスを持つパソコン(情報実験機など)から, メーラー (例. Thunderbird) を使って, smtp サーバを tako に設定し, tako 以外の任意のサーバにあるアカウント宛 のメールを発信する.
==============================
tako の /var/log/syslog にメール送信のログが残っていることを確認する.
# cat /var/log/syslog
例えば下のようなログが残るだろう.
2015-12-02 17:46:39.816372500 tcpserver: status: 1/40
2015-12-02 17:46:39.816508500 tcpserver: pid 20808 from 133.87.45.12
2015-12-02 17:46:39.816537500 tcpserver: ok 20808 usuzumi.ep.sci.hokudai.ac.jp:133.50.160.52:25 :133.87.45.12::53705
2015-12-02 17:46:39.816948500 qmail-smtpd: pid 20808 from 133.87.45.12: New session
2015-12-02 17:46:39.861504500 qmail-smtpd: pid 20808 from 133.87.45.12: Received EHLO [127.0.0.1]
2015-12-02 17:46:39.924697500 qmail-smtpd: pid 20808 from 133.87.45.12: Sender
2015-12-02 17:46:39.955948500 qmail-smtpd: pid 20808 from 133.87.45.12: Recipient
2015-12-02 17:46:39.967623500 qmail-smtpd: pid 20808 from 133.87.45.12: Recipient
2015-12-02 17:46:40.052351500 qmail-smtpd: pid 20808 from 133.87.45.12: Message accepted, qp 20809 (2 recipients, 535 bytes)
2015-12-02 17:46:40.054393500 qmail-smtpd: pid 20808 from 133.87.45.12: Remote end QUIT: quitting
2015-12-02 17:46:40.054477500 tcpserver: end 20808 status 0
2015-12-02 17:46:40.054478500 tcpserver: status: 0/40
#
# このコメントアウト部分は, 北大 ep サーバ用の設定.
# 記録として残しておく.
# (2020/11/09 高橋)
#
#=== 接続制御データベースファイル /etc/qmail/tcp.smtp.cdb 自動生成
#
#gate-system から登録 IP アドレス一覧を受け渡してもらい
#/etc/tcp.smtp.cdb を自動生成する. 標準入力から IP アドレスリストを
#読み込み, /etc/tcp.smtp に書き込むスクリプトを書く.
#これを /usr/local/sbin/list-2-tcp とし, root への実行許可を与える.
#
# $ wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2015/dvlop/script/list-2-tcp
# $ sudo -s
# # cp ./list-2-tcp /usr/local/sbin/list-2-tcp
# # chmod 755 /usr/local/sbin/list-2-tcp
#
#上で作成したtcp.smtp をデータベース化する必要がある.
#root への実行許可を忘れずに. gate の ip データベース更新時には,
#gate-system によってこの スクリプトが呼び出される.
#
# # wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2015/dvlop/script/tcp_smtp_cdb
# # cp ./tcp_smtp_cdb /usr/local/sbin/tcp_smtp_cdb
# # chmod 755 /usr/local/sbin/tcp_smtp_cdb
== 参考資料
* ((<[ITPASS2017]tcpserver のインストールと設定>))
* ((<"メールサーバ構築 (qmil, dovecot) (北大 EPnetFaN)"|URL:http://www.ep.sci.hokudai.ac.jp/~epmail/y2017/dvlop/qmail.html>))
* ((<europa's free space|URL:http://europa.cocolog-nifty.com/space/2011/07/qpopperv410mkdi.html>))
* ((<qmailによるSMTPサーバの構築(3/3)|URL:https://www.atmarkit.co.jp/ait/articles/0109/04/news002_3.html>))(3/3)|URL:https://www.atmarkit.co.jp/ait/articles/0109/04/news002_3.html>))
[((<[ITPASS2018]2018年度サーバ構築マニュアル>)) へ戻る]
{{toc}}
= tcpserver のインストールと設定
== inetd からの qmail 起動を停止
テストのために記述していた /etc/inetd.conf の smtpで始まる行をコメントアウトした. そして, inetdを再起動する.
# /etc/init.d/openbsd-inetd restart
smtp ポートを listen しているプログラムがないことを netstat -l で確認する.
# netstat -l | grep smtp
listen しているプログラムがある場合は以下のように表示される.
tcp 0 0 *:smtp *:* LISTEN
== POP
=== ソース・パッチの取得と展開, パッチ当てとmake
ソース, パッチの取得および展開を行った. また, 取得したパッチを当ててビルドする.
参考: ((<URL:http://cyberam.dip.jp/linux_server/mail/qmail_main.html>))
# wget http://sourceforge.net/projects/checkpw/files/checkpw/checkpw-1.03/checkpw-1.03.tar.gz
# tar zxvf checkpw-1.03.tar.gz
# cd checkpw-1.03/
# make
# make setup check
#wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
# tar xfz ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# patch -p1 < ../ucspi-tcp-0.88.errno.patch
# make
# make setup check
を実行し, 最後に再起動する.
# reboot
=== 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 \
tako-itpass.scitec.kobe-u.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
qmail を再起動する.
# /etc/init.d/qmail restart
動作の確認を行う. (pop3 のプロセスがあれば問題なく起動している)
# systemctl daemon-reload
# ps aux | grep qmail
# service qmail status
=== ~/Maildir/ への配送
pop によるメールの読み出しは maildir 形式を用いる.
/etc/profile に次の 2 行を加える.
MAILDIR="$HOME/Maildir/"
export MAILDIR
/etc/csh.cshrc に次の 1 行を加える.
setenv MAILDIR $HOME/Maildir/
次に配送テストのために一般ユーザで次の設定を行う.
maildirmake のスクリプトで Maildir を作成する.
$ maildirmake ~/Maildir
次に ~/Maildir への配送を qmail に指示する. (.qmail へ配送先ディレクトリを記述する).
$ echo ./Maildir/ >> ~/.qmail
$ chmod 600 ~/.qmail
~/Maildir/.password ファイルを作る. APOPPASSWORDの部分は 自分で考えた適切なパスワードに変える.
$ echo 'APOPPASSWORD' > ~/Maildir/.password
$ chmod 600 ~/Maildir/.password
=== 配送テストおよび確認
配送テストを行う. 自分に送ってみる. 以下のコマンドを実行する.
$ echo to: chikuwaXX | /var/qmail/bin/qmail-inject
pop 対応メーラ(例. Thunderbird)を用いて pop サーバを tako に指定して tako 上の自分のアカウントあてにメールが届くことを確認する. メーラの設定は以下の通り.
受信サーバ: POP3
サーバのホスト名: tako-itpass.scitec.kobe-u.ac.jp
受信サーバのポート番号: 110
受信サーバの SSL: 接続の保護なし
認証方式: 暗号化されたパスワード認証
ここで, exim4 に関するパッケージが入っていれば, 以下を入力し, それらをアンインストールする.
# apt-get remove --purge exim4-base exim4-config exim4-daemon-light
== SMTP
=== tcpserver の設定
==============================
(2020/11/09 高橋追記) この部分は実験的です.
上手く行かなければ別の手を考える.
smtp 中継(smtpを使ったメールの送信)を許可するホスト (固定 IP アドレスを持った計算機) を指定する.
ここでは ika を使うことにする.
# vi /etc/tcp.smtp
具体的には以下の通り. (XXX.XXX.XXX.XXX には ika の IP アドレス 133.30.94.22 を書くこと.)
XXX.XXX.XXX.XXX:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
==============================
以下は上記が上手く行かなかったときのために残した行.
(上記が上手く行けば, ここの記述は消してよい.)
smtp 中継(smtpを使ったメールの送信)を許可するホストを指定する(グローバル IP アドレスを調べる).
# vi /etc/tcp.smtp
具体的には以下の通り.
150.84.188.45:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
==============================
次に以下のコマンドを実行した. tcp.smtp を元に /etc/tcp.smtp.cdb ができる.
# /etc/init.d/qmail cdb
=== 起動スクリプト編集
起動スクリプトを編集(コメントアウト)する.
# vi /etc/init.d/qmail
具体的には以下の通り.
start)
...
# For SMTP
sh -c " /sbin/start-stop-daemon --start --quiet --user qmaild \
--pidfile /var/run/tcpserver_smtpd.pid --make-pidfile \
--exec /usr/local/bin/tcpserver -- -HRv -u ` id -u qmaild ` \
-g ` id -g qmaild ` -x /etc/tcp.smtp.cdb 0 smtp \
/usr/local/bin/rblsmtpd -r bl.spamcop.net \
/var/qmail/bin/qmail-smtpd 2>&1 \
| /var/qmail/bin/splogger smtpd 3 > /dev/null 2>&1 &"
...
stop)
/sbin/start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile /var/run/tcpserver_smtpd.pid --exec /usr/local/bin/tcpserver # smtp
=== tcpserver 起動確認
qmail を start して tcpserver の起動を確認する.
# /etc/init.d/qmail start
# systemctl daemon-reload
# service qmail status
==============================
(2020/11/09 高橋追記) この部分は実験的です.
上手く行かなければ別の手を考える.
先ほど /etc/tcp.smtp に IP アドレスを書いた ika から, smtp サーバを tako に設定し, tako 以外の任意のサーバにあるアカウント宛のメールを送信する.
ここでは, コマンドラインで SMTP サーバを指定してメールを送信できる s-nail を用いる.
以下の作業は ika での作業 ("ika$" は ika でのプロンプトのつもり).
ika に s-nail がインストールされていることを確認する.
ika$ which s-nail
/usr/bin/s-nail
もしインストールされていなければインストールする. (インストールされているはずだが.)
ika$ sudo apt install s-nail
s-nail でのメールの送信テスト. XXX@XXX.XXXX.XXXX の宛先アドレスは itpass サーバ (ika) 以外で自分がメールを受け取れるアドレスにすること.
ika$ echo "This is a test mail." | s-nail -s "test mail" XXX@XXX.XXXX.XXXX
この例では SMTP サーバを指定していない. 次が SMTP サーバを指定して送信する場合.
ika$ echo "This is a test mail." | s-nail -S smtp=smtp://133.30.109.21:587
-s "test mail" XXX@XXX.XXXX.XXXX
==============================
以下は上記が上手く行かなかったときのために残した行.
(上記が上手く行けば, ここの記述は消してよい.)
先ほど /etc/tcp.smtp に書いたグローバル IP アドレスを持つパソコン(情報実験機など)から, メーラー (例. Thunderbird) を使って, smtp サーバを tako に設定し, tako 以外の任意のサーバにあるアカウント宛 のメールを発信する.
==============================
tako の /var/log/syslog にメール送信のログが残っていることを確認する.
# cat /var/log/syslog
例えば下のようなログが残るだろう.
2015-12-02 17:46:39.816372500 tcpserver: status: 1/40
2015-12-02 17:46:39.816508500 tcpserver: pid 20808 from 133.87.45.12
2015-12-02 17:46:39.816537500 tcpserver: ok 20808 usuzumi.ep.sci.hokudai.ac.jp:133.50.160.52:25 :133.87.45.12::53705
2015-12-02 17:46:39.816948500 qmail-smtpd: pid 20808 from 133.87.45.12: New session
2015-12-02 17:46:39.861504500 qmail-smtpd: pid 20808 from 133.87.45.12: Received EHLO [127.0.0.1]
2015-12-02 17:46:39.924697500 qmail-smtpd: pid 20808 from 133.87.45.12: Sender
2015-12-02 17:46:39.955948500 qmail-smtpd: pid 20808 from 133.87.45.12: Recipient
2015-12-02 17:46:39.967623500 qmail-smtpd: pid 20808 from 133.87.45.12: Recipient
2015-12-02 17:46:40.052351500 qmail-smtpd: pid 20808 from 133.87.45.12: Message accepted, qp 20809 (2 recipients, 535 bytes)
2015-12-02 17:46:40.054393500 qmail-smtpd: pid 20808 from 133.87.45.12: Remote end QUIT: quitting
2015-12-02 17:46:40.054477500 tcpserver: end 20808 status 0
2015-12-02 17:46:40.054478500 tcpserver: status: 0/40
#
# このコメントアウト部分は, 北大 ep サーバ用の設定.
# 記録として残しておく.
# (2020/11/09 高橋)
#
#=== 接続制御データベースファイル /etc/qmail/tcp.smtp.cdb 自動生成
#
#gate-system から登録 IP アドレス一覧を受け渡してもらい
#/etc/tcp.smtp.cdb を自動生成する. 標準入力から IP アドレスリストを
#読み込み, /etc/tcp.smtp に書き込むスクリプトを書く.
#これを /usr/local/sbin/list-2-tcp とし, root への実行許可を与える.
#
# $ wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2015/dvlop/script/list-2-tcp
# $ sudo -s
# # cp ./list-2-tcp /usr/local/sbin/list-2-tcp
# # chmod 755 /usr/local/sbin/list-2-tcp
#
#上で作成したtcp.smtp をデータベース化する必要がある.
#root への実行許可を忘れずに. gate の ip データベース更新時には,
#gate-system によってこの スクリプトが呼び出される.
#
# # wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2015/dvlop/script/tcp_smtp_cdb
# # cp ./tcp_smtp_cdb /usr/local/sbin/tcp_smtp_cdb
# # chmod 755 /usr/local/sbin/tcp_smtp_cdb
== 参考資料
* ((<[ITPASS2017]tcpserver のインストールと設定>))
* ((<"メールサーバ構築 (qmil, dovecot) (北大 EPnetFaN)"|URL:http://www.ep.sci.hokudai.ac.jp/~epmail/y2017/dvlop/qmail.html>))
* ((<europa's free space|URL:http://europa.cocolog-nifty.com/space/2011/07/qpopperv410mkdi.html>))
* ((<qmailによるSMTPサーバの構築
[((<[ITPASS2018]2018年度サーバ構築マニュアル>)) へ戻る]