Server: 2006年8月アーカイブ

 今回はPOP before SMTPではなくSMTP AUTHで運用してみたいのでこちらにします。

 POP before SMTPの方が古くどんなメーラーでも利用できるメリットがありますが、グローバルIPアドレス単位のため正確性に問題あるしメーラーによっては送信前に受信を自動で行ってくれるメーラーが意外と少なく時折送信エラーが起きてムカツクことがあります。

 それに比べSMTP認証は対応していないメーラーがあると言われていますが流石に最近のメーラー(少なくとも私が利用しているメーラーは全て)SMTP認証に対応しているのでこちらに決定。

まずは、パッケージを入手します。

# wget http://www.emaillab.org/djb/qmail-vida/software/qmail-vida-0.51.tar.gz

解凍
# tar zxf qmail-vida-0.51.tar.gz

実はこのパッケージ、qmailにパッチを当てて利用するのでqmail自身を再インストールしないといけません。

# cd qmail-vida-0.51

Makefileの中身を確認
# ee Makefile

QMAILSRC = ../qmail-1.03
CHECKPASSWORDSRC= ../checkpassword-0.90
UCSPITCPSRC = ../ucspi-tcp-0.88
PREFIX = /var/qmail

今回、全て/usr/local/src以下なので問題なし。

さらにvida使用のため追加ユーザーを作成します。
# pw groupadd vida -g 83
# pw useradd authdb -g vida -d /var/qmail/authdb -u 90
# pw useradd qmailu -g vida -d /var/qmail/users -u 91

popユーザはすでにシステムにあり既に使われているようだったので別の名称に変更
# ee ./src/vida/conf-realdomainowner
1行目のpopをpopqに変更して以下のようにユーザ作成

# pw useradd popq -g vida -u 92

/etc/passwd認証に対応させます
# cd src/checkpassword/
# echo 1 > conf-withpasswd

パッチを当てます。(今回は既にlocaltimeパッチが当たっているソースを使います)
# cd /usr/local/src/qmail-vida-0.51
# make patch
# make copy

インストール前にqmailを停止
# /usr/local/etc/rc.d/qmail.sh stop

さらにtcpserverのプロセスも停止

qmailを再インストール
# cd ../qmail-1.03
# make
# make setup check

checkpasswdを再インストール
# cd ../checkpassword-0.90
# make
# make setup check

qmail-vidaをインストール
# cd ../qmail-vida-0.51/src/vida
# make
# make setup check

POP3側の修正
# ee /usr/local/etc/rc.d/pop3.sh

#!/bin/sh

PATH=/var/qmail/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
export PATH

DOMAINOWNER=popq
export DOMAINOWNER

ALLOWPLAIN=""
export ALLOWPLAIN

/usr/local/bin/tcpserver -v -x \
/etc/tcp.pop3.cdb -R -H 0 pop3 \
/var/qmail/bin/qmail-popup test.net \
/var/qmail/bin/checkpassword \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 &

# chmod 755 /usr/local/etc/rc.d/pop3.sh

SMTP側の修正
# ee /usr/local/etc/rc.d/smtp.sh

#!/bin/sh

PATH=/var/qmail/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
export PATH

DOMAINOWNER=popq
export DOMAINOWNER

ALLOWPLAIN=""
export ALLOWPLAIN

/usr/local/bin/tcpserver -v -x \
/etc/tcp.smtp.cdb -R -H -u -lo 0 smtp \
recordio fixcrio \
/var/qmail/bin/qmail-smtpup test.net \
/var/qmail/bin/checkpassword \
/var/qmail/bin/qmail-smtpd 2>&1 &

# chmod 755 /usr/local/etc/rc.d/smtp.sh

Maildirを作成します。
# su popq
$ /var/qmail/bin/vida-maildirmake user Maildir

tcpserverをインストールします。

入手場所
http://cr.yp.to/ucspi-tcp.html

# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz

# tar zxf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# make
# make setup check

インストールされたかどうか確認
# find / -name tcpserver
/usr/local/src/ucspi-tcp-0.88/tcpserver
/usr/local/bin/tcpserver
# find / -name tcprules
/usr/local/src/ucspi-tcp-0.88/tcprules
/usr/local/bin/tcprules

POP3用アクセスデータベースを定義
# ee /etc/tcp.pop3

/etc/tcp.pop3
---------------------
:allow
---------------------
POPは別に制限する必要がないので全てのホストを許可します。


SMTP用アクセスデータベースを定義
# ee /etc/tcp.smtp

/etc/tcp.smtp
---------------------
:allow
---------------------
これは非常に危険な設定な気がしますが…。
ここでは接続を許可するだけでリレー許可では無いようです。

cdb形式に変換

# /usr/local/bin/tcprules /etc/tcp.pop3.cdb /etc/tcp.pop3.tmp < /etc/tcp.pop3
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

POP3の起動
# /usr/local/bin/tcpserver -v -x \
/etc/tcp.pop3.cdb -R -H 0 pop3 \
/var/qmail/bin/qmail-popup \
test.net \
/bin/checkpassword /var/qmail/bin/qmail-pop3d \
Maildir 2>&1 &

長いコマンドです。いっそ自動起動も含めてシェルにしたほうがいいですね。
因みにpop3の手前は0(ゼロ)です。
これは起動するサーバーホストを特定しない場合に記述します。


SMTPの起動

まずはqmailのuidとgidを調べる。
# id qmaild
uid=82(qmaild) gid=81(nofiles) groups=81(nofiles)

