IT pass HikiWiki - [Memo2009][ITPASS] tako 構築作業ログ(MAIL4)(清水, 黒田) Diff

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

{{toc_here}}

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

= 10/14 の作業ログ

== tcpserver のインストールと設定

=== tcpserver を停止
kill コマンドを使って tcpserver を停止し, 動作確認は ps コマンドを使って確認する. 今動いている tcpserver のプロセス番号と tcpserver.pid に書かれているプロセス番号が違っているかもしれないので, 一度 tcpserver.pid を削除する.  

  # ps aux | grep tcpserver
  qmaild   16273  0.0  0.0   5912   652 ?       S    Oct10   0:00 tcpserver -u 113 -g 200 0 smtp /var/qmail/bin/qmail-smtpd
  # kill 16273
  # ps aux | grep tcpserver
  chikuwa1 30312  0.0  0.0  10704   908 pts/0   S+   13:26   0:00 lv tcpserver.pid
  chikuwa9 30246  0.0  0.0  10008   848 pts/2   R+   13:27   0:00 grep tcpserver
  # rm /var/run/tcpserver.pid

/etc/init.d/tcpserver 作成した際に case 文の start) の部分を, 間違えて

  
  case "$1" in
  start)
    test_config
    echo "Starting smtp server: $NAME"
    $ENV $SSD --start --pidfile $PIDFILE --make-pidfile \
        --exec $DAEMON \
        -v -x $TCP_SMTP_CDB \
        -- -u $DAEMONUID -g $DAEMONGID \
        0 smtp $QMAILSMTPD \
        2>&1 | \
        /var/qmail/bin/splogger smtpd 3 \
        &
    ;;

としてしまったため,

  case "$1" in
  start)
    test_config
    echo "Starting smtp server: $NAME"
    $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 \
        &
    ;;

と訂正した.

tcpserver を起動する.

  # /etc/init.d/tcpserver start
  Starting smtp server: tcpserver...

133.30.110.XX という IP アドレスのホストからの smtp 中継を許可するために tcp.smtp の 1 行目の以下のように書き変える. 2 行目の 127. はローカルホストを指す. これは常に書くこと. 1 行目の 133.30.110.XX は後で設定確認するための作業用である. 作業者がアカウントを持つ他のマシンの IP アドレスを記入する. ここでは 133.30.110.202 とした.

  133.30.110.XX:allow,RELAYCLIENT=""
  127.:allow,RELAYCLIENT=""

* 次に以下のコマンドを実行する. tcp.smtp を元に tcp.smtp.cdb ができる.

  # tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

=== ホスト制限確認

tcpserver プロセスを再起動する.

  # /etc/init.d/tcpserver restart
  Stopping smtp server: tcpserver...
  Starting smtp server: tcpserver...

