IT pass HikiWiki - [Memo2017][ITPASS]tcpserver のインストールと設定 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]

{{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 chekpw-1.03/
  # make
  # make setup check

  # wget http://tools.qmail.jp/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

#インストール先を /usr/local/ucspi-tcp に変更する.
#すなわち, conf-home の一行目を /usr/local/ucspi-tcp に書き換える.
#2017 ではこの過程を飛ばしてしまった.

  # make
  # make setup check

を実行し, 最後に再起動した.
  
  # reboot

#インストールした qmail の実行ファイル群へパスを通す.

#ここで ((<[ITPASS2016]パスの設定>)) の((* <一般ユーザ用コマンドのパス> *)) ##に ((*/usr/local/ucspi-tcp/bin*)) を追加する.
#(システム用コマンドも一般ユーザ用コマンドと同じ場所にインストールされてい
##るため, システム用コマンド用の設定を別途行う必要は無い).

=== 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: chikuwa | /var/qmail/bin/qmail-inject

pop 対応メーラ(例. Thunderbird)を用いて pop サーバを tako に指定して tako 上の自分のアカウントあてにメールがと届くことを確認した. メーラの設定は以下の通り.

受信サーバ: POP3
サーバのホスト名: usuzumi.ep.sci.hokudai.ac.jp
受信サーバのポート番号: 110
受信サーバのSSL: 接続の保護なし
認証方式: 暗号化されたパスワード認証

== STMP

=== tcpserver の設定

smtp 中継(smtpを使ったメールの送信)を許可するホストを指定した.

  # vi /etc/tcp.smtp

具体的には以下の通り.

133.30.109.78: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

=== exim4 のアンインストール

exim4 関連のパッケージを確認した.

  # dpkg -l | grep exim

exim 関連パッケージを設定ファイルからアンインストールした.

  # apt-get remove --purge exim4 exim4-base exim4-config exim4-daemon-light

=== tcpserver 起動確認

qmail を start して tcpserver の起動を確認した.

  # /etc/init.d/qmail start
  # systemctl daemon-reload
  # service qmail status

先ほど /etc/tcp.smtp に書いた グローバルIP アドレスを持つパソコンから, メーラー (例. Thunderbird) を使って, smtp サーバを tako に設定し, tako 以外の任意のサーバにあるアカウント宛 のメールを発信してみた.
/var/log/syslog にメール送信のログが残っていることを確認した.

  # cat /var/log/syslog

=== 接続制御データベースファイル /etc/qmail/tcp.smtp.cdb 自動生成

#gate-system から登録 IP アドレス一覧を受け渡してもらい / etc/tcp.smtp.cdb を
#自動生成する.
標準入力から IP アドレスリストを読み込み, /etc/tcp.smtp に書き込むスクリプトを書いた.
#これを /usr/local/sbin/list-2-tcp (2015/12/02 更新)とする. 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


== 参考資料

* ((<[ITPASS2015] tcpserver のインストールと設定>))
* ((<europa's free space|URL:http://europa.cocolog-nifty.com/space/2011/07/qpopperv410mkdi.html>))

[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]