May 16, 2004

tcpserverのインストールとqmailの起動。


昨年九月にqmailをインストールした後何もしていなかったので、qmailの環境を設定。

◆checkpasswordのインストール。

認証用にcheckpasswordを入れておく。

# cd /usr/ports/security/checkpassword
# make install


◆tcpserverのインストール。

# su
# cd /usr/ports/sysutils/ucspi-tcp
# make
# make install


◆POP3用アクセスデータベースの作成
※POP、SMTP共にローカルエリア、及び指定されたドメインでないと使えないようにしておきました。

# vi /etc/tcp.pop3

192.168.0.:allow
127.:allow
.example.com:allow
:deny


cdb形式に変換。
# /usr/local/bin/tcprules /etc/tcp.pop3.cdb /etc/tcp.pop3.tmp < /etc/tcp.smtp


◆SMTP用アクセスデータベースの作成。

# vi /etc/tcp.smtp

127.:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
.example.com:allow,RELAYCLIENT=""
:allow



cdb形式に変換。
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp


※rcpthostsについて。

・/var/qmail/control/rcpthostsがない場合、SMTPは全てのドメインへの送信を許可します。
・rcpthostsがある場合は、そこに書かれているドメインへの送信のみ許可されます。
・で、デフォルトのcpthostsには、localhostと自ドメインしか記述されていないので、このままだと送信先(要するにメールのToフィールド)が極端に制限された状態です。
 なお、環境変数RELAYCLIENTがセットされている場合には(値は空でもいい。)、rcpthostsの内容に関わらず全てのドメインにメールが送信できます。
・なので、ここでは、ローカルエリア(192.168.0.)等、指定されたドメインでのアクセスの場合のみ、環境変数RELAYCLIENTをセットして、他ドメインへのメールの送信を許可するデータベースを作っています。


◆inetの設定を外す。

# vi /etc/inetd.conf

#pop3 stream tcp nowait root /usr/local/libexec/popper popper
(snip)
#smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd


inetd再起動
# ps -aux | grep inetd
# kill -HUP (inetd-ID)


◆POP3の起動。

# /usr/local/bin/tcpserver -v -x /etc/tcp.pop3.cdb -R -H 0 pop3 /var/qmail/bin/qmail-popup home.teachat.org /usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1 &


◆SMTPの起動。

起動のためにqmailのUIDとGIDを調べる。

# id qmaild
uid=82(qmaild) gid=81(nofiles) groups=81(nofiles)

# /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -R -H -u 82 -g 81 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 &
[2] 59590


※本当はパイプで下記をつければsploggerでログが取れるはずなんですがなんとなくうまくいかなかったよーな気がする。
| /var/qmail/bin/splogger smtp 3 2>&1 &

# ps -auxw | grep tcp
root 59042 0.0 0.3 924 172 p0 I 7:15PM 0:00.01 /usr/local/bin/tcpserver -v -x /etc/tcp.pop3.cdb -R -H 0 pop3 /var/qmail/bin/qmail-popup home.teachat.org /usr/local/bin
qmaild 59590 0.0 0.8 924 484 p0 I 11:33PM 0:00.01 /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -R -H -u 82 -g 81 0 smtp /var/qmail/bin/qmail-smtpd 2


◆POP3サーバの動作確認。

telnetで直接サーバとお話して確認します。
事前にMaildirディレクトリを作っておく必要があります。

# mkdir ~admin/Maildir/
# mkdir ~admin/Maildir/cur
# mkdir ~admin/Maildir/new
# mkdir ~admin/Maildir/tmp
# chown -R admin ~admin/Maildir/

# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.teachat.org.
Escape character is '^]'.
+OK <59652.1084718640@home.teachat.org>
USER admin
+OK
PASS [パスワードを入力。]
+OK
LIST
+OK
.
QUIT


このようにお話できればOK。
ERR authorization firstが出たら認証失敗です。


◆SMTPサーバの動作確認。

手動でメールを送信してみるテスト。
☆マークの行が手入力。

# telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.teachat.org.
Escape character is '^]'.
220 sakaki.info ESMTP
EHLO 127.0.0.1☆
250-sakaki.info
250-PIPELINING
250 8BITMIME
MAIL FROM <admin@home.teachat.org>☆
250 ok
RCPT TO <myaccount@yahoo.co.jp<☆
250 ok
DATA☆
354 go ahead
Subject: "TEST"☆

test body☆
.☆
250 ok 1084720564 qp 59749
QUIT☆
221 sakaki.info
Connection closed by foreign host.


これで、myaccount@yahoo.co.jpにメールが届いていればOK。


なお、/etc/tcp.smtpの書き方が悪いと、RCPT TOのところで
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
というエラーになります。POP before SMTPなんかでも見られるエラーですね。


参考サイト
http://qmailsolutions.com/qmail/install_qmail.html
http://www.remus.dti.ne.jp/~hori-/java/sendMail-install.htm
http://dyna.geo.kyushu-u.ac.jp/dyna/Linuxmemo/mail.txt
http://www.y-min.or.jp/~nob/qmail/tcpserver.html


不正中継テスト。
http://www.abuse.net/relay.html

この記事へのトラックバックURL

http://app.blog.livedoor.jp/cpiblog00035/tb.cgi/4081589