先ほど /usr/local/ucspi-tcp/etc/tcp.smtp に書いた IP アドレス(ここでは, 133.30.110.202) を持つ計算機 (joho02) から telnet でアクセスし, メールサーバ以外のホストへのメール送信を試みる. (下記のコマンドについては ((<URL:http://man.qmail.jp/jinstall/test.receive.html>)) 参照). プロンプト入力時には, 左端に '>' を記してある. 実際には表示されない.

  % telnet tako-itpass.scitec.kobe-u.ac.jp 25
  Trying 133.30.109.21...
  Connected to tako-itapss.scitec.kobe-u.ac.jp.
  Escape character is '^]'.
  220 tako-itpass.scitec.kobe-u.ac.jp ESMTP
  > helo dude
  250 domain
  > mail <hoge1_at_stu.kobe-u.ac.jp>
  250 ok
  > rcpt <hoge2_at_stu.kobe-u.ac.jp>   # <- 実在のアドレスへ
  (アドレスを, <>で囲むのを忘れずに)
  250 ok
  > data
  354 go ahead
  > Subject: testing
  >
  > This is a test.
  > .
  250 ok 812345679 qp 12345
  > quit
  221 domain
  Connection closed by foreign host.
  %

このメールが届くことを確認した. 次に, /usr/local/ucspi-tcp/etc/tcp.smtp から 133.30.110.XX:allow,RELAYCLIENT="" を削除して tcprules コマンドを実行し, tcpserver を restart 下の地に同様の作業を行う. この際には rcpt <hogehoge_at_stu.kobe-u.ac.jp> を入力した段階で

  553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

というエラーメッセージが返り, メールの送信を拒絶することを確認した.


=== ホスト制御データベース更新スクリプト

tcprules などのコマンドを覚えておくのは面倒なので,
/usr/local/ucspi-tcp/etc/ 以下に更新スクリプト を置いてある.
tcprules を覚えているというのであれば, 以下は必要ない.

/usr/local/ucspi-tcp/etc/tcp.smtp を更新後は

  $ /usr/local/ucspi-tcp/etc/tcp_smtp_update.sh update

でデータベースファイルが更新され, tcpserver プロセスが再起動する.

上のスクリプトを実行する.

  # /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.

更新したデータベースの内容に応じて正しくメールが送れていることを確認できたら OK.


== qpopperのインストールと設定

APOP サービスを提供するため, qpopper をインストールする.

=== 4 回生による新 ika 構築にむけての覚書

これまでのところ, EPA サーバを POP サーバとして利用している人は皆無らしいため, 使いたいという人がでるまで, POP は休止しておく (実際には, 単に新 ika からはインストールしない) のが良いかもしれない.


=== ソースコードのダウンロード
ここでは, 現在は最新の qpopper4.0.18.tar.gz をダウンロードする.
  # cd /usr/local/src
  # wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.18.tar.gz
  # tar zxvf qpopper4.0.18.tar.gz
  # cd qpopper4.0.18

=== qpopper を起動するユーザの作成

qpopper を動作させるためのユーザとして, pop を作成する.

  # adduser --system --ingroup mail --no-create-home --shell /bin/false --disabled-password --home /nonexistent pop

passwd ファイルに pop ユーザに関する情報を書き込む. 下記の例では UID は 119, GID は 8 となっているが, その部分はインストール時の状況による.

  # vipw

  pop:x:119:8:Post Office Owner:/nonexistent:/bin/false

ここで,
  you may need to modify /etc/shadow for consistency.
というメッセージが出てくるので, vipw -s コマンドで, pop の行が追加されていることを確認する.

=== ビルド
  # ./qpopper4.0.18.tar.gz/configure --prefix=/usr/local/qpopper \
    --enable-apop=/usr/local/qpopper/pop.auth \
    --enable-popuid=pop \
    --enable-shy \
    --enable-nonauth-file=/usr/local/qpopper/popusers \
    --without-pam --with-gdbm \
    --enable-home-dir-mail=Mailbox

APOP のみにしたいため, /usr/local/src/qpopper4.0.18/popper/Makefile を編集し, OS_DEFS の行を以下のように変更する.

  OS_DEFS         =    -DLINUX -DUNIX -DAPOP_ONLY

ビルドします.

  # cd /usr/local/src/qpopper4.0.18/popper/
  # make

=== インストール

  # make install

=== inetd に登録

  # vi /etc/inetd.conf

以下の行を追加する.

  pop3    stream  tcp     nowait  root    /usr/local/qpopper/sbin/popper  popper -s

=== 起動

次のコマンドによってinetdを再起動する.

  # /etc/init.d/openbsd-inetd restart

=== インストールした実行ファイルへのパスの設定

インストールした qpopper の実行ファイル群へパスを通す. ((<[Memo2009][ITPASS] tako 構築作業ログ(WWW 1)(山元, 辻野)#パスの設定>)) の((* <一般ユーザ用コマンドのパス> *)) に ((*/usr/local/qpopper/sbin*)) を追加する. (大抵, sbin はシステム用コマンドがインストールされる場所であるが, 一般ユーザが使用する pop_auth もインストールされているため, 一般ユーザ用コマンドのパスとして登録する).


=== インストールしたマニュアルへのパスの設定

/etc/manpath.config に以下の行を追加する. 詳しくは ((<[Memo2009][ITPASS] tako 構築作業ログ(WWW 1)(山元, 辻野)#パスの設定>))

を参照のこと.

  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

=== 動作チェック

まず APOP で使用するパスワードを設定する. ここではユーザを chikuwa1 とする. ここで入力するパスワードはログインパスワードと異なっていてもよい.

  > popauth
  Changing only APOP password for chikuwa9.
  New password: (パスワードを入力)
  Retype new password: (パスワードを入力)

次にメールを chikuwa1 宛に送る.

  > sudo -s
  # mail chikuwa9
  Subject: test
  aaaaa (CTRL+D)
  Cc:

メールがメールスプールにあるかどうかをチェック.

  # ls -l /home/chikuwa9/Mailbox
  -rw------- 1 chikuwa1 chikuwa9 440 Oct 14 20:08 Mailbox


届いている.
これを別の適当なホストで ITPASS サーバからメールを APOP で受け取れるように設定中.

=== 参考文献

* ((<Qpopper|URL:http://www.emaillab.org/djb/qmail-pop/qpopper.html>))

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