tcpserverコマンドで起動
# /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 &


接続試験

ポートが利用できるかどうかを確認
# telnet 127.0.0.1 110 (POP3の場合)
# telnet 127.0.0.1 25 (SMTPの場合)

 POPとSMTPについてはinetから起動する方法とtcpserverで起動する方法があるが、今回はinetを使用していないためtcpserverで実装してみることにしました。

 まずcheckpasswordが存在するか確認。

# which checkpassword
checkpassword: Command not found.

無いので導入します。

こちらで入手
http://cr.yp.to/checkpwd.html

# wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
# tar zxf checkpassword-0.90.tar.gz
# cd checkpassword-0.90
# make
# make setup check

インストールされたか確認
# find / -name checkpassword
/usr/local/src/checkpassword-0.90/checkpassword
/bin/checkpassword

次回はtcpserverをインストールします。

 面倒だったのでずっと放置気味でしたが、一応MySQLのrootにもパスワードを設定。PostgreSQLはインストール時に設定したので特に問題なし。

今回使用した方法はSETコマンド

SET PASSWORD FOR root@"localhost"=PASSWORD('****');

****は伏字。これならリロード不要です。(5.0で確認)

パスワードを設定した以降は-pオプションをつけないと怒られます。

# /usr/local/mysql/bin/mysql -u root mysql -p

それとSHOW FIELDS FROM より楽な DESCRIBE というコマンドを知った。
単語的に直ぐ忘れそうだなぁ…。

mrtgで苦戦

| | コメント(0)

 トラフィックは直ぐに出るのだがその他のCPU/メモリー/ディスク空き容量が全然ダメ。こんなに思うようにいかず苦戦しているのはsendmailの次くらいかも。しかもsnmpの起動スクリプトを書き損じていて終了できなかったり。

 そろそろレプリケーションを考慮しなければならないので事前にバイナリログを書き出すように設定変更します。そもそもmy.cnfを使用していなかったので今日はその設定

コンフィグをコピー
# cp /usr/local/mysql/share/mysql/my-small.cnf /etc/my.cnf

開いて下記のコメントを外す
#log-bin=mysql-bin

再起動(FreeBSD)
# /usr/local/etc/rc.d/mysqld.sh restart

mrtgの設定

| | コメント(0) | トラックバック(0)

 やっと運用開始したSNMPだけどいくらmrtgで確認しても全く記録なし。これはmrtgの設定でこけているのでは?と思ったらどうもcfgmakerで失敗しているようでした。
 下記のサイトを参考に再作成したら成功。初めてのサービスはいつもいい加減に設定してコケて再学習。パッケージに頼るよりこうやって経験積む方が為になりそう。

snmp
http://www.iin.gr.jp/~taka/server/ucd-snmpd.html
mrtg
http://www.iin.gr.jp/~taka/server/mrtg.html

この前入れたmrtgを確認するためNET-SNMPをインストール。
※本来サービスが先に入ってるべきで順番が逆になってしまいました。

入手場所 NET-SNMP
http://www.net-snmp.org/

# tar zxf net-snmp-5.2.3.tar.gz
# cd net-snmp-5.2.3
# ./configure
# make

ここでいくつか質問されましたがデフォルトで結構なので全部Enterでパス

# make install

設定ファイルをコピー
# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf

設定ファイルを編集
# ee /usr/local/share/snmp/snmpd.conf
---------------------------------------------
# sec.name source community
com2sec local localhost test
com2sec mynetwork 192.168.10.0/24 lan
---------------------------------------------

サーバーの起動
# /usr/local/sbin/snmpd

自動起動設定(BSD用とか分からなかったので自作)

# ee /usr/local/etc/rc.d/snmpd.sh
--------

mtrgを使ってサーバー負荷を監視しようということでインストールしてみました。その際の設定メモ。

イメージはこんな感じ

# tar zxf mrtg-2.14.4.tar.gz
# cd mrtg-2.14.4
# ./configure --prefix=/usr/local/mrtg-2 \
--with-gd-inc=/usr/local/include \
--with-gd-lib=/usr/local/lib
# make
# make install

設定
/usr/local/mrtg-2/bin/cfgmaker

cfgmaker --global 'WorkDir: /usr/local/apache/htdocs/mrtg' \
--global 'Options[_]: bits,growright' \
--output /usr/local/apache/htdocs/mrtg/cfg/mrtg.cfg \
postmaster@test.net

WARNING: "Title[test]" not specified
WARNING: "MaxBytes[test]" not specified

cd /usr/local/mrtg-2/bin/
./cfgmaker --global \
'WorkDir: /usr/local/apache/htdocs/mrtg' \
--global 'Options[_]: bits,growright' \
--global 'Target[test]: 2:public@test.net' \
--global 'Title[test]: test: fe11' \
--global 'MaxBytes[test]: 25000' \
--output /usr/local/apache/htdocs/mrtg/cfg/mrtg.cfg \
postmaster@test.net


起動
/usr/local/mrtg-2/bin/mrtg /usr/local/apache/htdocs/mrtg/cfg/mrtg.cfg


crontabに登録
crontab -eでやっているなら
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/apache/htdocs/mrtg/cfg/mrtg.cfg --logging /var/log/mrtg.log

でも、SNMPサーバーが入って無かった。イミネェ… orz...

このアーカイブについて

このページには、2006年8月以降に書かれたブログ記事のうちServerカテゴリに属しているものが含まれています。

前のアーカイブはServer: 2006年7月です。

次のアーカイブはServer: 2006年10月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.1