qmail のエラー対応
qmail で特定のユーザーのみメール機能を使おうと思ってメールボックスを設定したところ以下のエラーが出ました。
Unable_to_open_.qmail:_access_denied._(#4.3.0)
原因は root でメールボックスを作成したことらしく、メールボックスを作りたいユーザ権限で、
$ /var/qmail/bin/maildirmake ~/Maildir
で正常に使えるようになりました。
qmail で特定のユーザーのみメール機能を使おうと思ってメールボックスを設定したところ以下のエラーが出ました。
Unable_to_open_.qmail:_access_denied._(#4.3.0)
原因は root でメールボックスを作成したことらしく、メールボックスを作りたいユーザ権限で、
$ /var/qmail/bin/maildirmake ~/Maildir
で正常に使えるようになりました。
ProFTPDでタイムアウトの設定を行っている場合以下のようなメッセージがログに記録されるようになります。タイムアウトのログ自体は見ても仕方がないのでLogWatchの通知メールから削除したときの覚書。
FTP session idle timeout, disconnected.
# vi /etc/log.d/conf/services/proftpd-messages.conf
# Which logfile group...
LogFile = messages
*OnlyService = proftpd
*RemoveHeaders
*Remove = "FTP no transfer timeout, disconnected" << 追加
# Set this to 1 if you want to ignore unmatched FTP messages...
転送ファイルサイズなどのログも削除したい場合は先ほど設定した行の下に追加してください。
*Remove = "FTP no transfer timeout, disconnected"
*Remove = "MaxStoreFileSize"
下記コマンドを入力するとlogwatchの実行結果をターミナルに出力します
# /etc/log.d/scripts/logwatch.pl --print
今後は上記のコマンドを出力された結果がメールで通知されるようになります。
qmail を使って送受信したにもかかわらず、キューからメールが消えない状態になってしまいました。とりあえず、qmail のキューについて調べた覚書。
デフォルトは、604800 秒らしいので、短めに設定
# vi /var/qmail/control/queuelifetime
300
現在のサービスの状態を表示
# service --status-all
rdisc is stopped
rpc.idmapd is stopped
saslauthd is stopped
sendmail is stopped
smartd is stopped
snmpd (pid 5942) is running...
snmptrapd is stopped
カレントディレクトリにある一番大きいファイルを見つける方法
# du -S | sort -n
8976 ./test/public_html/img/3
9244 ./test/phpmyadmin/lang
12964 ./test/public_html/img/4
16244 ./test/public_html/img/2
17044 ./test/public_html/img/13
31272 ./test/public_html/img/1
カレントディレクトリのファイル数を表示
# ls | wc -l
AWKで特定の行だけを処理する
ユーザースペースを提供しているようなサーバーではどのユーザーがどの程度使用しているのか気になるところです。
# du -b -s /home/* |sort -nr
1053724 /home/user01
925928 /home/user02
722748 /home/user03
429456 /home/user04
309808 /home/user05
でデータ量の多いユーザーごと(byte単位)に表示させることができます。
# du -b -s /home/* |sort -nr > user_df.txt
などで出力することで、他のシステムからでも簡単に情報を使えるのではないでしょうか?
ネットワークカードを2枚さして外部に接続しようとpingを打ったときに発生したエラー。
# ping www.yahoo.co.jp
PING www.yahoo.co.jp (124.83.139.191) 56(84) bytes of data.
From 192.168.0.102 icmp_seq=2 Destination Host Unreachable
From 192.168.0.102 icmp_seq=3 Destination Host Unreachable
From 192.168.0.102 icmp_seq=4 Destination Host Unreachable
ゲートウェイをローカル、グローバルのインターフェースに割り当てたことにより、外を見に行くはずが中を見に行くといった状態になっている事が原因のようです。
ローカルのゲートウェイの記述を削除して、ネットワークを再起動させると問題なく外部と通信できるようになりました。
Dell 純正Raidを外し、定評のある3ware 9650SEを設定してみました。
その設定手順の覚書。
3ware 9650SE の上側のコネクタがslot0(master)になります。
起動ディスクの作成
フロッピーを選択し、Sを押して導入します。
正常に組み込めたらエンターを押してセットアップを続けます。
ドライバを適用させないとOSからハードディスクを認識できません。
WindowsXPの問題でServicePack?(SP)を適用済みOSディスクを使用していれば起きないらしいです。(未確認)

※ディストリビューションごとにドライバは違います。
http://www.3ware.com/kb/article.aspx?id=14546
上記サイトよりディストリビューションにあったドライバをダウンロードし、フロッピーにコピーしてください。
今回はこのドライバを使いました。
http://www.3ware.com/KB/article.aspx?id=15145

インストール時にドライバを組み込むのでセットアップ画面で
linux dd
を入力してエンターを押します。
ディスクをセットしドライバを設定してください。
あとは通常通りのインストールです。
Linuxコマンドでファイルとディレクトリをコピーする方法
ファイルのコピー方法
cp コピー元 コピー先
cp sample_A.txt sample_B.txt
フォルダのコピー方法
cp -r コピー元 コピー先
cp -r sample_A sample_B
オプション機能
PC・サーバーを購入した際に、初期不良があるか確認します。サーバーの場合は故障が発生すると、非常に困るので、最初に十分にチェックをしておきましょう。不具合が見つかった部位に関しては交換することをお勧めします。

※フロッピー内にどのようなファイルが作成されているか確認しようとするとフォーマットされていませんというダイアログが表示されます。
フロッピーをセットしブートさせると自動的にメモリチェックが実行されます。
メモリチェックはとめない限りひたすら実行されつづけます。
終了させる場合は[Esc]を押してください。
上記サイトよりDrive Fitness Testをダウンロード
使い方に関しては参考サイトに詳しく書かれていたので、参考サイトを参照してください。
なぜか朝の4時になるとMRTGのグラフが急上昇してしまう・・・![]()
原因を調査した結果、
cronの/etc/cron.daily/slocate.cronが原因のようです。![]()
# vi /etc/updatedb.conf
DAILY_UPDATE=yes
↓
DAILY_UPDATE=no
で実行停止にする。
slocate.cronについては不良セクタなどがあるとサーバーを停止してしまう危険もあるのでfindコマンドをつかわないのであれば停止しても問題ないと思う。
サーバーのファイルをバックアップする方法
rootアカウントでsshにログインできるように設定を変更
# vi /etc/sshd/sshd_config
PermitRootLogin yes
※ yes でなく forced-commands-only でも可
設定の反映
# service sshd restart
※iptablesを起動している場合はポートも空けておきましょう。
公開鍵をおくディレクトリの設定
# mkdir /root/.ssh/
# chmod 700 /root/.ssh/
バックアップサーバーからバックアップ元サーバーへ、sshにパスフレーズなしで、ログインできるようにする
# ssh-keygen -t rsa
すべてエンターでOK
公開鍵をバックアップ元サーバーへコピーする
# scp /root/.ssh/id_rsa.pub メイン側のホスト名:/root/.ssh/
パスワードの入力が必要
# mv /root/.ssh/id_rsa.pub /root/.ssh/authoried_keys
# chmod 600 authoried_keys
# ssh バックアップ元サーバーIP
上記コマンドでパスワードを聞かれなければ設定は完了です。
バックアップ元サーバーの/homeディレクトリをすべてバックアップサーバーの/backupディレクトリへコピーする
# rsync -avz -e ssh バックアップ元サーバーIP:/home /backup
# rsync -avz -e ssh --delete バックアップ元サーバーIP:/home /backup
通信が途中で途切れる場合は以下のオプションで実行してみる
# rsync -av -e ssh --delete --bwlimit=8192 --timeout=600 バックアップ元サーバーIP:/home /backup
SSHを使ってアクセスを行ったところ以下のメッセージが表示されます。
# ssh 接続ホスト
タイムアウトになるのでログの確認
# cat /var/log/secure
error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
意味はそのままですが、使用するポートが既に使用されていますということ。
今までに見たことがないエラーでした・・・
ではそのポートがどうなっているのか調べてみました。
# fuser -n tcp 22
22/tcp: 8234
# ps -ef | grep 8234
root 8234 1 0 00:26 ? 00:00:00 /usr/sbin/sshd -o PermitRootLogin=no -o Protocol=2,1
起動時に PermitRootLogin=no が指定されているために ssh 接続ホストでは接続できないということでした。
iptablesでログに記録する設定にすると、コンソール画面(直接サーバーに繋いだディスプレイ画面)にも表示されるようになってしまいます。コンソールに表示させる必要はないので、非表示にします。
# vi /etc/sysconfig/syslog
KLOGD_OPTIONS="-x"
↓
KLOGD_OPTIONS="-x -c 4"
syslog 再起動
# service syslog restart
以上でコンソールにログが表示されなくなります。
設定時に発生したエラー ライブラリーがないよといわれたので
以下のエラーが発生下場合の対応
# /usr/local/proftpd/sbin/proftpd -l
# ./proftpd: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory
# vi /etc/ld.so.conf
追加
/usr/local/mysql/lib/mysql
設定反映
# ldconfig
再度実行
# /usr/local/proftpd/sbin/proftpd -l
Compiled-in modules:
mod_core.c
mod_xfer.c
mod_auth_unix.c
mod_auth_file.c
mod_auth.c
mod_ls.c
mod_log.c
mod_site.c
mod_sql.c
mod_sql_mysql.c
mod_quotatab.c
mod_quotatab_sql.c
mod_cap.c
表示されました
日曜になるとLogWatchと共に以下のエラーメールが届く場合の対応
Cron <root@example.com> run-parts /etc/cron.daily
/etc/cron.daily/logrotate:
error: error running postrotate script
error: error running postrotate script
error: error running postrotate script
原因を調べたところproftpdのログのローテンションエラーだったため、以下のように修正しました。
# vi /etc/logrotate.d/proftpd
/var/log/xferlog {
compress
missingok
postrotate
test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
endscript
}
/var/log/proftpd/*.log {
compress
missingok
postrotate
test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
endscript
}
変更後 不要な部分をコメントアウト
/var/log/xferlog {
compress
#missingok
#postrotate
#test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
#endscript
}
/var/log/proftpd/*.log {
compress
#missingok
#postrotate
#test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
#endscript
}
第一弾 Mixi はてなクラスのシステムを動かすにあたって、どうやって環境を構築するかをテーマに今回は MySQL DB関連について調査した内容をまとめてみました。
自宅サーバーなど動的なIPでサーバーを公開する場合、DiCEを使ってDNSの変更を自動で設定する必要があります。
ただし、環境によってはIP変更時に変更後のグローバルIPが正常に取得できないことがあるようです。※一般的には自動検出で問題ないはずです。
# ./diced
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad
:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
この段階でIPが検出できなければ、外部のスクリプトから検出を選択して設定するようにします。
VALUE DOMAINのIPアドレス検出CGIを使用
http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip
:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
外部のスクリプトから検出を選択
スクリプトのURLを入力してください
<現在:>
(N)変更しない (P)戻る
>http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip
上記設定で外部のスクリプトを指定してIPの検出テストでIPが検出されるようになります。
MRTGを設定していたときにエラーが出たので、原因と対応策を覚書。
# cfgmaker --ifref=descr --ifdesc=descr public@192.168.0.10 > /etc/mrtg/mrtg.cfg
SNMP Error:
no response received
SNMPv1_Session (remote host: "192.168.0.10" [192.168.0.10].161)
community: "public"
request ID: -2038233528
PDU bufsize: 8000 bytes
timeout: 2s
retries: 5
backoff: 1)
at /usr/bin/../lib/mrtg2/SNMP_util.pm line 627
SNMPWALK Problem for 1.3.6.1.2.1.1 on public@192.168.0.10::::::v4only
at /usr/bin/cfgmaker line 918
WARNING: Skipping public@192.168.0.10: as no info could be retrieved
snmpd の ネットワーク設定がうまくできていない場合は上記のようなエラーになります。
設定の変更
# vi /etc/snmp/snmpd.conf
com2sec mynetwork 192.168.0.0/24 public
※IPアドレスではなくネットワークアドレスを設定します。
設定の反映
# service snmpd restart
# mrtg /etc/mrtg/mrtg.cfg
ERROR: Line 8 ( WorkDir: /home/aaa/public_html/mrtg) in CFG file (/etc/mrtg/mrtg.cfg) does not make sense
mrtgの設定ファイル編集
#vi /etc/mrtg/mrtg.cfg
WorkDirの先頭の半角空白を削除
# for UNIX
WorkDir: /home/aaa/public_html/mrtg
↓
# for UNIX
WorkDir: /home/aaa/public_html/mrtg
起動
# mrtg /etc/mrtg/mrtg.cfg
ディレクトリに問題がなければ正常に稼動しました。
ユーザーディレクトリの容量制限を行う場合の設定。以下の設定では50M以上は書き込めないようにしています。
# rpm -q quota
インストールされていない場合
# yum -y install quota
# vi /etc/fstab
quotaをかけたいディレクトリの4番めの項目に ",usrquota"を追加
/dev/hdb1 /home ext3 defaults,usrquota 1 2
設定を反映させるためにファイルシステムを再マウント
# mount -o remount /home
設定が反映されていることを確認
# mount
/dev/hda1 on /home type ext3 (rw,usrquota)
usrquotaが表示されれば設定が反映されている
※設定が反映されてquotaを使える状態になっているだけで、有効にはなっていません。
ディスクの使用量記録ファイルを作成
# quotacheck -a
quotaを有効にする
# quotaon -auv ※無効にする場合は quotaoff
# edquota user01
Disk quotas for user user01 (uid 5xx):
blocks soft hard inodes soft hard
40 50000 50000 10 0 0
soft hardの単位はKbyteです。
softとhardの値を同じにした場合、指定した容量で即書き込み禁止となります。
user01のquotaの設定をuser02にコピーすることが出来ます。
# edquota -p user01 user02
FTP通信ポートの設定、21番以外にしたい場合、inetd設定のためにポート定義名を/etc/servicesに追加します。
例としてftpAAAというサービス名で8021番ポートを割り当てます。
# vi /etc/services
ftpAAA 8021/tcp
ftpAAA 8021/udp
# vi /etc/proftpd.conf
Port 21
↓
Port 8021
# vi /etc/xinetd.d/xproftpd
service ftp
↓
service ftpAAA
# /etc/rc.d/init.d/xinetd restart
これで8021番ポートからProFTPDにアクセスできます。
SELinuxが有効になっている場合、ユーザーのパスワードを参照することができずログインすることができません。
SELinux全てを無効にするのではなくFTPのみSELinuxを無効にしてProFTPDを設定してみます。
SELinuxについての参考サイト
xinetd がインストールされていない場合のみ実行してください。
xinetd参考サイト
xinetdインストール
# yum -y install xinetd
xinetd起動
# /etc/rc.d/init.d/xinetd start
xinetd自動起動設定
# chkconfig xinetd on
# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh http://ftp.belnet.be/packages/dries.ulyssis.org/redhat/el4/en/i386/RPMS.dries/rpmforge-release-0.2-2.2.el4.rf.i386.rpm
# sed -i 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo
# yum -y --enablerepo=rpmforge install proftpd
# vi /etc/proftpd.conf
standaloneモードからinetdモードに変更
ServerType standalone
↓
ServerType inetd
ルートディレクトリの設定
DefaultRoot ~ !adm
↓
DefaultRoot ~/public_html !wheel
最終行に追加
ExtendedLog /var/log/proftpd/access.log WRITE,READ default
ExtendedLog /var/log/proftpd/auth.log AUTH auth
TimesGMT off
PassivePorts 10000 10030
※PASVモード用ポートとして1024以上の任意のポートを指定
# vi /etc/xinetd.d/xproftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.proftpd
log_on_success += HOST PID
log_on_failure += HOST
nice = 10
env = TZ=JST-9
}
以下のコマンドを実行
# setsebool -P ftp_home_dir 1
# /etc/rc.d/init.d/xinetd restart
# chkconfig xinetd on
# chkconfig xproftpd on
FTPクライアントから接続してみる。正常に接続できれば終了です。
以前エラーをはいていたHDDのその後です。
end_request: I/O error, dev hda, sector xxxxxxx
というエラーをひたすらはき続けています。
ついに終わってしまったようで。お疲れ様でした。smartで事前に監視していたため、必要な情報はすべてバックアップ済みでとりあえずは問題はありません。
自宅でサーバーを構築している人でプロバイダーが配布してる動的なアドレスをDDNSを使って通信していが、固定IPで運用してみたいという人のために、フレッツ・光プレミアムでインターリンクの固定IPを設定した時の手順を紹介しておきます。
インターリンクを使おうと思った理由です。
フレッツ・光プレミアムのサービスはNTTよりCTUという装置が設備されます。CTUに固定IPアドレスのサービスを開始する際に発行されるPPPoEを設定する事で利用する事ができます。
CTU管理画面にログインし
「詳細設定」 → 「接続先詳細設定」の編集ボタンをクリック
接続情報を入力してください。
このときインターリンクのセッションの優先順位を1にします。
※優先順位を1にしないといままで接続していたプロバイダーのアドレスになりました。
修正内容を反映されるために、CTUを再起動します。これで固定IPで運用できるようになります。ウェブサーバーなどを公開する場合は、「静的アドレス変換設定(ポート指定)」の項目で80番ポートへのアクセスをサーバーのローカルアドレスを見に行くように設定してあげましょう。
逆引きの設定は行わなくても固定IPでサーバー運用することができますが、以下の理由で設定できたほうが便利がよいです。
設定は非常に簡単で、インターリンクにログインして、設定したいIPアドレスの逆引きをウェブ上から設定することが出来ます。
hostname の設定って最初設定した後どこで変えるんだっけ?ということが多々あったので、今後のためにもまとめておきます。
現在のホスト名の確認
# hostname
コマンドでホスト名変更
# hostname exsample.com(ホスト名)
変更後のホスト名の確認
# hostname
これだけのことなのに、よく忘れてしまいます・・・。
システムを触っていると何かと良く使うコマンド&関数。全てを覚えているわけではないので、リファレンスブックを検索するのもありですが、今はウェブ上で掲載しているサイトも多いです。良く使うであろうコマンド&関数関連のサイトの紹介。
smartd からHDDがやばいですってエラーが出るようになりました![]()
HDDも所詮消耗品 近々買い換えてあげようかなと思います。
Device: /dev/hda, 2 Currently unreadable (pending) sectors
5年間がんばってくれたHDDに感謝です。そして通知してくれたsmart最高![]()
Centosのインストール時にIPv6サポートを有効にするのチェックを外してIPv6を停止したつもりでいたのですが、ifconfigで確認したところ
inet6 addr: aaaa::bbbb:cccc:dddd:eeee/64
IPv6のリンクローカルアドレスが表示されてるんですよね・・・。
これってIPv6が停止されていないのでは??
# vi /etc/modprobe.conf
alias net-pf-10 off ← 追加
# vi /etc/sysconfig/network
NETWORKING_IPV6=no ← yes から no に変更
でネットワークを再起動すれば反映されると思っていたのですが、
# service network restart
では反映されませんでした。OSレベルで再起動を行ってifconfig にてIPv6が無効になっていることを確認してください。
# init 6
IPv6が無効になったらip6tablesも不要なので無効にしましょう。
# service ip6tables stop
# chkconfig ip6tables off
Raid を構成する場合は、同じハードディスク(同一の型番)をRaid Adapterに接続してください。Raidの再構築の場合も同じです。
※BIOSのバージョンによって設定手順が多少ことなります。
Raid Adapter搭載のサーバー起動時に
Press Ctrl-C to run SAS Configuretion Utility...
と表示されたら Ctrl + C でBIOS画面を起動させる
SAS BIOS設定ユーティリティが開くと、まず [Adapter List] 画面が表示されます。
Adapter list
Adapter PCI PCI PCI FW Revision Status
Bus Dev Fnc
SAS1068 03 01 00 1.15.00.00-IR Enabled
構成に使うHDDがすべて新品の状態のもので新規にRAID1を構成するときの手順
Select New Array Type -- SAS1068
View Existing Array View the existing configuration.
Create IM Volume Create Integrated Mirror Array of 2
disks plus an optional hot spare. Data
on the primary disk may be migrated.
Bay Device Identifier RAID Hot Drive Pred Size
Num Disk Spr Status Fail (MB)
1 HDD Yes No Primary No 12345
2 HDD Yes No Secondary No 12345
ディスク容量にもよりますが、構成完了まで約1時間かかります。
RAID Properties 画面で
Status Optimal
となっていれば正常に同期が取れている状態です。
SSIを有効にしてみる ( 05.20 )
qmail のエラー対応 ( 05.19 )
mysqlhotcopy でのエラー対応 ( 05.11 )
htaccessでphp_valueの設定をするとエラーになったときの対応 ( 05.02 )
ホームページのデバックを行わないようにするには ( 05.02 )
LogWatchメールのProFTPD TimeOut Logを通知しないようにする ( 05.01 )
Zend Frameworkをインストール PHP ( 03.24 )
OSの再インストールに伴うNortonの再インストール方法 ( 03.23 )
クリックボート管理ソフト CLCL ( 03.19 )
日付の整合性チェック checkdate PHP ( 03.19 )
APC製 UPS ( 4 )
CSS ・ HTML ・ Javascript ( 3 )
ソフト・ツール ( 18 )
PHP関連 ( 22 )
面白動画(YouTube) ( 1 )
MySQL関連 ( 12 )
Apacheについて ( 19 )
サーバー設定 ( 29 )
日々の出来事 ( 24 )