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

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

== 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 を再起動. restart だとうまくいかないので start にすることに留意.

  # /etc/init.d/qmail start

動作の確認を行う. (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 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.109.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

インストールされていなかったのでインストールした.

  ika$ sudo apt install s-nail

再度 s-nail がインストールされていることを確認した.

  ika$ which s-nail
  /usr/bin/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 サーバを指定して送信する場合.

配送テストにおいて smtp を指定してもメールが送信できなかった.ika$ echo "This is a test mail." | s-nail -S smtp=smtp://133.30.109.21:25 -s "test mail" XXX@XXX.XXXX.XXXX

配送テストにおいて SMTP サーバを指定してもメールが送信できなかった.

$ ps aux | grep qmail

で確認すると smtp に関するプログラムが動作していなかった. また,

$ service qmail status

で確認すると inactive(dead) となり qmail が動作していないことが確認された.

原因は究明中.
* 原因は不明なままだが, qmail のインストールと設定からやり直すことで解決した.


#==============================
#
#以下は上記が上手く行かなかったときのために残した行.
#(上記が上手く行けば, ここの記述は消してよい.)
#
#先ほど /etc/tcp.smtp に書いたグローバル IP アドレスを持つパソコン(情報実験機#など)から, メーラー (例. Thunderbird) を使って, smtp サーバを tako に設定し, #tako 以外の任意のサーバにあるアカウント宛 のメールを発信する.
#
#==============================


tako の /var/log/syslog にメール送信のログが残っていることを確認する.

  # cat /var/log/syslog

下のようなログが残る.


2024-11-08T17:47:41.372537+09:00 tako-itpass smtpd: 1731055661.371996 tcpserver: status: 1/40
2024-11-08T17:47:41.372920+09:00 tako-itpass smtpd: 1731055661.372381 tcpserver: pid 1652 from 133.30.109.22
2024-11-08T17:47:41.373463+09:00 tako-itpass smtpd: 1731055661.373319 tcpserver: ok 1652 tako-itpass.scitec.kobe-u.ac.jp:133.30.109.21:25 :133.30.109.22::36182
2024-11-08T17:47:41.492559+09:00 tako-itpass smtpd: 1731055661.492397 tcpserver: end 1652 status 0
2024-11-08T17:47:41.492675+09:00 tako-itpass smtpd: 1731055661.492434 tcpserver: status: 0/40